A powerful, multi-threaded music downloader with support for YouTube, Spotify, SoundCloud, and 1000+ sites
Features β’ Installation β’ Quick Start β’ Documentation
- Spotify: Download tracks, albums, and playlists
- YouTube Music: Videos and entire playlists
- SoundCloud: Individual tracks and reposts
- YouTube: Full support with playlist extraction
- 1000+ Sites: Reddit, Twitter, Instagram, and more via yt-dlp
- Multi-threaded Downloads: Configurable worker pool (up to 8 concurrent threads)
- Smart Deduplication: Never download the same track twice
- Batch Operations: Download hundreds of songs in one go
- Concurrent Fragment Downloads: Faster streaming optimization
- Genre Categorization: Automatic genre detection from metadata
- Song Catalog: Unique IDs and comprehensive metadata storage
- Smart Organization: Organize downloaded files by genre automatically
- Search & Filter: Find songs in your catalog by title, artist, or genre
- Proxy Support: Use HTTP/SOCKS proxies with authentication
- IP Detection: Monitor your current IP and network status
- File Browser: Terminal-like interface for managing downloads
- Custom Save Locations: Choose where to save your music
- Audio Quality Control: 128β320 kbps MP3 encoding
- Album Art Embedding: Automatic thumbnail embedding
- Modern Web UI: Beautiful Gradio interface
- Real-time Progress: Watch downloads happen in real-time
- Archive ZIP Creation: Auto-package downloads
- Download History: Track all your download sessions
- Detailed Statistics: View success rates and session stats
| Requirement | Version |
|---|---|
| Python | 3.8 or higher |
| FFmpeg | Latest version |
| RAM | 512 MB minimum |
| Disk Space | Depends on downloads |
git clone https://github.com/Xer0bit/f-youtubeMusic.git
cd f-youtubeMusic# Create virtual environment
python -m venv venv
# Activate it
# On Linux/macOS:
source venv/bin/activate
# On Windows:
venv\Scripts\activatepip install -r requirements.txtUbuntu/Debian:
sudo apt-get update && sudo apt-get install -y ffmpegmacOS:
brew install ffmpegWindows:
# Using Chocolatey:
choco install ffmpeg
# Or download from: https://ffmpeg.org/download.htmlffmpeg -version
python -c "import yt_dlp, gradio, spotdl; print('β
All dependencies installed!')"python app.pyNavigate to: http://localhost:7860
| Tab | Source | Example |
|---|---|---|
| Download | YouTube & More | URLs or search queries |
| Spotify | Spotify | Track/Album/Playlist URLs |
| File Browser | Manage Files | Browse & organize |
| Catalog | Your Library | Search & organize by genre |
Paste these into the Download tab:
https://www.youtube.com/watch?v=dQw4w9WgXcQ
https://soundcloud.com/artist/track
The Weeknd - Blinding Lights
Queen - Bohemian Rhapsody
- Paste URL or search query (one per line)
- Select audio quality (128-320 kbps)
- Enable album art if desired
- Click Download
- Monitor real-time progress
- Download ZIP when complete
- Go to Spotify tab
- Paste Spotify URL or search query:
- Track:
https://open.spotify.com/track/... - Album:
https://open.spotify.com/album/... - Playlist:
https://open.spotify.com/playlist/... - Search:
The Weeknd - Blinding Lights
- Track:
- Select audio format and quality
- Click Download from Spotify
- Go to Catalog tab
- View statistics and genre distribution
- Search songs by title/artist
- Filter by genre
- Click Organize by Genre to auto-organize files
- Go to File Browser tab
- Navigate directories with terminal-like commands
- Create folders
- Set custom download location
- View directory tree
# Number of concurrent downloads (default: 8)
export MUSIC_DL_WORKERS=6
# Socket timeout in seconds (default: 15)
export MUSIC_DL_TIMEOUT=30
# Root download directory (default: ~/music_downloads)
export MUSIC_DL_ROOT="/mnt/external_drive/music"
python app.py| Quality | Bitrate | File Size (3min) |
|---|---|---|
| Low | 128 kbps | 2.8 MB |
| Medium | 192 kbps | 4.2 MB |
| High | 256 kbps | 5.6 MB |
| Best | 320 kbps | 7.0 MB |
- β YouTube & YouTube Music
- β Spotify
- β SoundCloud
- β Apple Music (limited)
- β Reddit
- β Twitter/X
- β TikTok
- β Instagram
- β Twitch
- β Vimeo
- β Dailymotion
- β And 1000+ more sites
- Go to Network tab
- Select proxy type (HTTP, HTTPS, SOCKS4, SOCKS5)
- Enter proxy host and port
- Add credentials if needed
- Click Apply Proxy then Test Connection
- View current IP address
- Check ISP and location
- Monitor proxy status in real-time
~/music_downloads/
βββ batch_20250102_143022/
β βββ Song One.mp3
β βββ Song Two.mp3
β βββ Another Song.mp3
βββ batch_20250102_143022.zip
β
βββ spotify_20250102_150000/
β βββ Downloaded Spotify Tracks.mp3
β
βββ by_genre/
βββ Electronic/
β βββ track1.mp3
β βββ track2.mp3
βββ Hip-Hop/
β βββ track3.mp3
βββ Pop/
βββ track4.mp3
# Verify FFmpeg is installed
ffmpeg -version
# If not installed, install it:
# Ubuntu: sudo apt install ffmpeg
# macOS: brew install ffmpeg# Increase concurrent workers
export MUSIC_DL_WORKERS=8
python app.py
# Or reduce timeout if you have good connectivity
export MUSIC_DL_TIMEOUT=10# Find process using port 7860
lsof -i :7860
# Kill it (replace PID with actual number)
kill -9 <PID>
# Or set a different port in app.pyThis is normal! The app prevents duplicates using an archive.
# To re-download, clear the archive:
# Click "Clear Archive" in the Files tab
# Or manually delete:
rm ~/music_downloads/downloaded.archive# Ensure spotdl is installed
pip install spotdl
# Verify it works
spotdl --version| Tab | Features |
|---|---|
| Download | YouTube, SoundCloud, 1000+ sites, search queries, batch downloads |
| Spotify | Tracks, albums, playlists, search, quality selection |
| History | Recent sessions, statistics, success rate tracking |
| Files | Browse, organize, set download location, view file list |
| Settings | Quality, album art, auto-ZIP, history size |
| Network | Proxy configuration, IP detection, network monitoring |
| Catalog | Genre stats, song search, genre filtering, organization |
| File Browser | Terminal interface, directory navigation, tree view |
- Download music you own or have permission to download
- Personal use and archival
- Content you created or have rights to
- Licensed music and public domain content
- Bypassing copyright protection
- Redistributing copyrighted content
- Commercial use without permission
- Violating platform terms of service
Always support artists by purchasing their music and attending concerts! π€
- Use
MUSIC_DL_WORKERS=8on systems with good bandwidth - Download during off-peak hours
- Use a wired connection instead of WiFi
- Use
MUSIC_DL_WORKERS=2to reduce strain - Lower quality (192 kbps) to reduce file sizes
- Download one playlist at a time
- Use the batch import feature
- Let it run overnight for massive playlists
- Monitor the History tab for completion
pip install --upgrade yt-dlppip install --upgrade spotdlpip install --upgrade gradiopip install --upgrade -r requirements.txtContributions are welcome! Here's how to contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- β Added Spotify support (tracks, albums, playlists)
- β Enhanced genre categorization system
- β Improved file browser with terminal interface
- β Network monitoring and proxy support
- β Music catalog with search and organization
- Added proxy support with IP detection
- Genre categorization for downloads
- Music catalog system
- File browser interface
- Batch download support
- Auto ZIP creation
- Archive-based deduplication
This project is licensed under the MIT License - see the LICENSE file for details.
- π Documentation: Check the docs/ folder
- π Issues: Report bugs on GitHub Issues
- π¬ Discussions: Ask questions in GitHub Discussions
- π§ Email: Contact the maintainers
If this project helped you, please give it a β star on GitHub!
