mirror of
https://github.com/darkzoul5/YoutubePlaylistSync.git
synced 2026-09-18 20:43:54 +03:00
update readme
This commit is contained in:
@@ -4,23 +4,23 @@
|
|||||||

|

|
||||||

|

|
||||||
|
|
||||||
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.
|
Local-first YouTube playlist synchronization client.
|
||||||
|
|
||||||
## What's Included
|
## 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
|
- Scanner (yt-dlp extract-only), diff engine, filesystem scan
|
||||||
- Safe reordering via two-pass rename, recycle deletions
|
- Safe reordering via two-pass rename and recycle deletions
|
||||||
- Async download queue with simple retry (yt-dlp Python API)
|
- Async download queue with retry support (yt-dlp Python API)
|
||||||
- SQLite metadata (`last_sync`, download state)
|
- SQLite metadata for `last_sync` and download state
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- If you download a `-ffmpeg` release: no extra dependencies
|
- 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 non-ffmpeg release: install `ffmpeg` and ensure it is on PATH (needed for `audio` and `both` modes).
|
||||||
|
|
||||||
## Download
|
## Download
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ Download the latest release from this repo's Releases page and pick one:
|
|||||||
|
|
||||||
## Configure
|
## 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
|
```json
|
||||||
{
|
{
|
||||||
@@ -39,6 +39,14 @@ Application uses a json config that canbe edited from UI or manually
|
|||||||
"max_parallel_downloads": 2,
|
"max_parallel_downloads": 2,
|
||||||
"retry_max_retries": 2,
|
"retry_max_retries": 2,
|
||||||
"retry_delay_seconds": 1.5,
|
"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": [
|
"playlists": [
|
||||||
{
|
{
|
||||||
"url": "https://www.youtube.com/playlist?list=YOUR_PLAYLIST_ID",
|
"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`:
|
`download_mode`:
|
||||||
|
|
||||||
- `video`: download playlist videos as `.mp4` (no ffmpeg required)
|
- `video`: download playlist videos as `.mp4` (no ffmpeg required)
|
||||||
- `audio`: download video, extract `.mp3`, delete the video file
|
- `audio`: download the video, extract `.mp3`, and delete the video file
|
||||||
- `both`: download video, extract `.mp3`, keep both files
|
- `both`: download the video, extract `.mp3`, and keep both files
|
||||||
|
|
||||||
Queue / retry:
|
Queue / retry:
|
||||||
|
|
||||||
- `max_parallel_downloads`: number of concurrent download workers.
|
- `max_parallel_downloads`: number of concurrent download workers.
|
||||||
- `retry_max_retries`: how many times a failed download job is retried.
|
- `retry_max_retries`: how many times a failed download job is retried.
|
||||||
- `retry_delay_seconds`: base delay before retry; increases with backoff.
|
- `retry_delay_seconds`: base delay before retry; increases with backoff.
|
||||||
|
- `delay_between_downloads_seconds`: optional delay between download jobs.
|
||||||
|
|
||||||
## Run
|
## Run
|
||||||
|
|
||||||
- Run `ytpl-sync.exe` (GUI).
|
- GUI: run `ytpl-sync-entry.py` or the packaged desktop exe from releases.
|
||||||
|
|
||||||
## Tray
|
## Tray
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user