Catalog and manage your YouTube Music playlists
A desktop application that fetches YouTube Music playlists and provides full playlist management capabilities using a modern PyQt6 GUI interface with seamless YouTube Music integration.
- Public Playlist Access: Enter any YouTube Music playlist ID to fetch and display tracks
- Personal Playlist Access: Full authentication system for your personal playlists
- Server-Side Modifications: Actually remove tracks from your YouTube Music playlists
- Real-Time Sync: Changes are synchronized with YouTube Music servers immediately
- Browser Header Extraction: Seamless login using your existing browser session
- Automatic Token Refresh: 30-minute monitoring with transparent token renewal
- Multi-Method Fallback: Robust authentication with multiple verification strategies
- Secure API Access: SAPISIDHASH authorization for official YouTube Music API
- Sortable Display: Sort by Position, Artist, or Track Name with instant feedback
- Direct Links: Open any track directly in YouTube Music with double-click
- Remove Functionality: Delete tracks from playlists with confirmation dialogs
- Modern GUI: Clean Qt-based interface with professional styling
- Status Tracking: Real-time feedback for all operations and sync status
- Dual Mode Operation: Works for both authenticated and unauthenticated users
- Automatic Refresh: Background token maintenance without user interruption
- Error Recovery: Comprehensive error handling with user-friendly messages
- Standalone Packaging: Create executables that run without Python installation
Current Version: v0.4.1 | Download the latest release for your platform:
- Download
playlistcat-windows-x64.zip - Extract and run
run-gui.bat
- Download
playlistcat-macos-x64.tar.gz - Extract and run
./run-gui.sh
- Download
playlistcat-linux-x64.tar.gz - Extract and run
./run-gui.sh
No Python installation required!
-
Install Python 3.8+ if not already installed
-
Create and activate a virtual environment:
python3 -m venv venv source venv/bin/activate # On Linux/Mac # or venv\Scripts\activate # On Windows
-
Install required packages:
pip install -r requirements.txt
Or install individually:
pip install ytmusicapi PyQt6 requests
./run.sh # Launch the application# Make sure virtual environment is activated
source venv/bin/activate
python src/main.py- Go to YouTube Music
- Open any playlist
- Copy the playlist ID from the URL (the part after
list=) - Example:
PLrAGlzNOGcAqFNKK0c4K8Z9U8QmFNKK0c
- Enter the playlist ID in the input field
- Click "Fetch Playlist" or press Enter
- Wait for the tracks to load
- Click "Login" in the Authentication section
- Follow the setup wizard to authenticate with YouTube Music
- Select from your personal playlists dropdown
- Or continue using manual playlist IDs
- Click column headers to sort
- Double-click any track to open in YouTube Music
- Use "Refresh" to update the current playlist
For detailed authentication setup, see AUTHENTICATION.md.
- Position: Original position in the playlist
- Artist: Track artist(s)
- Track Name: Name of the track
- YouTube Music Link: Click to open in browser
playlistcat/
βββ src/
β βββ __init__.py # Package initialization
β βββ main.py # GUI application (PyQt6)
β βββ utils.py # Utility functions
βββ venv/ # Virtual environment
βββ dist/ # Built executables (after packaging)
βββ requirements.txt # Python dependencies
βββ run.sh # Launch script
βββ build.sh/.bat # Build standalone executables
βββ test.py # System test script
βββ examples.py # Example playlist IDs
βββ PACKAGING.md # Packaging guide
βββ README.md # This file
```## Notes
- The application fetches public playlists only
- Private playlists will show an error
- Large playlists may take a few moments to load
- Sorting is done locally for better performance
## Troubleshooting
**"Playlist not found or is private"**:
- Verify the playlist ID is correct
- Make sure the playlist is public
- Try copying the ID again from the YouTube Music URL
**Import errors**:
- Make sure all dependencies are installed: `pip install -r requirements.txt`
- Check that you're using Python 3.8 or higher
**GUI won't start**:
- Install missing system packages: `sudo apt install python3-pyqt6` (Ubuntu/Debian)
- Check that your system supports GUI applications
**Qt platform plugin errors**:
- Install xcb libraries: `sudo apt install libxcb-cursor0` (Ubuntu/Debian)
- For headless environments, consider using the application in a virtual display
**Linux executable won't run (glibc version errors)**:
- The standalone executable requires glibc 2.31+ (Ubuntu 20.04+, Debian 11+)
- For older systems: install Python and run from source instead:
```bash
git clone https://github.com/Makistos/playlistcat.git
cd playlistcat
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python src/main.py
- Alternative: Use AppImage or Flatpak (coming soon)
- Python 3.8+
- PyQt6 (for GUI)
- ytmusicapi
- requests
- Internet connection
-
Clone and setup:
cd ytmcat python3 -m venv venv source venv/bin/activate pip install -r requirements.txt
-
Test the installation:
python test.py
-
Run the application:
./run.sh # Launch PlaylistCat -
Try example playlists:
python examples.py
- β Modern GUI: PyQt6 interface fully functional
- β Standalone Packaging: No Python required for end users
- β Cross-Platform: Works on Linux, macOS, and Windows
- β Smart Launcher: Easy to use
- β Comprehensive Testing: All systems verified
- β
Complete Documentation: Setup, usage, and packaging guides
python examples.py
Create executables that run on any machine without Python:
# Build standalone executables
./build.sh # Linux/macOS
build.bat # Windows
# Result: playlistcat(.exe)
# No Python installation required on target machines!See PACKAGING.md for detailed instructions.