TubeTracks: Enhanced YouTube to MP3 Downloader with multi-platform support
Project description
๐ต TubeTracks
Professional multi-platform media downloader with advanced quality control and batch processing
Download audio from YouTube, Spotify, SoundCloud, and 6+ other platforms with enterprise-grade features and an intuitive interface.
Installation โข Quick Start โข Features โข Documentation โข Contributing
โจ Features
Core Capabilities
- ๐ Multi-Platform Support โ YouTube, TikTok, Instagram, SoundCloud, Spotify, Twitch, Dailymotion, Vimeo, Reddit
- ๐๏ธ Quality Control โ 4 preset levels (128kbps - 320kbps) plus original quality
- ๐ Format Conversion โ MP3, M4A, FLAC, WAV, OGG via FFmpeg
- ๐ Batch Processing โ Process multiple URLs with concurrent downloads (1-5 threads)
- ๐จ Dual Interface โ Professional CLI and intuitive GUI (Tkinter)
- ๐พ Smart Caching โ Archive system prevents duplicate downloads
- ๐ Network Features โ Proxy support, rate limiting, cookie-based authentication
- ๐ท๏ธ Rich Metadata โ Automatic ID3 tags and embedded artwork
- ๐ Plugin Architecture โ Extensible system for adding platforms
- โก Performance โ Concurrent downloads, retry logic, error recovery
Advanced Features
- Configuration Management โ INI-based config files with precedence system
- Comprehensive Logging โ Detailed logs with configurable verbosity
- Progress Tracking โ Real-time progress bars and status updates
- Dry Run Mode โ Preview downloads without actual processing
- Template System โ Customizable filename templates
- Error Handling โ Intelligent retry with exponential backoff
- Cross-Platform โ Windows, macOS, Linux support
๐ Requirements
- Python 3.8 or higher
- FFmpeg (latest stable version)
- Dependencies โ Automatically installed via pip
yt-dlp >= 2024.0.0rich >= 13.0.0
๐ Installation
Method 1: PyPI (Recommended)
Install the latest stable release from PyPI:
pip install tubetracks
Method 2: From Source
For development or latest features:
# Clone the repository
git clone https://github.com/jomardyan/TubeTracks.git
cd TubeTracks
# Install with make (recommended)
make install
# Or install manually
pip install -r requirements.txt
FFmpeg Installation
TubeTracks requires FFmpeg for audio conversion:
Automated Installation (PowerShell - all platforms):
pwsh ./install_ffmpeg.ps1
Platform-Specific:
Windows
# Using winget (Windows 10+)
winget install Gyan.FFmpeg
# Using chocolatey
choco install ffmpeg
macOS
# Using Homebrew
brew install ffmpeg
Linux
# Debian/Ubuntu
sudo apt update && sudo apt install ffmpeg
# Fedora
sudo dnf install ffmpeg
# Arch Linux
sudo pacman -S ffmpeg
Verify Installation
python --version # Should be 3.8+
ffmpeg -version # Verify FFmpeg is installed
tubetracks --version # Test TubeTracks installation
๐ฏ Quick Start
Command Line Interface
Basic Usage:
# Download single video (PyPI installation)
tubetracks "https://www.youtube.com/watch?v=VIDEO_ID"
# Download single video (from source)
python downloader.py "https://www.youtube.com/watch?v=VIDEO_ID"
# High quality FLAC
tubetracks -q high -f flac "VIDEO_URL"
# Download entire playlist
tubetracks -p "PLAYLIST_URL"
# Batch download from file
tubetracks -b urls.txt -o ./music
Advanced Usage:
# Custom output directory and filename template
tubetracks -o ~/Music -t "%(artist)s - %(title)s" "URL"
# Use proxy with rate limiting
tubetracks --proxy socks5://127.0.0.1:1080 --limit-rate 1M "URL"
# Preview without downloading
tubetracks --dry-run "URL"
# Maximum retries with custom archive
tubetracks --retries 5 --archive ~/my-archive.txt "URL"
Graphical User Interface
Launch the desktop application:
# PyPI installation
tubetracks-gui
# From source
python tubetracks_gui.py
# Or using Make
make gui
Python Library
Integrate TubeTracks into your Python projects:
from downloader import download_audio, DownloadResult
# Simple download
result = download_audio(
url="https://www.youtube.com/watch?v=dQw4w9WgXcQ",
output_dir="./downloads",
quality="high",
audio_format="mp3"
)
if result.success:
print(f"Downloaded: {result.output_path}")
else:
print(f"Failed: {result.error_message}")
See LIBRARY_USAGE.md for complete API documentation.
๐ Documentation
Configuration
TubeTracks supports configuration files for persistent settings:
Configuration Locations (in order of precedence):
~/.tubetracks.conf~/.config/tubetracks/config.conf./.tubetracks.conf
Example Configuration:
[download]
quality = high
format = mp3
output = ~/Music/TubeTracks
template = %(artist)s - %(title)s.%(ext)s
embed_metadata = true
embed_thumbnail = true
retries = 3
[archive]
use_archive = true
archive_file = ~/.tubetracks_archive.txt
[network]
# proxy = socks5://127.0.0.1:1080
# rate_limit = 1M
# cookies_file = ~/cookies.txt
[logging]
# log_file = ~/tubetracks.log
Manage Configuration:
# View current configuration
tubetracks --show-config
# Save current settings to config file
tubetracks --save-config
Quality Presets
| Preset | Bitrate | Best For |
|---|---|---|
low |
128 kbps | Podcasts, audiobooks, voice content |
medium |
192 kbps | General listening (default) |
high |
320 kbps | High-quality music |
best |
Original | Archival, lossless formats |
Supported Platforms
| Platform | Status | Playlist Support | Auth Required |
|---|---|---|---|
| YouTube | โ Stable | โ Yes | โ No |
| TikTok | โ Stable | โ Yes | โ No |
| โ Stable | โ No | โ ๏ธ Optional | |
| SoundCloud | โ Stable | โ Yes | โ No |
| Spotify | โ Stable | โ Yes | โ ๏ธ Optional |
| Twitch | โ Stable | โ No | โ No |
| Dailymotion | โ Stable | โ Yes | โ No |
| Vimeo | โ Stable | โ Yes | โ ๏ธ Optional |
| โ Stable | โ No | โ No |
View all available plugins:
tubetracks --list-plugins
Additional Documentation
- Library API Documentation โ Python API reference
- Plugin Development Guide โ Create custom platform plugins
- Changelog โ Version history and release notes
๐ ๏ธ Development
Setup Development Environment
# Clone repository
git clone https://github.com/jomardyan/TubeTracks.git
cd TubeTracks
# Install development dependencies
pip install -r requirements.txt
pip install -e ".[dev]"
Testing
# Run all tests
make test
# Quick validation
make smoke-test
# Coverage report
make coverage
# Test specific module
pytest tests/test_downloader.py -v
Code Quality
# Format code
make format
# Lint code
make lint
# Run all checks (format + lint + test)
make check
# Security scan
make security
Build and Distribution
# Build package
make build
# Clean build artifacts
make clean
# Build documentation
make docs
๐ค Contributing
We welcome contributions! TubeTracks is an open-source project that thrives on community involvement.
How to Contribute
- Fork the repository on GitHub
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes with clear commit messages
- Add tests for new functionality
- Run the test suite (
make test) - Submit a pull request with a clear description
Contribution Guidelines
- Follow the existing code style (enforced by
blackandisort) - Write clear, concise commit messages
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting PR
Development Resources
- Issue Tracker โ Report bugs or request features
- Pull Requests โ Submit code contributions
- Discussions โ Ask questions or share ideas
โ๏ธ Legal & Compliance
Disclaimer
TubeTracks is provided for educational and personal use only. Users are solely responsible for ensuring their usage complies with:
- Applicable copyright laws and intellectual property rights
- Platform terms of service and usage policies
- Local, national, and international regulations
The software developers and contributors assume no responsibility or liability for:
- Any misuse of this software
- Legal violations or consequences arising from usage
- Damages or losses incurred from using this software
User Responsibilities
By using TubeTracks, you acknowledge that:
โ
You have the legal right to download the content
โ
You will respect copyright laws and intellectual property rights
โ
You will comply with platform terms of service
โ
You understand the developers are not liable for your actions
License
This project is licensed under the GNU General Public License v3.0 or later (GPLv3+).
See LICENSE for the full license text.
๐ Acknowledgments
TubeTracks is built with and inspired by excellent open-source projects:
- yt-dlp โ Powerful media extraction engine
- FFmpeg โ Industry-standard audio/video processing
- Rich โ Beautiful terminal formatting
๐ Support
Getting Help
- ๐ Documentation โ Start here
- ๐ Issue Tracker โ Report bugs
- ๐ฌ Discussions โ Ask questions
Project Status
- Current Version: 1.5.1
- Status: Active development
- Python Support: 3.8, 3.9, 3.10, 3.11, 3.12
- Platforms: Windows, macOS, Linux
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tubetracks-1.5.1.tar.gz.
File metadata
- Download URL: tubetracks-1.5.1.tar.gz
- Upload date:
- Size: 60.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
daf1c2c9a9bd7b4f4a7d305c55a01bcb7e05e159663f8dbc809bc91edd31b33b
|
|
| MD5 |
c83fa61709d917534ee0fe675353755e
|
|
| BLAKE2b-256 |
10ee52be0a9a937ebe7b85a73cc49195767587ba16949a16553854d9a0522e44
|
File details
Details for the file tubetracks-1.5.1-py3-none-any.whl.
File metadata
- Download URL: tubetracks-1.5.1-py3-none-any.whl
- Upload date:
- Size: 48.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3bdbf4fc68d47584632b5cc9af0171b5886dd57a2cbde8c49f7194852b8f567a
|
|
| MD5 |
eda12ff4d79d6ae71dded4d1bf174050
|
|
| BLAKE2b-256 |
76b73fd6c061876b0dff2232d0426d7188ffc25177229c47b8ca6d6863acf9fe
|