Skip to main content

TubeTracks: Enhanced YouTube to MP3 Downloader with multi-platform support

Project description

๐ŸŽต TubeTracks

PyPI version PyPI downloads Python 3.8+ License: GPL v3 Build Status Code style: black

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.0
    • rich >= 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):

  1. ~/.tubetracks.conf
  2. ~/.config/tubetracks/config.conf
  3. ./.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
Instagram โœ… Stable โŒ No โš ๏ธ Optional
SoundCloud โœ… Stable โœ… Yes โŒ No
Spotify โœ… Stable โœ… Yes โš ๏ธ Optional
Twitch โœ… Stable โŒ No โŒ No
Dailymotion โœ… Stable โœ… Yes โŒ No
Vimeo โœ… Stable โœ… Yes โš ๏ธ Optional
Reddit โœ… Stable โŒ No โŒ No

View all available plugins:

tubetracks --list-plugins

Additional Documentation


๐Ÿ› ๏ธ 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

  1. Fork the repository on GitHub
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes with clear commit messages
  4. Add tests for new functionality
  5. Run the test suite (make test)
  6. Submit a pull request with a clear description

Contribution Guidelines

  • Follow the existing code style (enforced by black and isort)
  • Write clear, concise commit messages
  • Add tests for new features
  • Update documentation as needed
  • Ensure all tests pass before submitting PR

Development Resources


โš–๏ธ 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

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

โฌ† Back to Top

Made with โค๏ธ by the TubeTracks community

Star on GitHub

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tubetracks-1.5.1.tar.gz (60.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tubetracks-1.5.1-py3-none-any.whl (48.2 kB view details)

Uploaded Python 3

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

Hashes for tubetracks-1.5.1.tar.gz
Algorithm Hash digest
SHA256 daf1c2c9a9bd7b4f4a7d305c55a01bcb7e05e159663f8dbc809bc91edd31b33b
MD5 c83fa61709d917534ee0fe675353755e
BLAKE2b-256 10ee52be0a9a937ebe7b85a73cc49195767587ba16949a16553854d9a0522e44

See more details on using hashes here.

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

Hashes for tubetracks-1.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3bdbf4fc68d47584632b5cc9af0171b5886dd57a2cbde8c49f7194852b8f567a
MD5 eda12ff4d79d6ae71dded4d1bf174050
BLAKE2b-256 76b73fd6c061876b0dff2232d0426d7188ffc25177229c47b8ca6d6863acf9fe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page