12 Commits 0a3b3c3157 ... 1a1e525f26

Auteur SHA1 Message Date
  mio 1a1e525f26 Add GNU Guix package definition for development il y a 3 mois
  mio af15cc63ca Remove fetch_dependencies script il y a 3 mois
  mio 52145a1c56 Support for D 2076. il y a 3 mois
  mio 895ae76293 Convert Ruby 'configure' to Autotools il y a 3 mois
  mio 5a72eb8b2e Remove magickd from dub.selections.json il y a 3 mois
  mio 71f0fb797d Remove man pages when running make uninstall il y a 3 mois
  mio 563e8f2d3c v2024.07 il y a 4 mois
  mio 016aa7957f Simplify the fetch_dependencies script il y a 4 mois
  mio 3656da0043 Improve message no content to download (`artist`) il y a 4 mois
  mio 08971821f8 Fix artist novel offset not working il y a 4 mois
  mio b96af10e72 Update CHANGELOG il y a 4 mois
  mio 86a5a7ff17 Fix GIF generation on POSIX il y a 4 mois
10 fichiers modifiés avec 1296 ajouts et 111 suppressions
  1. 17 1
      .gitignore
  2. 7 0
      AUTHORS
  3. 868 0
      ChangeLog
  4. 368 0
      INSTALL
  5. 2 0
      Makefile.am
  6. 0 102
      Makefile.in
  7. 13 0
      CHANGELOG.md
  8. 20 7
      README.md
  9. 1 1
      VERSION
  10. 0 0
      bootstrap

+ 17 - 1
.gitignore

@@ -21,5 +21,21 @@ docs/*
 source/res/VERSION
 libgraphicsmagick_c.a
 source/.DS_Store
-Makefile
 pixiv_down-missing.txt
+
+# Generate files from build scripts
+Makefile
+Makefile.in
+configure
+aclocal.m4
+autom4te.cache
+config.log
+config.status
+.deps/
+.dirstamp
+
+# Distributions
+pixiv_down-*
+
+# Executable
+source/pixiv_down

+ 7 - 0
AUTHORS

@@ -0,0 +1,7 @@
+Current Maintainer(s):
+
+* mio <stigma@disroot.org>
+
+Creator:
+
+* mio <stigma@disroot.org>

+ 868 - 0
ChangeLog

@@ -0,0 +1,868 @@
+2024-07-27  mio  <stigma@disroot.org>
+
+	Add GNU Guix package definition for development
+
+	Remove fetch_dependencies script
+	It hasn't done anything for a couple of months (0d9ac1895f).
+
+	Support for D 2076.
+	I've been playing around with Guix.  Unfortunately, the latest supported
+	version of GDC (as of writing) is 11, which only supports D 2.076.
+
+	Convert Ruby 'configure' to Autotools
+	I didn't really have anything against using Ruby, other than it meant
+	depending on another language that may or may not be installed by
+	default on different distributions.
+
+2024-07-23  mio  <stigma@disroot.org>
+
+	Remove magickd from dub.selections.json
+
+	Remove man pages when running make uninstall
+
+2024-07-21  mio  <stigma@disroot.org>
+
+	v2024.07
+
+	Simplify the fetch_dependencies script
+
+	Improve message no content to download (`artist`)
+
+	Fix artist novel offset not working
+
+2024-07-02  mio  <stigma@disroot.org>
+
+	Update CHANGELOG
+
+	Fix GIF generation on POSIX
+	Previously GIFs would play the 'second frame' first and the
+	'first frame' second because GraphicsMagick will prepend an
+	image to the list if there is no previous image in the list.
+
+2024-06-03  mio  <stigma@disroot.org>
+
+	Fix endless loop in daily command (pt. 2)
+	This was an error from 8036e5e9f6ef931f4ec75f6834731651f3f26f63.
+
+	Fixes: https://codeberg.org/supercell/pixiv_down/issues/30
+
+2024-06-02  mio  <stigma@disroot.org>
+
+	Fix endless loop in daily command
+	Fixes: https://codeberg.org/supercell/pixiv_down/issues/30
+
+2024-05-31  mio  <stigma@disroot.org>
+
+	v2024.05
+
+	Update CHANGELOG
+
+	Accept --output-directory= and --config-file=
+
+2024-05-26  mio  <stigma@disroot.org>
+
+	Remove magickd from README
+
+	Update fetch_dependencies.sh
+	It is likely this script will be removed in a future version.
+
+2024-05-26  mio  <stigma@disroot.org>
+
+	Remove dependency on magickd
+	GraphicsMagick is still used for POSIX builds, however, it is now loaded
+	via dlopen.  There are a couple for this change. Firstly, it simplifies
+	building when "dub" isn't present. Secondly, it *should* allow us to
+	support ImageMagick as well.
+
+	See: https://codeberg.org/supercell/pixiv_down/issues/29
+
+2024-05-24  mio  <stigma@disroot.org>
+
+	Fix invalid array index for help
+
+2024-05-23  mio  <stigma@disroot.org>
+
+	Fix building errors (incorrect parameters)
+
+2024-05-22  mio  <stigma@disroot.org>
+
+	Add support for CLI configuration overrides
+	Just need to add the --OPTION=ARG variants.
+
+	See: https://codeberg.org/supercell/pixiv_down/issues/26
+
+2024-05-19  mio  <stigma@disroot.org>
+
+	Miscellaneous changes (tidy up)
+
+2024-05-19  mio  <stigma@disroot.org>
+
+	Improve fallback for building in non-VCS env.
+	This prevents Make from rebuilding when nothing changed.  Only remaining
+	issue is that magickd isn't present by default.
+
+	See: https://codeberg.org/supercell/pixiv_down/issues/28
+
+2024-05-19  mio  <stigma@disroot.org>
+
+	Provide a fallback for building in non-VCS env.
+
+2024-05-18  mio  <stigma@disroot.org>
+
+	Update CHANGELOG
+
+	Allow 'compact' when invalid ID and in interactive
+
+	Fix crash in compact command when ID isn't valid.
+
+2024-05-16  mio  <stigma@disroot.org>
+
+	Fix crash when downloading an artist
+
+2024-04-22  mio  <stigma@disroot.org>
+
+	Send `lang` in pixiv requests
+	This will localize error messages from the pixiv API, which would
+	be helpful, if the error messages weren't just "Unknown error occurred".
+
+	Fix log formatting in cmds.daily
+
+	Get the current locale for error messages
+
+	Fix configure script for Ruby 3+
+
+2024-04-20  mio  <stigma@disroot.org>
+
+	v2024.04
+
+	Fix logging formatting
+
+	Remove Ugoira temp files & enable cursor on error
+
+	Copyright update
+
+	Remove empty EXAMPLES from pixiv_down.1
+
+	Remove `nt` module
+	I created these functions because I'm not a fan of how the phobos
+	implementations throw exceptions... if these should error than I
+	don't think the program needs to abort.  I'm removing these just to
+	reduce the number of files to compile and remove duplicate functionality
+	(since these functions exist in the standard library).
+
+	Update README
+
+2024-04-18  mio  <stigma@disroot.org>
+
+	Add notice about building with gamut to dub.sdl
+
+	Warn when an Ugoira is enountered with gamut
+
+2024-04-16  mio  <stigma@disroot.org>
+
+	Fix some incorrectly formatted logging calls
+
+	Add initial support for building with gamut
+	See: https://codeberg.org/supercell/pixiv_down/issues/25
+
+2024-04-13  mio  <stigma@disroot.org>
+
+	Don't fetch CSRF Token for help command
+
+	Add custom FileLogger
+	Continuing on from 79726c5a75df9ad3035bd7c55bb24059a8bc8036
+
+	Update CHANGELOG.md
+
+2024-04-13  mio  <stigma@disroot.org>
+
+	Remove -fpreview=in from GDC build
+	This has been causing segfaults.  While GraphicsMagick is the one that
+	reports the segfault...
+
+	    Magick: abort due to signal 11 (SIGSEGV) "Segmentation Fault"...
+
+	...running pixiv_down through GDB seems to reveal an issue with
+	std.regex. This doesn't happen with DMD or LDC, so the flag remains in
+	use for those compilers.
+
+2024-04-07  mio  <stigma@disroot.org>
+
+	update .editorconfig
+
+	Replace logger.d with std.experimental.logger
+	It was causing some issues with GraphicsMagick, causing the occasionaly
+	segfault.  Probably wasn't written properly.  I'll add a custom format
+	at some point, since the default isn't really nice to look at.
+
+2024-04-05  mio  <stigma@disroot.org>
+
+	Add 'bookmarked' command to README
+
+	Remove util$converToString
+
+	Compile with -preview=in
+
+	Move terminal-related functions to term.d
+	Closes: https://codeberg.org/supercell/pixiv_down/issues/22
+
+2024-04-04  mio  <stigma@disroot.org>
+
+	Add pixiv_down-bookmarked.1
+
+	Support for removing invalid novel bookmarks
+	See: https://codeberg.org/supercell/pixiv_down/issues/15
+
+2024-04-04  mio  <stigma@disroot.org>
+
+	Implement 'bookmarked --remove-invalid' option
+	To send a POST request on pixiv, you need a CSRF token which, rather
+	conveniently, pixiv provides as part of the initial HTML response for
+	(seemingly) and web page.  It then removes it after loading, so secrets
+	can stay hidden.
+
+	There is some more information that can be found in the linked ticket.
+
+	See: https://codeberg.org/supercell/pixiv_down/issues/15
+
+2024-04-03  mio  <stigma@disroot.org>
+
+	Improve 'bookmarked' command
+	A new --skip option was added since it is probably unreasonable to
+	assume people are happy to sit for however long to download 1600+ works.
+	To assist with this, the number of *processed* works are printed after
+	every page, this number includes and works which are no longer available
+	to download so the --skip option works as expected.
+
+	There was also a crash that would occur when an artwork was "masked".
+	It turns out the API returns an integer artwork ID if the work is masked
+	instead of a string, so we perform a check for that as well.
+
+2024-04-03  mio  <stigma@disroot.org>
+
+	Update .gitignore
+
+	Move pixiv_down version info to separate module
+
+2024-04-02  mio  <stigma@disroot.org>
+
+	Begin implementing 'bookmarked' command
+	See: https://codeberg.org/supercell/pixiv_down/issues/15
+
+	Add list with supported content types to man pages
+
+	Add pixiv_down-novel.1
+
+	Add pixiv_down-following.1
+
+	Write pixiv_down-daily.1
+
+	Update CHANGELOG.md
+
+2024-04-02  mio  <stigma@disroot.org>
+
+	Use std.getopt rather than custom argument parsing
+	The only place it hasn't been used is in app.d, since std.getopt doesn't
+	support "commands", so there would be no benefit.
+
+	See: https://codeberg.org/supercell/pixiv_down/issues/24
+
+2024-04-02  mio  <stigma@disroot.org>
+
+	Remove deprecation message for config base_folder
+	As with the change in configuration file name, this setting will
+	now be supported indefinitely.
+
+	See: 90e48e436d8990d0f5d9d6c7d6158799f5e94b3f
+
+2024-04-02  mio  <stigma@disroot.org>
+
+	update mlib/directories to 0.4.0
+
+2024-04-01  mio  <stigma@disroot.org>
+
+	Change the access and modification times of GIFs
+
+	Support PIXIV_DOWN_SESSID environment variable
+	Closes: https://codeberg.org/supercell/pixiv_down/issues/23
+
+2024-03-31  mio  <stigma@disroot.org>
+
+	Use real account IDs in pixiv_down-artist.1
+	They stand out a bit more than 1 2 3
+
+	Add installation of manual pages to Makefile.in
+
+	Fix reference in pixiv_down.1
+
+	Add manual page for 'pixiv_down prune'
+
+2024-03-31  mio  <stigma@disroot.org>
+
+	Change default configuration file name
+	Now called 'pixiv_down.conf'.  Reason? PIXIV_DOWN.CONF(5) fits better
+	than PIXIV_DOWN-SETTINGS.CONF(5).
+
+	The old name will be supported indefinitely.
+
+2024-03-31  mio  <stigma@disroot.org>
+
+	Begin writing manual pages
+
+2024-03-30  mio  <stigma@disroot.org>
+
+	Fix GIFs not being recreated after SIGINT [GM]
+	When calling WriteImages, GraphicsMagick will write each frame of the
+	GIF directly to the provided output filename.  In our case that was the
+	final '.gif', which meant that with the changes introduced in commit
+	f09e5e180703b67861954b587775ec579f78d749 pixiv_down wouldn't attempt to
+	recreate the GIF if it had previously been interrupted with ^C, for
+	example.
+
+	Because "fTemporayPath" ends with '.part', which isn't an image type,
+	GraphicsMagick assumes the output image is the same format as the input.
+	To prevent this, we specifically set the first frame's "magick".
+
+	Fixes: https://codeberg.org/supercell/pixiv_down/issues/21
+
+2024-03-30  mio  <stigma@disroot.org>
+
+	Fix incorrect progress reporting for Ugoira
+	See: https://codeberg.org/supercell/pixiv_down/issues/20
+
+	Makefile.in improvements
+	pixiv_down will only rebuild if there have been new commits since the
+	last build.
+
+	Check if Ugoira exists before downloading ZIP
+	Fixes: https://codeberg.org/supercell/pixiv_down/issues/18
+
+2024-03-29  mio  <stigma@disroot.org>
+
+	Update README with new build instructions
+	Mention the new configure script and clarify that macOS does not need
+	GraphicsMagick.
+
+	configure script fixes for macOS
+
+	Generate githash with Makefile.in
+
+	Replace Makefile with configure script
+	The end goal is to allow macOS to build using ./configure && make
+	without having to change anything.  (This currently works on linux)
+
+2024-03-10  mio  <stigma@disroot.org>
+
+	Fix macOS compilation
+
+	Update README
+
+	Update CHANGELOG
+
+	Add GIFWriter and ImageReader for GraphicsMagick
+
+	ugoira support for macOS
+	While it may have been possible to create ugoira using GraphicsMagick,
+	this makes use of CoreFoundation and ImageIO provided by macOS.
+
+	Add configuration for macOS
+
+	Improve POSIX support for nt.file.setTimes
+
+	Update mlib/directories to 0.3.0
+
+	Update mlib/trash.d to 0.4.0
+
+2024-03-07  mio  <stigma@disroot.org>
+
+	Log Ugoira mimetype in debug
+
+2024-02-03  mio  <stigma@disroot.org>
+
+	v2024.02
+
+2024-01-27  mio  <stigma@disroot.org>
+
+	Don't use page number in filename if single page
+	Illustrations with multiple pages and Manga will continue to use the
+	page number and be located in a sub-directory.  For illustrations with
+	a single page, his just re-creates the behaviour before
+	91005492bb34ba497de6e73e1aa5368a2b573083
+
+2024-01-26  mio  <stigma@disroot.org>
+
+	Update 'help' help with novel support
+
+	Fixes for -preview=in
+	I'm not going to force compilation with -preview=in yet. But this is in
+	preparation for when I do, or when (if ever) it becomes the default.
+
+	Allow DFLAGS if used in Makefile
+
+	Add PHPSESSID HowTo
+	Closes: https://codeberg.org/supercell/pixiv_down/issues/14
+
+	Add --sfw-only option to daily command
+	Closes: https://codeberg.org/supercell/pixiv_down/issues/12
+
+	Update CHANGELOG
+
+	Support for downloading an artist's novels
+	Closes: https://codeberg.org/supercell/pixiv_down/issues/8
+
+	Provide some documentation to nt.prelude.Optional
+
+	Implement downloading daily novels
+	See: https://codeberg.org/supercell/pixiv_down/issues/8
+
+2024-01-25  mio  <stigma@disroot.org>
+
+	Add ability to download novels
+	Currently only works via the new 'novel' command, but fetching all
+	novels from an account, and fetching the latest novels from all followed
+	accounts will be implemented soon.
+
+	See: https://codeberg.org/supercell/pixiv_down/issues/8
+
+2024-01-25  mio  <stigma@disroot.org>
+
+	Build individual object files
+
+	Implement --skip-manga and --skip-illust
+	Closes: https://codeberg.org/supercell/pixiv_down/issues/7
+
+	Create a spinner when downloading/creating Ugoira
+
+	Move runSpinner from prune.d to util.d
+
+2024-01-23  mio  <stigma@disroot.org>
+
+	Remove dependency on pixivd
+
+	Small tidy up
+
+	Move following command to separate file
+
+	Add nothrow variant of std.conv
+
+	Add pixiv.fetchUser
+	Replaces pixivd.client.Client.fetchUserAll.  With this, the only
+	remaining method to port is fetchFollowing.
+
+	Add private makeRequest
+
+	Add pixiv.fetchUserProfile
+	Replaces pixivd.client.Client.fetchUserAll
+
+	Move daily command in to separate file
+
+2024-01-23  mio  <stigma@disroot.org>
+
+	Rewrite daily command to use pixiv module
+	I have also removed the 'restrict' option, which would allow people to
+	specify whether to download content that is either R18, Safe, or Both.
+	The option never actually did anything, with the daily command always
+	downloading Both content types.  The option may come back.
+
+	See: https://codeberg.org/supercell/pixiv_down/issues/12
+	Closes: https://codeberg.org/supercell/pixiv_down/issues/13
+
+2024-01-23  mio  <stigma@disroot.org>
+
+	Use Flag rather than bool in term.d
+
+2024-01-21  mio  <stigma@disroot.org>
+
+	Build object files for graphicsmagick_c
+	This won't really speed up build times yet, but once pixivd is removed the
+	files in source/ can be compiled to object files and hopefully that will
+	speed up build times a little.
+
+2024-01-21  mio  <stigma@disroot.org>
+
+	Add support for downloading Ugoira in pixiv
+	This took a while to implement because I had recently updated
+	GraphicsMagick versions and the previous code was incorrect for creating
+	GIFs.  It took some time to figure it out (completely missing the entry
+	in the NEWS file...) All that needed to change was adding the
+	GetFirstImageInList call.
+
+	Closes: https://codeberg.org/supercell/pixiv_down/issues/10
+
+2024-01-21  mio  <stigma@disroot.org>
+
+	Fix incorrect format
+
+	Fix dynamic build linkage
+
+2024-01-20  mio  <stigma@disroot.org>
+
+	Separate pixiv API requests and downloading
+
+2024-01-20  mio  <stigma@disroot.org>
+
+	Remove ProgressMonitor and downloadIllust
+	The functionality is provided by downloadArtworkWith and
+	downloadArtworkWithPageNotifier.
+
+	Work still needs to be done on supporting Ugoira and novels.
+
+2024-01-20  mio  <stigma@disroot.org>
+
+	Improve progress reporting for some commands
+	Improved for the artist, artwork, and daily commands.
+
+2024-01-20  mio  <stigma@disroot.org>
+
+	Implement downloading for pixiv.downloadArtwork
+	All that is missing is support for ugoira and novels.
+
+	See: https://codeberg.org/supercell/pixiv_down/issues/11
+
+2024-01-18  mio  <stigma@disroot.org>
+
+	Add prune command to CHANGELOG
+
+	Remove ability to build with local archives
+	Use either make (git submodule update --init && make) or dub.
+
+2024-01-18  mio  <stigma@disroot.org>
+
+	Begin implementation of pixiv.downloadArtwork
+	The intention is to replace pixiv.downloadIllust with this new function.
+	Currently it's not complete (doesn't even download!) but there shouldn't
+	be too much more work.
+
+	Then the pixiv module needs a method of supporting Ugoira.
+
+2024-01-18  mio  <stigma@disroot.org>
+
+	Remove excessive private modifier
+
+	Move artist command to separate file
+
+	Replace phobos setTimes with nothrow version
+	This was the start of an attempt to make pixiv.setDate nothrow, however,
+	considering that Systime.fromISOExtString and dirEntries can both throw,
+	I'm not sure that will happen :(
+
+	Move artwork command to separate file
+
+	Log execution date
+
+2024-01-16  mio  <stigma@disroot.org>
+
+	Create data directory if needed in resetSessionID
+
+	check for GraphicsMagick before building
+
+2024-01-14  mio  <stigma@disroot.org>
+
+	Move downloadIllust function to new pixiv module
+	The new pixiv module will be where all pixiv-related functionality will
+	be located.
+
+	Move convertToString to util.d
+	Also mark it as nothrow
+
+2024-01-13  mio  <stigma@disroot.org>
+
+	Add prune documentation to README
+
+	Update mlib.configparser to 0.5.2
+
+	Move configparser module to mlib
+
+	Move directories module to mlib package
+
+2024-01-13  mio  <stigma@disroot.org>
+
+	Fully replace std logger with custom logger
+	Rewrite the logger module to use C functions since the D stdio seemed to
+	be locking incorrectly when calling too many write functions in quick
+	succession (messages weren't being written after the first few).
+
+	This also adds an environment variable PIXIV_DOWN_LOG_LEVEL which (at
+	startup) sets gMinLogLevel if the value is valid.
+
+2024-01-13  mio  <stigma@disroot.org>
+
+	Add prune command
+	This replaces the pixivd_tools' remove_unfollowed program.
+
+2024-01-11  mio  <stigma@disroot.org>
+
+	Remove pixiv_down.png
+	A remanent from when I was going to provide an AppImage for
+	pixiv_down.
+
+2024-01-05  mio  <stigma@disroot.org>
+
+	Add source/mlib/search_params
+
+2024-01-04  mio  <stigma@disroot.org>
+
+	Remove hard coding linux terminal
+	A leftover from having the incorrect escape codes.
+
+	2024 pt.1
+
+	Update README
+
+	Fix erroneous exit in GMagick_Dynamic builds
+	main.loadLibGM was returning the value of
+	graphicsmagick_c.config.loadGraphicsMagick
+	which returns false when the library was
+	correctly loaded, but some symbols could
+	not be found.  pixiv_down should be able
+	to run under these conditions still.
+
+	generate githash with dub
+
+	make clean
+
+	Fix colour output for tmux
+
+	Replace GNUmakefile with Makefile
+	Has been tested with both GNU Make and NetBSD Make (bmake).
+
+	Deprecate fetch_dependencies script
+	I won't remove the script, but I also won't be testing it.
+	Either use git submodules or dub.
+
+	Add ability to build using git submodules & make
+
+2023-12-10  mio  <stigma@disroot.org>
+
+	Use custom logging for 'compact' command
+
+	update pixivd
+
+2023-12-09  mio  <stigma@disroot.org>
+
+	Update CHANGELOG for 'compact' command
+
+	Implement 'compact' command
+	Replaces the pixivd_tools/pixiv_combine_users found at
+	https://osdn.net/users/nemophila/pf/pixivd_tools/wiki/FrontPage
+
+2023-11-28  mio  <stigma@disroot.org>
+
+	Fix unittest compilation
+
+	Reformat and update CHANGELOG
+
+	Log compilation information to LogFile
+
+	Make loadConfig public
+
+	have makeSafe treat more characters as invalid
+	Turns out this is really dependent on the filesystem's format
+	(e.g. ext4, exfat, ntfs, etc.).  This will assume unicode is valid, but
+	will restrict the possible characters to 'work characters', periods, and
+	hyphens.
+
+2023-10-29  mio  <stigma@disroot.org>
+
+	Move configuration to separate module
+	Slowly going around and breaking down the main file.
+
+	Add .editorconfig
+
+	Replace global 'log' with stdThreadLocalLog
+
+2023-10-26  mio  <stigma@disroot.org>
+
+	Improve display of skipping followed artists
+	Change the behaviour so that using --skip <num> won't print:
+	   'Downloading artist 1 of <total>'
+	but instead print:
+	   'Downloading artist <num + 1> of <total>'.
+
+	Generate entire 'git_version' file.
+
+	Implement command to reset PHPSESSID
+
+2023-10-25  mio  <stigma@disroot.org>
+
+	Log data directory
+	Helps locate the file when an update of PHPSESSID is required.
+
+	Need to add an option for changing this...
+
+2023-10-25  mio  <stigma@disroot.org>
+
+	Replace OSDN repository links
+	The servers haven't been reliable for a few months.
+
+2023-09-30  mio  <stigma@disroot.org>
+
+	Cleanup project imports
+
+2023-09-29  mio  <stigma@disroot.org>
+
+	Fix trailing percentage for previously downloaded
+	e.g.:
+
+	  Previously downloaded page 1/2.%).
+	  Previously downloaded page 2/2.
+
+2023-09-29  mio  <stigma@disroot.org>
+
+	Further improvements to the progress bar
+	Still can't say I'm completely happy with this (trailing newlines and
+	single-paged illustrations not changing the final message to 'Finished')
+	but it's an improvement.
+
+	I did spend a while trying to get a graphic progress bar, but couldn't
+	integrate the UI in a way that I liked (the current implementation looks
+	better IMO).
+
+	See: https://codeberg.org/supercell/pixiv_down/issues/2
+
+2023-09-27  mio  <stigma@disroot.org>
+
+	Use same indentation for options in help messages
+
+	Pad 'Already downloaded page X' values
+	Also considering changing the message to 'Already downloaded page x/y'
+
+2023-08-16  mio  <stigma@disroot.org>
+
+	fix resuming a previous download of a manga.
+	previously, if you cancelled a manga download partway, attempting to
+	resume the download would result in the "Already downloaded" message,
+	this was fixed with a commit[1] in pixivd, so we're just updating the
+	version here.
+
+	[1]: 1085361d86366542741e8ae5b845fed74c0a8aa5
+
+2023-08-13  mio  <stigma@disroot.org>
+
+	Add initial version of a progress bar
+	Not the final design, but at least it shows which page we're downloading
+	and how far through we are.
+
+	See: https://codeberg.org/supercell/pixiv_down/issues/2
+
+2023-08-07  mio  <stigma@disroot.org>
+
+	Update pixivd
+	This fixes an issue with GIF (Ugoira) not having a valid filename when
+	calling the GraphicsMagick WriteImages function.
+
+	Fixes https://codeberg.org/supercell/pixiv_down/issues/9
+
+2023-08-07  mio  <stigma@disroot.org>
+
+	Change version identifier to date+hash
+
+2023-07-23  mio  <stigma@disroot.org>
+
+	Update MagickD and PixivD versions
+
+2023-07-16  mio  <stigma@disroot.org>
+
+	Update CHANGELOG.md
+	- Reorganize some sections.
+	- Downloads both manga and illustrations by default
+	- Temporary(?) removal of `--limit` option for following command.
+
+	Fix falling back to user picture directory
+
+	Fix loading config when dir exists but not file
+
+2023-06-24  mio  <stigma@disroot.org>
+
+	Add CHANGELOG.md
+
+	Re write the 'following' command.
+	I removed the --limit option since it's use is rather... limited. It'd
+	be better served as an actual limit on the number of accounts to
+	download, rather than the number of accounts per-page.
+
+	Replace custom logger with Phobos FileLogger
+
+	Rewrite 'following' help.
+
+2023-06-23  mio  <stigma@disroot.org>
+
+	Create a new log file each run
+
+2023-06-22  mio  <stigma@disroot.org>
+
+	Improve 'artwork' command
+	The main change is the --group-errors option which will only print the
+	errors just before the command has finished executing, rather than
+	immediately after the error occurrs.
+
+	This means you don't have to go searching for any errors after
+	downloading the artworks.
+
+2023-06-22  mio  <stigma@disroot.org>
+
+	Re-work 'artist' command
+	This really addressed two issues regarding the artist command. Some of
+	the messaging could use improvement, but I haven't quite figured out how
+	I want this to work with the progressbars that will be implemented.
+
+	See Also:
+
+		Change default behaviour of 'artist' command
+		  https://codeberg.org/supercell/pixiv_down/issues/4
+
+		Allow downloading of multiple artists when using the artist cmd
+		  https://codeberg.org/supercell/pixiv_down/issues/5
+
+2023-06-20  mio  <stigma@disroot.org>
+
+	Clarify README notice
+
+	Improve the 'daily' help
+	I also took the liberty to re-format the dailyHandle function and
+	improve some of the messaging there as well.
+
+2023-06-17  mio  <stigma@disroot.org>
+
+	Update pixiv_down to use new directories API
+
+	Update directories module to v0.2.0
+	There are quite a few changes to the API which I'll need to address, but
+	the big addition is support for Windows -- making us a step closer to
+	supporting Windows in pixiv_down.
+
+	Move config reading out of main
+
+	Move loading of GraphicsMagick out of main
+
+	Improve help message for artist command
+
+	Remove `printMainHelp`
+
+2023-06-16  mio  <stigma@disroot.org>
+
+	Reformat main function
+
+	Improve 'unknown command' message
+
+2023-06-15  mio  <stigma@disroot.org>
+
+	Replace ': ' with 'v' for version info
+
+	Futher improve default help message
+
+	Provide better default help message
+	This will be displayed when there are no arguments provided or
+	when -h/--help/help is provided.
+
+2023-06-14  mio  <stigma@disroot.org>
+
+	Better handle invalid dates for --daily
+
+2023-04-25  mio  <stigma@disroot.org>
+
+	Change 'daily' behaviour when begin and end equal
+
+2023-01-28  mio  <stigma@disroot.org>
+
+	Initial commit

+ 368 - 0
INSTALL

@@ -0,0 +1,368 @@
+Installation Instructions
+*************************
+
+   Copyright (C) 1994-1996, 1999-2002, 2004-2017, 2020-2021 Free
+Software Foundation, Inc.
+
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
+
+Basic Installation
+==================
+
+   Briefly, the shell command './configure && make && make install'
+should configure, build, and install this package.  The following
+more-detailed instructions are generic; see the 'README' file for
+instructions specific to this package.  Some packages provide this
+'INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
+
+   The 'configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a 'Makefile' in each directory of the package.
+It may also create one or more '.h' files containing system-dependent
+definitions.  Finally, it creates a shell script 'config.status' that
+you can run in the future to recreate the current configuration, and a
+file 'config.log' containing compiler output (useful mainly for
+debugging 'configure').
+
+   It can also use an optional file (typically called 'config.cache' and
+enabled with '--cache-file=config.cache' or simply '-C') that saves the
+results of its tests to speed up reconfiguring.  Caching is disabled by
+default to prevent problems with accidental use of stale cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how 'configure' could check whether to do them, and mail
+diffs or instructions to the address given in the 'README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point 'config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file 'configure.ac' (or 'configure.in') is used to create
+'configure' by a program called 'autoconf'.  You need 'configure.ac' if
+you want to change it or regenerate 'configure' using a newer version of
+'autoconf'.
+
+   The simplest way to compile this package is:
+
+  1. 'cd' to the directory containing the package's source code and type
+     './configure' to configure the package for your system.
+
+     Running 'configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type 'make' to compile the package.
+
+  3. Optionally, type 'make check' to run any self-tests that come with
+     the package, generally using the just-built uninstalled binaries.
+
+  4. Type 'make install' to install the programs and any data files and
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the 'make install' phase executed with root
+     privileges.
+
+  5. Optionally, type 'make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior 'make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
+     source code directory by typing 'make clean'.  To also remove the
+     files that 'configure' created (so you can compile the package for
+     a different kind of computer), type 'make distclean'.  There is
+     also a 'make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  7. Often, you can also type 'make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide 'make
+     distcheck', which can by used by developers to test that all other
+     targets like 'make install' and 'make uninstall' work correctly.
+     This target is generally not run by end users.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the 'configure' script does not know about.  Run './configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give 'configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here is
+an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU 'make'.  'cd' to the
+directory where you want the object files and executables to go and run
+the 'configure' script.  'configure' automatically checks for the source
+code in the directory that 'configure' is in and in '..'.  This is known
+as a "VPATH" build.
+
+   With a non-GNU 'make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use 'make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple '-arch' options to the
+compiler but only a single '-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the 'lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, 'make install' installs the package's commands under
+'/usr/local/bin', include files under '/usr/local/include', etc.  You
+can specify an installation prefix other than '/usr/local' by giving
+'configure' the option '--prefix=PREFIX', where PREFIX must be an
+absolute file name.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like '--bindir=DIR' to specify different values for particular
+kinds of files.  Run 'configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the default
+for these options is expressed in terms of '${prefix}', so that
+specifying just '--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to 'configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+'make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, 'make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+'${prefix}'.  Any directories that were specified during 'configure',
+but not in terms of '${prefix}', must each be overridden at install time
+for the entire installation to be relocated.  The approach of makefile
+variable overrides for each directory variable is required by the GNU
+Coding Standards, and ideally causes no recompilation.  However, some
+platforms have known limitations with the semantics of shared libraries
+that end up requiring recompilation when using this method, particularly
+noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the 'DESTDIR' variable.  For
+example, 'make install DESTDIR=/alternate/directory' will prepend
+'/alternate/directory' before all installation names.  The approach of
+'DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of '${prefix}'
+at 'configure' time.
+
+Optional Features
+=================
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving 'configure' the
+option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
+
+   Some packages pay attention to '--enable-FEATURE' options to
+'configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to '--with-PACKAGE' options, where PACKAGE
+is something like 'gnu-as' or 'x' (for the X Window System).  The
+'README' should mention any '--enable-' and '--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, 'configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the 'configure' options '--x-includes=DIR' and
+'--x-libraries=DIR' to specify their locations.
+
+   Some packages offer the ability to configure how verbose the
+execution of 'make' will be.  For these packages, running './configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with 'make V=1'; while running './configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with 'make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU CC
+is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   HP-UX 'make' updates targets which have the same timestamps as their
+prerequisites, which makes it generally unusable when shipped generated
+files such as 'configure' are involved.  Use GNU 'make' instead.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its '<wchar.h>' header file.  The option '-nodtk' can be used as a
+workaround.  If GNU CC is not installed, it is therefore recommended to
+try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put '/usr/ucb' early in your 'PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in '/usr/bin'.  So, if you need '/usr/ucb'
+in your 'PATH', put it _after_ '/usr/bin'.
+
+   On Haiku, software installed for all users goes in '/boot/common',
+not '/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+   There may be some features 'configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, 'configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+'--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as 'sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file 'config.sub' for the possible values of each field.  If
+'config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option '--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with '--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for 'configure' scripts to share,
+you can create a site shell script called 'config.site' that gives
+default values for variables like 'CC', 'cache_file', and 'prefix'.
+'configure' looks for 'PREFIX/share/config.site' if it exists, then
+'PREFIX/etc/config.site' if it exists.  Or, you can set the
+'CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all 'configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to 'configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the 'configure' command line, using 'VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified 'gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
+Autoconf limitation.  Until the limitation is lifted, you can use this
+workaround:
+
+     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+'configure' Invocation
+======================
+
+   'configure' recognizes the following options to control how it
+operates.
+
+'--help'
+'-h'
+     Print a summary of all of the options to 'configure', and exit.
+
+'--help=short'
+'--help=recursive'
+     Print a summary of the options unique to this package's
+     'configure', and exit.  The 'short' variant lists options used only
+     in the top level, while the 'recursive' variant lists options also
+     present in any nested packages.
+
+'--version'
+'-V'
+     Print the version of Autoconf used to generate the 'configure'
+     script, and exit.
+
+'--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally 'config.cache'.  FILE defaults to '/dev/null' to
+     disable caching.
+
+'--config-cache'
+'-C'
+     Alias for '--cache-file=config.cache'.
+
+'--quiet'
+'--silent'
+'-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to '/dev/null' (any error
+     messages will still be shown).
+
+'--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     'configure' can determine that directory automatically.
+
+'--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names:: for
+     more details, including other options available for fine-tuning the
+     installation locations.
+
+'--no-create'
+'-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+'configure' also accepts some other, not widely useful, options.  Run
+'configure --help' for more details.

+ 2 - 0
Makefile.am

@@ -0,0 +1,2 @@
+SUBDIRS = docs source
+EXTRA_DIST = VERSION

+ 0 - 102
Makefile.in

@@ -1,102 +0,0 @@
-.POSIX:
-
-DC=@DC@
-DFLAGS=@DFLAGS@
-LDFLAGS=@LDFLAGS@
-LIBS=@LIBS@
-
-prefix=@prefix@
-bindir=@bindir@
-datadir=@datadir@
-mandir=@mandir@
-oflag=@oflag@
-
-INSTALL=install
-INSTALL_PROGRAM=$(INSTALL)
-INSTALL_DATA=$(INSTALL) -m644
-
-PDOWN_SOURCES=source/app.d \
-	source/configuration.d \
-	source/logger.d \
-	source/pd_version.d \
-	source/pixiv.d \
-	source/pixiv_downloader.d \
-	source/term.d \
-	source/util.d \
-	source/cmds/artist.d \
-	source/cmds/artwork.d \
-	source/cmds/bookmarked.d \
-	source/cmds/compact.d \
-	source/cmds/daily.d \
-	source/cmds/following.d \
-	source/cmds/novel.d \
-	source/cmds/package.d \
-	source/cmds/prune.d \
-	source/gif_writer/common.d \
-	source/gif_writer/osx.d \
-	source/gif_writer/package.d \
-	source/gif_writer/posix.d \
-	source/image_reader/osx.d \
-	source/image_reader/package.d \
-	source/image_reader/posix.d \
-	source/imaging/magick.d \
-	source/mlib/configparser.d \
-	source/mlib/directories.d \
-	source/mlib/search_params.d \
-	source/mlib/trash.d
-
-PDOWN_VERSION_FILE=source/res/VERSION
-
-all: make-tag pixiv_down
-
-# This allows us to only build pixiv_down if the githash has
-# changed or one of the files in PDOWN_SOURCES is modified.
-make-tag:
-	@if [ -d .git -a -x "$$(which git)" ]; then \
-		if [ -r $(PDOWN_VERSION_FILE) ]; then \
-			prevhash=$$(pr -t $(PDOWN_VERSION_FILE)) ; \
-			currhash=$$(git describe --tags) ; \
-			if [ $$prevhash != $$currhash ]; then \
-				git describe --tags > $(PDOWN_VERSION_FILE) ; \
-			fi ; \
-		fi ; \
-	fi
-
-$(PDOWN_VERSION_FILE):
-	@test -d source/res || mkdir source/res
-	@if [ -d .git -a -x "$$(which git)" ]; then \
-		git describe --tags > $(PDOWN_VERSION_FILE) ; \
-	else \
-		pr -t VERSION > $(PDOWN_VERSION_FILE) ; \
-	fi
-
-clean:
-	rm -rf pixiv_down \
-		objs/
-
-distclean: clean
-	rm -rf Makefile
-
-install: pixiv_down
-	$(INSTALL_PROGRAM) pixiv_down $(bindir)
-	$(INSTALL_DATA) docs/pixiv_down.1 \
-		docs/pixiv_down-artist.1 \
-		docs/pixiv_down-artwork.1 \
-		docs/pixiv_down-bookmarked.1 \
-		docs/pixiv_down-compact.1 \
-		docs/pixiv_down-daily.1 \
-		docs/pixiv_down-following.1 \
-		docs/pixiv_down-novel.1 \
-		docs/pixiv_down-prune.1 \
-		$(mandir)/man1
-	$(INSTALL_DATA) docs/pixiv_down.conf.5 \
-		$(mandir)/man5
-
-install-strip:
-	$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
-
-uninstall:
-	rm ${bindir}/pixiv_down
-
-pixiv_down: $(PDOWN_VERSION_FILE) $(PDOWN_SOURCES)
-	$(DC) $(DFLAGS) ${oflag}pixiv_down $(PDOWN_SOURCES) $(LDFLAGS) $(LIBS)

+ 13 - 0
CHANGELOG.md

@@ -2,6 +2,18 @@
 
 This file contains all the major changes between `pixiv_down` releases.
 
+## [2024.07] - 2024-07-21
+
+### Bug Fixes
+
+- Fix an endless loop when running the `daily` command.
+- Fix GIF generation on POSIX (incorrect frame order).
+- Fix `--skip-novel` not working in `artist` command.
+
+### Improvements
+
+- Improve the message shown when downloading with `artist` and there are no works to download.
+
 ## [2024.05] - 2024-05-31
 
 ### Removed dependency on `magickd`
@@ -173,6 +185,7 @@ The available options are:
 * Incorrect output filename when downloading an ugoira with Japanese in the title.
 * Incorrect behaviour when trying to resume an unfinished manga download.
 
+[2024.07]: https://codeberg.org/supercell/pixiv_down/compare/v2024.05...v2024.07
 [2024.05]: https://codeberg.org/supercell/pixiv_down/compare/v2024.04...v2024.05
 [2024.04]: https://codeberg.org/supercell/pixiv_down/compare/v2024.02...v2024.04
 [2024.02]: https://codeberg.org/supercell/pixiv_down/compare/v0.1...v2024.02

+ 20 - 7
README.md

@@ -6,7 +6,7 @@ A CLI tool for downloading content from [pixiv].
 
 ## Requirements
 
-D >= `2.097.0`
+D >= `2.076.0`
 : https://dlang.org
 
 GraphicsMagick >= `1.3.0`
@@ -18,13 +18,26 @@ pixiv_down is only tested on Linux and macOS.
 
 ## Build
 
-It's rather simple to build pixiv_down, you just need to run `dub build`.
-If you do not have `dub`, or simply don't want to use it, a configure script
-is provided to support both macOS and POSIX.  Just run `./configure` followed
-by `make` to build.  You can change the D compiler by specifying the `DC`
-environment variable: `DC=gdc ./configure`.
+It is possible to build pixiv_down using dub by running `dub build`.
 
-**NOTE**: The only compiler supported on macOS is DMD.
+**NOTE**: macOS only support building via dub.
+
+If you do not have `dub`, or simply don't want to use it, the typical GNU build
+system can be used.
+
+```bash
+./bootstrap
+./configure
+make
+```
+
+The compiled executable can be found at `source/pixiv_down`.
+
+To install run:
+
+```bash
+make install
+```
 
 ## Usage
 

+ 1 - 1
VERSION

@@ -1 +1 @@
-v2024.05+
+v2024.07

+ 0 - 0
bootstrap


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff