From 4b32ec10c223d22ff2d8ed3f4193707ab22b49ad Mon Sep 17 00:00:00 2001 From: DARKZOUL5 Date: Tue, 14 Oct 2025 10:38:37 +0300 Subject: [PATCH] Update README and config file for enhanced download options and paths --- README.md | 67 ++++++++++++++++++++++++++--------------- yt-playlist-config.json | 2 +- yt-playlist-main.py | 8 ++--- 3 files changed, 48 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 2d8fd7d..07c9e38 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,20 @@ # YouTube Playlist Downloader -A cross-platform tool and workflow for downloading entire YouTube playlists as MP3 files, using [yt-dlp](https://github.com/yt-dlp/yt-dlp), [ffmpeg](https://ffmpeg.org/), and [aria2c](https://github.com/aria2/aria2). Includes Gitea CI/CD workflow for packaging and releasing Windows and Linux binaries. +A cross-platform tool and workflow for downloading entire YouTube playlists as MP3 or MP4 files, using [yt-dlp](https://github.com/yt-dlp/yt-dlp), [ffmpeg](https://ffmpeg.org/), and [aria2c](https://github.com/aria2/aria2). Includes Gitea CI/CD workflow for packaging and releasing Windows and Linux binaries. + +Supports audio, video, or both download modes, music and viedos are numbered as they are on your youtube playlist, playlist cleanup, and configurable parallel download options. --- + ## Features -- **Download full YouTube playlists** as high-quality MP3 files. -- **Parallel downloads** using aria2c for speed. -- **Automatic numbering:** numbers tracks same as the origin playlist. -- **Cleanup of tracks:** optioon to remove tracks not in playlist anymore. +- **Download full YouTube playlists** as high-quality MP3 (audio), MP4 (video), or both. +- **Download mode:** Choose `audio`, `video`, or `both` for each playlist. +- **Max video quality:** Select from `720p`, `1080p`, `1440p`, `2160p`, or `best`. +- **Parallel downloads:** Using aria2 for speed. +- **Automatic renumbering:** Tracks are renumbered to match playlist order after download. +- **Cleanup of tracks:** Option to remove files not in playlist anymore, with confirmation. - **Configurable output paths** and archive tracking. - **Cross-platform:** Windows and Linux support. - **Gitea CI/CD workflow** for automated packaging and release. @@ -22,37 +27,39 @@ A cross-platform tool and workflow for downloading entire YouTube playlists as M --- + ## Installation ### Quick Start 1. **Download the latest release:** - - Go to the [Releases](https://git.darkzoul.org/dark_zoul/YouTube-Playlist-Downloader/releases) page. - - Download the appropriate archive for your platform (Windows or Linux). + - Go to the [Releases](https://git.darkzoul.org/dark_zoul/YouTube-Playlist-Downloader/releases) page. + - Download the appropriate archive for your platform (Windows or Linux). 2. **Unzip the archive:** - - Extract the contents to a folder of your choice. + - Extract the contents to a folder of your choice. 3. **Edit configuration:** - - Open `yt-playlist-config.json` and adjust paths and playlist URLs as needed. + - Open `yt-playlist-config.json` and adjust paths, playlist URLs, download mode, and quality as needed. 4. **Run the downloader:** - - On Windows: - ```sh - python yt-playlist-main.py - ``` - - On Linux: - ```sh - python3 yt-playlist-main.py - ``` + - On Windows: + ```sh + python yt-playlist-main.py + ``` + - On Linux: + ```sh + python3 yt-playlist-main.py + ``` --- ## Usage + ### Configuration -Edit `yt-playlist-config.json` to specify playlists and paths: +Edit `yt-playlist-config.json` to specify playlists, paths, and options: ```json { @@ -63,9 +70,11 @@ Edit `yt-playlist-config.json` to specify playlists and paths: "archive": "archive.txt" } ], - "yt_dlp_path": "./bin/yt-dlp.exe", - "ffmpeg_path": "./bin/ffmpeg.exe", - "aria2c_path": "./bin/aria2c.exe", + "yt_dlp_path": "./bin/yt-dlp.exe", // or "yt-dlp" for Linux + "ffmpeg_path": "./bin/ffmpeg.exe", // or "ffmpeg" for Linux + "aria2c_path": "./bin/aria2c.exe", // or "aria2c" for Linux + "download_mode": "audio", // "audio", "video", or "both" + "max_video_quality": "1080p", // "720p", "1080p", "1440p", "2160p", "best" "max_parallel_downloads": 10, "aria2c_connections": 8 } @@ -73,36 +82,46 @@ Edit `yt-playlist-config.json` to specify playlists and paths: - **playlists:** List of playlist objects. Each must have a `url`, `save_path`, and `archive`. - **yt_dlp_path, ffmpeg_path, aria2c_path:** Paths to binaries (relative or absolute). +- **download_mode:** Choose `audio`, `video`, or `both`. +- **max_video_quality:** Set max video quality for downloads. - **max_parallel_downloads:** Number of simultaneous downloads. - **aria2c_connections:** Connections per download. + ### Running ```sh python yt-playlist-main.py ``` -- The script will check for binaries, update yt-dlp, and download all new tracks in the playlist. -- Tracks are saved and numbered in the specified folder. +- The script checks for required binaries and updates yt-dlp. +- Downloads new tracks in the playlist according to your chosen mode and quality. +- Tracks are saved and automatically renumbered to match playlist order. - Deleted/private videos are skipped. - Archive file prevents re-downloading existing tracks. +- After download, you can optionally clean up files not present in the playlist anymore (confirmation required). --- + ## Troubleshooting -- **No binaries found:** Ensure paths in `yt-playlist-config.json` are correct. +- **No binaries found:** Ensure paths in `yt-playlist-config.json` are correct and binaries are present. - **No tracks downloaded:** Check playlist URL and archive file. +- **Download mode or quality issues:** Make sure `download_mode` and `max_video_quality` are set to valid values. +- **Network overload warning:** If you set very high parallel/connections, the script will warn you. --- + ## License See [LICENSE](LICENSE). --- + ## Credits - [yt-dlp](https://github.com/yt-dlp/yt-dlp) diff --git a/yt-playlist-config.json b/yt-playlist-config.json index 84149e9..a94bf4d 100644 --- a/yt-playlist-config.json +++ b/yt-playlist-config.json @@ -2,7 +2,7 @@ "playlists": [ { "url": "https://www.youtube.com/playlist?list=PLUmRr21IDW9VOlWwIcr1Foyj2pMh-Jvpb", - "save_path": "R:/localtracks/darkzoul", + "save_path": "C:/Users/DARK_ZOUL/Desktop/downloads", "archive": "archive.txt" } ], diff --git a/yt-playlist-main.py b/yt-playlist-main.py index c45dd56..4336e64 100644 --- a/yt-playlist-main.py +++ b/yt-playlist-main.py @@ -37,13 +37,13 @@ class ConfigLoader: "playlists": [ { "url": "https://www.youtube.com/playlist?list=YOUR_PLAYLIST_HERE", - "save_path": "./music", + "save_path": "./downloads", "archive": "archive.txt" } ], - "yt_dlp_path": "./bin/yt-dlp.exe" if platform.system() == "Windows" else "yt-dlp", - "ffmpeg_path": "./bin/ffmpeg.exe" if platform.system() == "Windows" else "ffmpeg", - "aria2c_path": "./bin/aria2c.exe" if platform.system() == "Windows" else "aria2c", + "yt_dlp_path": "./bin/yt-dlp.exe" if platform.system() == "Windows" else "./bin/yt-dlp", + "ffmpeg_path": "./bin/ffmpeg.exe" if platform.system() == "Windows" else "./bin/ffmpeg", + "aria2c_path": "./bin/aria2c.exe" if platform.system() == "Windows" else "./bin/aria2c", "download_mode": "audio", # options: audio, video, both "max_video_quality": "1080p", # options: 720p, 1080p, 1440p, 2160p, best "max_parallel_downloads": 10,