Skip to content

Releases: rfaulhaber/archivr

Release list

v0.6.0

Choose a tag to compare

@rfaulhaber rfaulhaber released this 31 Jul 19:04
v0.6.0
f7a8246

This release roughly doubles what archivr can capture from a blog, adds filtering and multi-blog support, and hardens the backup loop against crashes, rate limits, and interrupts. It also migrates to crabrave 2.0.

New backup targets

  • Notes (--save-notes, --notes-limit): each post's likes, replies, and reblogs with commentary/tags, fetched from the real notes API and rendered as a collapsible section in HTML (embedded under a notes key in JSON output).
  • Unpublished posts (--drafts, --queue, --submissions): the authenticated user's unpublished content, backed up through the same render/JSON/media pipeline.
  • Likes (--likes): the blog's liked posts (subject to Tumblr's ~1000-recent API cap, with a notice when more exist).
  • Video & audio (--save-video, --save-audio): native Tumblr media downloads into per-kind stores under media/, preferred over provider embeds when rendering. --save-video-external bridges to yt-dlp for external embeds (YouTube, Vimeo, …).
  • Avatar (--save-avatar) and a machine-readable media manifest (--media-list).

Selection & ergonomics

  • Back up multiple blogs in one invocation (authenticate once, per-blog output dirs).
  • Filter what's archived: --include-tags, --type, --no-reblogs / --only-reblogs — incremental state is scoped per filter set, so different filters don't corrupt each other's high-water marks.
  • --count / --skip, single-post mode (--post-id, --id-file), and "N / total" progress reporting.
  • --index-file: a persistent archive index merged across runs, rendered to a monthly-grouped index.html.
  • --no-embeds strips third-party embed HTML for archives that must not phone home.
  • --wayback: fall back to the Wayback Machine for media the CDN now 403/404s.
  • Meaningful exit codes (0 archived / 1 nothing new / 2 usage / 3 interrupted / 4 API error / 5 other) and a clean Ctrl-C handler.

Reliability & security

  • All writes are atomic (temp + rename): a crash can no longer leave truncated posts, images, or state files, and interrupted runs resume without data loss.
  • Pagination switched from raw offsets to a pinned before-timestamp cursor with overlap and dedup — posts created or deleted mid-run can no longer cause skips.
  • Rate limits are auto-retried with the API's requested wait; transient network/5xx errors get timeouts and backoff. A failure fetching one post's notes degrades that post instead of aborting the run.
  • OAuth callback now enforces CSRF state; consumer credentials are redacted from logs. A kernel-backed lock file prevents concurrent runs against one output directory.

crabrave 2.0

  • Upgraded to crabrave 2.0: non-PNG avatars (JPEG/GIF blogs) now archive correctly, API errors include Tumblr's detailed error codes, and rollup note groups are preserved with their aggregate counts instead of flattened.

Full changelog: v0.5.1...v0.6.0

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 29 Jul 14:21
v0.5.1
bf9ad58
chore: Release archivr version 0.5.1