backup-yt
Full backup tool for YouTube channels: videos, thumbnails, titles, descriptions, tags and subtitles — powered by yt-dlp.
Features
- Download every video from a channel, playlist, or a single video URL.
- Two modes: full video backup, or metadata-only (fast, low disk usage).
- Embeds thumbnail, subtitles and metadata directly into the video file.
- Saves per-video metadata as
.info.jsonand.descriptionfiles. - Skips videos you already downloaded (resumable, safe to interrupt).
- Generates a
summary.jsonand asummary.csvwith every video's title, description, tags, URL and thumbnail. - Colored console output (info / success / warning / error), no emojis.
Requirements
- Python 3.9 or higher.
- ffmpeg installed and available on your
PATH(needed by yt-dlp to merge video/audio and embed thumbnails/subtitles). yt-dlpis installed automatically as a dependency of this package.
Installation
From PyPI:
pip install backup-yt
From source (for development):
git clone https://github.com/YOUR_GITHUB_USERNAME/backup-yt.git
cd backup-yt
pip install -e .
Usage
Once installed, the backup-yt command is available, or you can run the package directly with python3 -m backup_yt.
# Metadata and thumbnails only (fast, low disk usage)
backup-yt --url https://www.youtube.com/@MyChannel --metadata-only
# Full video backup at 1080p (default)
backup-yt --url https://www.youtube.com/@MyChannel
# Full video backup at 720p (less disk space)
backup-yt --url https://www.youtube.com/@MyChannel --quality 720
# A single playlist
backup-yt --url "https://www.youtube.com/playlist?list=PLxxxx"
Options
| Flag | Description | Default |
|---|---|---|
--url |
URL of the channel, playlist or video (required) | — |
--metadata-only |
Only download metadata and thumbnails, skip the video file | off |
--quality |
Max video quality in pixels: 480, 720, 1080, 1440, 2160 |
1080 |
Output structure
Each run creates a timestamped folder under youtube_backup/:
youtube_backup/
└── MyChannel_20260910/
├── summary.json
├── summary.csv
├── downloaded_history.txt
└── MyChannel/
└── 20240315 - Video title [videoId]/
├── Video title.mp4
├── Video title.info.json
├── Video title.description
└── Video title.jpg
Project structure
backup_yt/
├── __main__.py # entry point (python3 -m backup_yt)
├── cli.py # argument parsing and orchestration
├── config.py # shared constants
├── logger.py # colored console output
├── storage.py # folders, summary.json, summary.csv
└── yt_dlp_client.py # yt-dlp invocation
License
MIT — see LICENSE.
Metadata
Release files for backup-yt 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| backup_yt-0.1.0.tar.gz | 7.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| backup_yt-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 16.8 kB
Release files / backup_yt-0.1.0.tar.gz
| Download URL | backup_yt-0.1.0.tar.gz |
|---|---|
| Size | 7.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
27c6f6fba0ba607819f98d936e85b59e45b9916ed9e263b8eb0b3d8d15512ca5
|
|
BLAKE2b-256 checksum How to use checksums |
9057f7657078f458346539cd8445d47336353a05ccffacaef73a5838664c8fc3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Release files / backup_yt-0.1.0-py3-none-any.whl
| Download URL | backup_yt-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f404fcc782935514f40c01c0f03a8b3655008f732530e7046703bb3170eca065
|
|
BLAKE2b-256 checksum How to use checksums |
71007a43e2f100fa539119244a1788184fde6cd47881aec14d461fc89e1dbc74
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Security for backup-yt 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.