diff --git a/README.md b/README.md index a887482..1d80708 100644 --- a/README.md +++ b/README.md @@ -8,28 +8,28 @@ A cross-platform tool for downloading and keeping in sync a local copy of entire 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 +## What's Included +- GUI (PySide6) 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; DB updates on rename/download/delete; `last_sync` -- Optional event publishing for future GUI/logs +- SQLite metadata (`last_sync`, download state) ## Requirements -- Python 3.10+ -- `ffmpeg` (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's on PATH (needed for `audio` and `both` modes) -Quick start: +## Download -Download the latest release from [releases](https://github.com/darkzoul5/YoutubePlaylistSyncThing/releases) page +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 - -On first run, the app will auto-create a default `config/yt-playlist-config.json` (if missing). - -Create/edit `config/yt-playlist-config.json`: +Application uses a json config that canbe edited from UI or manually ```json { @@ -48,27 +48,17 @@ Create/edit `config/yt-playlist-config.json`: } ``` -Defaults: - -- `ffmpeg_path`: `./bin/ffmpeg.exe` (Windows) or `./bin/ffmpeg` (Linux) -- `download_mode`: `video` -- `max_download_quality`: `1080p` -- `save_path`: `./downloads` -- `max_parallel_downloads`: `2` -- `retry_max_retries`: `2` -- `retry_delay_seconds`: `1.5` - `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"` (or `"auto"`) for no height cap (highest available muxed MP4). +- 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 muxed `.mp4` (no ffmpeg processing) -- `audio`: download muxed `.mp4`, extract `.mp3`, delete the `.mp4` -- `both`: download muxed `.mp4`, extract `.mp3`, keep both files +- `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: @@ -78,23 +68,7 @@ Queue / retry: ## Run -- Compute-only: - -```bash -python -m app.cli -``` - -- Apply actions: - -```bash -python -m app.cli --apply -``` - -- Single playlist (0-based index): - -```bash -python -m app.cli --apply --playlist 0 -``` +- Run `ytpl-sync.exe` (GUI). ## Data & Layout @@ -105,5 +79,5 @@ python -m app.cli --apply --playlist 0 ## Roadmap (short) - Scheduler (periodic sync), richer retries/logging -- GUI (PySide6) wired to EventBus - Enhanced config validation +- UX polish (settings, progress, error messages)