annextube
YouTube archive system using git-annex for efficient storage and incremental updates.
Live Demo - Try the web interface with sample videos from the @AnnexTubeTesting channel (auto-generated by GitHub Actions)
Features
- Complete channel archival: Videos, metadata, comments, and captions
- Incremental updates: Efficient detection of new content
- Offline browsing: Client-side web interface (no server required)
- Flexible filtering: By date, license, playlist, metadata attributes
- CI/CD automation: GitHub Actions and Codeberg Actions support
- Git-annex integration: Efficient storage with special remotes (S3, WebDAV, etc.)
Quick Start
# Install (core)
pip install annextube
# Or install with all optional features (DataLad, search index, audio alignment)
pip install 'annextube[full]'
# Create archive
mkdir my-archive && cd my-archive
annextube init
# Configure (edit .annextube/config.toml)
# Add YouTube Data API key and channel URLs
# Backup
annextube backup
# Browse offline
annextube generate-web
open web/index.html
Container Deployment
Pre-built container with all dependencies (git-annex, yt-dlp, ffmpeg, deno):
# Build container
podman build -t annextube:latest -f Containerfile .
# Run
podman run -it --rm -v $PWD:/archive -e YOUTUBE_API_KEY="key" annextube:latest backup
# For Singularity/Apptainer (HPC clusters)
apptainer build annextube.sif Containerfile
apptainer run --bind $PWD:/archive annextube.sif backup
See docs/how-to/container-deployment.md for full guide.
Documentation
- Installation: See docs/tutorial/01-installation.md
- Container Deployment: See docs/how-to/container-deployment.md
- Quick Start: See specs/001-youtube-backup/quickstart.md
- Troubleshooting: See docs/how-to/troubleshooting.md (challenge solver errors, quota, interrupted backups)
- API Reference: See docs/reference/
System Requirements
Required
- Python 3.10+: Runtime for annextube
- git: Version control
- git-annex 8.0+: Large file management
- yt-dlp (command-line): MUST be in PATH for git-annex --no-raw
sudo pip install yt-dlp # Or download binary to /usr/local/bin
Strongly Recommended
- ffmpeg: Video processing and best quality downloads
sudo apt-get install ffmpeg # Debian/Ubuntu brew install ffmpeg # macOS
Optional
-
YouTube Data API v3 key: For API-based metadata (free from Google Cloud Console)
-
deno or node: JavaScript runtime for modern YouTube features
-
Optional extras (install individually or all at once with
pip install 'annextube[full]'):Extra Install Description dataladpip install 'annextube[datalad]'DataLad dataset management searchpip install 'annextube[search]'Full-text caption search index (pagefind) audio-alignpip install 'annextube[audio-align]'Audio-based caption alignment (Whisper) fullpip install 'annextube[full]'All of the above
Development
# Clone repository
git clone https://github.com/con/annextube.git
cd annextube
# Install with development dependencies
uv pip install -e ".[devel]"
# Run tests
pytest
# Run linter
ruff check annextube/ tests/
# Run type checker
mypy annextube/
License
MIT License - see LICENSE file
Contributing
See CONTRIBUTING.md (TBD)
Project Status
🚧 Early Development - This project is under active development. API may change.
Current phase: Implementing MVP (User Story 1 + 2)
Metadata
Release files for annextube 0.14.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| annextube-0.14.1.tar.gz | 321.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| annextube-0.14.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 552.5 kB
Release files / annextube-0.14.1.tar.gz
| Download URL | annextube-0.14.1.tar.gz |
|---|---|
| Size | 321.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
88c4a861070aaa3faf95f3ca5f02cf50e5eaa1c73c841355bfa3fbff2cb2d48e
|
|
BLAKE2b-256 checksum How to use checksums |
410139b0ed99af945ec286461943788a609d2a5eb0bc8ccf702baf866a0f7cbc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / annextube-0.14.1-py3-none-any.whl
| Download URL | annextube-0.14.1-py3-none-any.whl |
|---|---|
| Size | 230.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
51e263292f9c70eb3f08a5aaf03c5669fef81df45267fe484d9d0156de30f722
|
|
BLAKE2b-256 checksum How to use checksums |
76694f554c2f86c247226b0a19d0aacb0201d310ee4384636397a3b9998b6dc9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|