diff --git a/README.md b/README.md index f9aa27f..caed90e 100644 --- a/README.md +++ b/README.md @@ -4,23 +4,23 @@ ![Build-Release](https://img.shields.io/github/actions/workflow/status/darkzoul5/YoutubePlaylistSync/build-release.yml?style=flat-square&label=Build-Release) ![Unit Tests](https://img.shields.io/github/actions/workflow/status/darkzoul5/YoutubePlaylistSync/unit-tests.yml?style=flat-square&label=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](https://github.com/yt-dlp/yt-dlp) & [ffmpeg](https://ffmpeg.org/). +A cross-platform tool for downloading and keeping a local copy of YouTube playlists in sync as MP3 or MP4 files, using [yt-dlp](https://github.com/yt-dlp/yt-dlp) and [ffmpeg](https://ffmpeg.org/). -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. +It supports audio, video, or both download modes, keeps files numbered to match the playlist order, handles playlist cleanup, and exposes configurable parallel download options. Local-first YouTube playlist synchronization client. ## What's Included -- GUI (PySide6 Essentials) playlist manager + sync runner +- GUI playlist manager and sync runner built with PySide6 Essentials - 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) +- Safe reordering via two-pass rename and recycle deletions +- Async download queue with retry support (yt-dlp Python API) +- SQLite metadata for `last_sync` and 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) +- If you download a `-ffmpeg` release: no extra dependencies. +- If you download a non-ffmpeg release: install `ffmpeg` and ensure it is on PATH (needed for `audio` and `both` modes). ## Download @@ -31,7 +31,7 @@ Download the latest release from this repo's Releases page and pick one: ## Configure -Application uses a json config that canbe edited from UI or manually +The application uses a JSON config file that can be edited from the UI or manually. ```json { @@ -39,6 +39,14 @@ Application uses a json config that canbe edited from UI or manually "max_parallel_downloads": 2, "retry_max_retries": 2, "retry_delay_seconds": 1.5, + "delay_between_downloads_seconds": 0.0, + "ui": { + "tray": { + "close_to_tray": false, + "minimize_to_tray": false, + "start_minimized_to_tray": false + } + }, "playlists": [ { "url": "https://www.youtube.com/playlist?list=YOUR_PLAYLIST_ID", @@ -60,18 +68,19 @@ Application uses a json config that canbe edited from UI or manually `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 +- `audio`: download the video, extract `.mp3`, and delete the video file +- `both`: download the video, extract `.mp3`, and 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. +- `delay_between_downloads_seconds`: optional delay between download jobs. ## Run -- Run `ytpl-sync.exe` (GUI). +- GUI: run `ytpl-sync-entry.py` or the packaged desktop exe from releases. ## Tray