1
0
mirror of https://github.com/darkzoul5/YoutubePlaylistSync.git synced 2026-07-01 19:47:01 +03:00
dependabot[bot] e97c419b47 chore(deps): bump actions/checkout from 6 to 7 (#17)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-20 23:23:48 +03:00
2026-05-17 13:51:15 +03:00
2026-06-18 11:31:06 +03:00
2026-05-17 12:09:58 +03:00
2026-06-02 22:46:42 +03:00
2026-06-11 12:38:15 +00:00

YouTube Playlist Sync

Release Build-Release Unit Tests

A cross-platform tool for downloading and keeping in sync a local copy of entire YouTube playlists as MP3 or MP4 files, using yt-dlp & ffmpeg.

Supports audio, video, or both download modes, music and videos are numbered as they are on your youtube playlist, playlist cleanup, and configurable parallel download options. Local-first YouTube playlist synchronization client.

What's Included

  • GUI (PySide6 Essentials) playlist manager + sync runner
  • Scanner (yt-dlp extract-only), diff engine, filesystem scan
  • Safe reordering via two-pass rename, recycle deletions
  • Async download queue with simple retry (yt-dlp Python API)
  • SQLite metadata (last_sync, download state)

Requirements

  • If you download a -ffmpeg release: no extra dependencies
  • If you download a non-ffmpeg release: install ffmpeg and ensure it's on PATH (needed for audio and both modes)

Download

Download the latest release from this repo's Releases page and pick one:

  • ytpl-sync-windows-{version}-ffmpeg.zip / ytpl-sync-linux-{version}-ffmpeg.tar.gz (ffmpeg bundled)
  • ytpl-sync-windows-{version}.zip / ytpl-sync-linux-{version}.tar.gz (no ffmpeg bundled)

Configure

Application uses a json config that canbe edited from UI or manually

{
  "ffmpeg_path": "./bin/ffmpeg.exe",
  "max_parallel_downloads": 2,
  "retry_max_retries": 2,
  "retry_delay_seconds": 1.5,
  "playlists": [
    {
      "url": "https://www.youtube.com/playlist?list=YOUR_PLAYLIST_ID",
      "download_mode": "video",
      "max_download_quality": "1080p",
      "save_path": "./downloads",
      "name": "my favorite playlist"
    }
  ]
}

max_download_quality:

  • Limits yt-dlp download quality (e.g. "2160p", "1440p", "1080p", "720p", "360p"). This only affects the downloaded video format selection.
  • Use "best" for no height cap (highest available).
  • If the requested max quality isn't available for a video, the best available quality is chosen.

download_mode:

  • video: download playlist videos as .mp4 (no ffmpeg required)
  • audio: download video, extract .mp3, delete the video file
  • both: download video, extract .mp3, keep both files

Queue / retry:

  • max_parallel_downloads: number of concurrent download workers.
  • retry_max_retries: how many times a failed download job is retried.
  • retry_delay_seconds: base delay before retry; increases with backoff.

Run

  • Run ytpl-sync.exe (GUI).

Tray

  • The app supports minimizing to tray on close if the OS provides a system tray; use the tray icon menu to quit.
  • Tray behavior settings (Settings page):
    • close_to_tray: close hides to tray (keeps running).
    • minimize_to_tray: minimize hides to tray.
    • start_minimized_to_tray: start hidden in tray.

Data & Layout

  • Database: db/app.db
  • Outputs: <save_path>/audio and/or <save_path>/video
  • Recycle bin: <save_path>/.recycle/{audio,video}

Roadmap (short)

  • Scheduler (periodic sync), richer retries/logging
  • Enhanced config validation
  • UX polish (settings, progress, error messages)
S
Description
No description provided
Readme 20 MiB
Languages
Python 100%