Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SmartDownloader

A local web app for downloading Twitter/X and Instagram videos at the highest available quality, with bulk paste / file upload, live progress, quality presets, cookie support for login-gated content, and a built-in yt-dlp updater.

Everything runs on your own machine (127.0.0.1 only — nothing is exposed to the network). Extraction is done by yt-dlp; ffmpeg comes bundled via the imageio-ffmpeg package, so there is nothing to install manually besides Python.

Requirements

  • Windows with Python 3.11+ (winget install Python.Python.3.12 if needed)

Run it

Double-click run.bat (or run it from a terminal). First start creates a .venv and installs dependencies; then your browser opens at http://127.0.0.1:8765.

Using it

  1. Paste links into the big box — one per line (commas/spaces also work) — or click Upload .txt / .csv with a file of links.
  2. Hit Download All (or Ctrl+Enter). Supported links:
    • https://x.com/<user>/status/<id> / twitter.com/...
    • https://www.instagram.com/p/<code>/, /reel/<code>/, /tv/<code>/
  3. Watch progress per file. Failed jobs show the reason and a Retry button; links you already downloaded are marked skipped with a Download Anyway override. Instagram carousels download every video in the post.

Files are saved to <save folder>/twitter/ or <save folder>/instagram/ as Uploader - Title [id].mp4 (Windows-safe, collision-proof names).

Settings (⚙ top right)

Setting Notes
Save folder Native folder picker; remembered between sessions
Quality Best available (default), 1080p max, or 720p max
Parallel downloads 1–5, default 3
Login cookies For private/login-gated content — see below
Extra yt-dlp args Appended to every download, e.g. --sleep-interval 3 --max-sleep-interval 8
Twitter fallback When yt-dlp fails on a tweet, retry it via twittervideodownloader.com in a headless browser (ads blocked at network level)
Update yt-dlp One click; also warns when your copy is >30 days old

Login-gated Instagram / X content

Public posts work with no setup. For private accounts, stories-adjacent content, or when Instagram demands login:

  • From Firefox / Edge: log in to the site in that browser, then pick it as the cookie source. (Chrome usually fails on Windows — Chrome 127+ encrypts cookies in a way tools can't read; use Firefox/Edge or a file.)
  • cookies.txt: export with a browser extension like "Get cookies.txt LOCALLY", then upload it in Settings.

When downloads start failing

Twitter and Instagram change their internals constantly. In order of likelihood:

  1. Update yt-dlp (Settings → Update yt-dlp). This fixes most breakage.
  2. Failed tweets are automatically retried through twittervideodownloader.com in a headless browser (jobs show "via fallback site"). Chromium for this installs on first run.bat (one-time, ~150 MB).
  3. Instagram rate limits bulk downloads — the app automatically slows down for a few minutes when this is detected (you'll see a banner). Adding --sleep-interval 3 --max-sleep-interval 8 to extra args helps for big batches.
  4. "Login required" errors → set a cookie source.

More detail in docs/TROUBLESHOOTING.md; design docs in docs/ARCHITECTURE.md; agent/contributor guidance in AGENTS.md.

Download history lives in data/history.jsonl; settings in data/settings.json. Delete either to reset.

Note

Download only content you have the right to save. You are responsible for complying with each platform's terms of service and applicable copyright law.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages