Skip to content

geakstr/yt-sync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yt-sync

Syncs YouTube subscriptions locally using yt-dlp. Reads exported subscriptions CSV and downloads latest videos from each channel.

Usage

yt-sync -s subscriptions.csv -o ~/Videos/YouTube

Get subscriptions CSV from Google Takeout:

  1. Click "Deselect all", then select only "YouTube and YouTube Music"
  2. Click "All YouTube data included" → "Deselect all" → select only "subscriptions" → "OK"
  3. Click "Next step" → "Create export" and wait for the email with download link
  4. Extract the archive and find YouTube and YouTube Music/subscriptions/subscriptions.csv

Pass extra flags to yt-dlp after --:

yt-sync -s subs.csv -o out -- --windows-filenames --cookies-from-browser firefox --js-runtimes bun

These are just examples of useful yt-dlp flags, not requirements.

Options

Sync YouTube subscriptions using yt-dlp

Usage: yt-sync [OPTIONS] --subscriptions <SUBSCRIPTIONS> --output <OUTPUT> [-- <YT_DLP_ARGS>...]

Arguments:
  [YT_DLP_ARGS]...  Additional arguments passed to yt-dlp

Options:
  -s, --subscriptions <SUBSCRIPTIONS>
          YouTube subscriptions CSV export file
  -o, --output <OUTPUT>
          Output directory for downloaded videos
  -l, --limit <LIMIT>
          Max videos per channel (0 = unlimited) [default: 1]
      --skip-shorts <SKIP_SHORTS>
          Skip YouTube Shorts [default: true] [possible values: true, false]
  -p, --parallel <PARALLEL>
          Number of parallel downloads [default: 4]
  -r, --retries <RETRIES>
          Retry attempts for failed downloads [default: 3]
      --retry-delay <RETRY_DELAY>
          Delay between retries in seconds [default: 5]
      --yt-dlp-path <YT_DLP_PATH>
          Path to yt-dlp binary
      --yt-dlp-version <YT_DLP_VERSION>
          yt-dlp version to download if not found [default: 2025.12.08]
      --no-version-warning
          Suppress yt-dlp version mismatch warning
      --no-ffmpeg-warning
          Suppress ffmpeg not found warning
      --color <COLOR>
          Color output mode [default: auto] [possible values: auto, always, never]
      --progress <PROGRESS>
          Progress display style [default: auto] [possible values: auto, interactive, plain]
      --debug
          Print debug info and full yt-dlp output
      --thumbnail <THUMBNAIL>
          Save video thumbnails [default: true] [possible values: true, false]
      --slim-metadata <SLIM_METADATA>
          Save trimmed video metadata as .info.json [default: true] [possible values: true, false]
  -h, --help
          Print help

Requirements

  • yt-dlp - does the actual downloading (auto-downloaded if not found)
  • ffmpeg - required by yt-dlp to merge video+audio into best quality (without it, falls back to lower quality pre-merged formats)

Install

Requires Rust 1.85+ (2024 edition).

cargo build --release
cp target/release/yt-sync ~/.local/bin/

Or run directly without compiling:

cargo install rust-script
rust-script yt-sync.rs -s subs.csv -o out

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages