Periodically archives e621 posts that match a given query.
Find a file
2025-09-23 14:14:27 +00:00
migrations record sources too 2025-09-13 16:44:49 +09:30
src record sources too 2025-09-13 16:44:49 +09:30
.gitignore initial commit 2025-09-13 02:55:33 +09:30
Cargo.lock more glaring bugs 2025-09-13 03:42:41 +09:30
Cargo.toml more glaring bugs 2025-09-13 03:42:41 +09:30
README.md Update README.md 2025-09-23 14:14:27 +00:00

e6mirror

Periodically archives e621 posts that match a given query.

  • The query argument must not contain an order.
  • Metadata is stored in an SQLite database.
  • Deleted posts aren't recorded by default, but you can append status:any to your query to do so. Obviously its media won't be downloaded, but metadata will be.
  • There's a special favourites subcommand to download a user's favourites. This is necessary as the search fav:{user} returns posts in the order they were uploaded, not necessarily the order they were favourited.
  • Send SIGHUP to trigger a check immediately.

TODO

  • Rate limiting is implemented by way of "it takes more than one second to download 200 images" which might not be excellent
  • Safely commit and shutdown on Ctrl + C
  • From my understanding, if some number of posts on the previous page disappear during mirroring, e6mirror may miss that number of future posts because removing previous posts shifts future pages. This can be mitigated in query mode by using id:> instead of page, but I'm not sure what to do about it for favourites.
  • Transactions ensure database consistency, but unreferenced files may still have been written to disk.
  • Consistency check command
  • Check for updated tags / replaced media