Skip to content

Releases: bittner/instagram-offline

0.6.0 · Swipe Right

Choose a tag to compare

@bittner bittner released this 12 Sep 01:33
b4fb89c

A lightbox that moves like the grid, a favicon, and an About box for everyone

The near-full-screen view of a post now behaves like the carousels in the grid: its slides sit on a track that follows your finger or mouse during a swipe and eases into place on release, and the arrows and arrow keys animate the move as well — the shown video plays, the others pause. On the overview every account with a captured header gets its About box, facts and hashtag chips even without a bio, and the expanded content always starts on its own line below the row instead of squeezing in beside the toggle when it is short. The generated site carries a favicon, a plain monochrome camera rather than Instagram's trademarked glyph, which also keeps a local server log free of 404 lines, and insta --version tells which version of instagram-offline built it.

Full Changelog: v0.5.0...v0.6.0

0.5.0 · The Whole Picture

Choose a tag to compare

@bittner bittner released this 12 Sep 00:05
e9e4c65

Photos join the archive, and every post can be seen big

Until now only videos and reels were saved; instagram-offline now archives the photo posts and the photo slides of carousels as well, so every post is complete — and archives made by earlier versions fetch their missing photos on the next run. The account page gained a content-type switch, All, Photos, Videos and Carousels, that combines with the topic chips and is reflected in the link, and a lightbox that shows any post near-full-screen: click a photo or the enlarge button on a card, step through a carousel with the arrows or the keyboard, and close with Escape. Along the way the caption box now fills its card so rows end on one edge, carousel dragging works on photo slides too, and --all updates every archived account in one go. Under the hood the pages are rendered from Jinja2 templates with the stylesheet and script shipped as files of the package, and a browser test suite drives the generated site in headless Chromium to make sure the filters and the lightbox really do what they claim.

Full Changelog: v0.4.0...v0.5.0

0.4.0 · Every Account Gets a Face

Choose a tag to compare

@bittner bittner released this 11 Sep 21:41
7b0d2cc

A profile header, About box and filters for every account, and a site that grows while you download

Until now only a hand-written profile gave an account its About box and topic filters. instagram-offline now captures the profile header that Instagram sends while the profile loads — name, bio, category, links and follower count — and uses it as the baseline: the overview shows name and followers next to every account, the bio becomes the About text, and the hashtags an account uses most become its filter chips; a hand-written profile.json still wins where it exists. The site is rebuilt every half minute while a download runs, so you can browse what has arrived so far, and it is friendlier to browse, too: captions and bios link their URLs, @mentions and #hashtags, the header bar is sticky and comes back on the first scroll up with the filter chips in a row beneath it, and the account rows on the overview stay on one line with the details in the expandable section. Long downloads got smarter as well: a server error no longer stalls the run — the post is queued and retried after the next success with a fresh video URL — a run remembers what it still has to fetch and starts with that on the next launch before scanning the profile, an interrupted run cleans up after itself, and Ctrl+C ends a run gracefully with the site rebuilt.

Full Changelog: v0.3.0...v0.4.0

0.3.0 · Slow and Steady

Choose a tag to compare

@bittner bittner released this 11 Sep 18:01
0681083

Large accounts finish, whatever the CDN throws at the run

Instagram's CDN starts pushing back after a hundred or so quick downloads, and until now a single 429 ended the run. instagram-offline now takes the hint: rate limiting, server errors, dropped connections and timeouts are retried with an exponential back-off that honours Retry-After, and every time the CDN throttles, the pause between posts doubles for the rest of the run, so one warning does not turn into a hundred. A post that still fails, or whose page will not load, is reported and left for the next run instead of aborting the archive. Resuming works as it should, too: a profile counts as complete only once a run has gone through all of its posts, so an interrupted first run no longer stops early at the posts it already has and skips the rest — rerun the same command and it carries on where it left off. The project is also REUSE compliant now, with SPDX copyright and license tags in every file.

Full Changelog: v0.2.0...v0.3.0

0.2.0 · Any Chromium Will Do

Choose a tag to compare

@bittner bittner released this 11 Sep 15:36
a7ddad1

Runs with whatever Chromium-based browser you have — or none at all

The browser is no longer hard-wired to a chromium binary: instagram-offline now finds Chromium, Chrome, Brave, Edge, Vivaldi or Opera on Linux, macOS and Windows, honours the conventional $BROWSER variable when it names one of them, takes an explicit --browser EXECUTABLE, and on a system without any of these downloads Playwright's own Chromium on first use. The tool also answers to instagram-offline besides insta, so uvx instagram-offline USERNAME runs it without an install step, and the package metadata links back to the source, issues and releases.

Full Changelog: v0.1.0...v0.2.0

0.1.0 · Your Reels, Offline

Choose a tag to compare

@bittner bittner released this 11 Sep 13:51
d3a7cd6

Archive an Instagram account's videos and browse them on your own terms

Instagram has closed the door on scripted clients, so instagram-offline lets the real browser do the talking: it drives a logged-in Chromium session over the DevTools protocol, scrolls the profile, harvests the post data Instagram sends to the page and pulls the videos and reels straight from the CDN — including posts co-authored with other accounts. Every post lands in an index, so a rerun stops at the first known post and only fetches what is new. The result is a self-contained static website you can open from disk or drop on any web server: one page per account, carousel posts as animated, draggable sliders, topic filters built from caption keywords, and an expandable About box that introduces the account and its recurring themes.

Full Changelog: https://github.com/bittner/instagram-offline/commits/v0.1.0