diff --git a/README.md b/README.md index 1fae113..efdf886 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,112 @@ -# YouTube-Playlist-Downloader +# YouTube Playlist Downloader -Little app to download music playlists from YouTube \ No newline at end of file +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. + +--- + +## 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. +- **Configurable output paths** and archive tracking. +- **Cross-platform:** Windows and Linux support. +- **Gitea CI/CD workflow** for automated packaging and release. + +--- + +## Requirements + +- Python 3.8+ + +--- + +## Installation + +### Quick Start + +1. **Download the latest release:** + - Go to the [Releases](https://your.gitea.instance/youruser/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. + +3. **Edit configuration:** + - Open `yt-playlist-config.json` and adjust paths and playlist URLs as needed. + +4. **Run the downloader:** + - 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: + +```json +{ + "playlists": [ + { + "url": "https://www.youtube.com/playlist?list=playlistidhere", + "save_path": "./music", + "archive": "archive.txt" + } + ], + "yt_dlp_path": "./bin/yt-dlp.exe", + "ffmpeg_path": "./bin/ffmpeg.exe", + "aria2c_path": "./bin/aria2c.exe", + "max_parallel_downloads": 10, + "aria2c_connections": 8 +} +``` + +- **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). +- **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. +- Deleted/private videos are skipped. +- Archive file prevents re-downloading existing tracks. + +--- + + +## Troubleshooting + +- **No binaries found:** Ensure paths in `yt-playlist-config.json` are correct. +- **No tracks downloaded:** Check playlist URL and archive file. + +--- + +## License + +See [LICENSE](LICENSE). + +--- + +## Credits + +- [yt-dlp](https://github.com/yt-dlp/yt-dlp) +- [ffmpeg](https://ffmpeg.org/) +- [aria2c](https://github.com/aria2/aria2) + +--- \ No newline at end of file