All projects

Built with AI · 2026

Vidstash

Save whole YouTube channels and Facebook pages as MP4, and fetch only what is new next time.

Vidstash: choosing videos from a channel

The problem

Archiving a whole channel or page usually means a cloud service or a one-by-one download. I wanted a private, local tool that picks up where it left off.

What I built

A local web app and command-line tool. Paste a channel, playlist, video, handle or Facebook page, see every video with its date, views, length and size, tick the ones you want, and download them as MP4 (up to 4K) or audio. Already-downloaded videos are skipped, files land in one folder per channel, and a job queue handles progress, cancel, resume and retry. A LAN mode lets a tablet in the house use it too.

How I tested it

pytest suites for the engine, web API, resolver and scraper; ruff linting; CI on Linux (Python 3.11 and 3.14) and macOS; a daily canary job that runs the latest dependencies against real YouTube and opens an issue when something breaks; Dependabot with auto-merge for non-major updates. The server binds to localhost, rejects foreign Host headers and requires a custom header on writes.