Co-authored-by: nmemmert <67961292+nmemmert@users.noreply.github.com>
Journey FM Playlist Creator
A cross-platform desktop application that automatically creates Plex playlists from recently played songs on My Journey FM radio station.
✨ Features
- System Tray Integration: Runs minimized in the taskbar/system tray
- Automatic Updates: Configurable automatic playlist updates
- Cross-Platform: Works on Windows and Linux
- Log Viewer: Built-in log viewer for monitoring updates
- Easy Setup: Guided setup wizard for initial configuration
- Duplicate Prevention: Smart duplicate detection and prevention
- Artist Matching: Handles featured artists, punctuation, and name variations
🚀 Quick Start
Windows
-
Install Dependencies
pip install -r requirements.txt -
Create Application Icon
python create_icon.py -
Run the Application
python journey_fm_app.pyOr use the batch file:
run_app.bat
Linux
-
Run the Installer
./install.shThis will:
- Install Python dependencies
- Set up virtual environment
- Install Chromium browser
- Create desktop icon
- Add to applications menu
-
Launch from Menu
- Search for "Journey FM Playlist" in your applications menu
- Or run:
./journey_fm_app.sh
⚙️ Configuration
First-Time Setup
When you first run the application, a setup wizard will guide you through:
- Plex Token: See below for how to get your Plex token
- Server IP: Your Plex server's local IP address (e.g., 192.168.1.100)
- Playlist Name: Name for your Journey FM playlist (default: "Journey FM Recently Played")
- Auto-Update Settings: Enable automatic updates and set intervals
How to Get Your Plex Token
- Go to https://plex.tv/claim in your web browser
- Sign in with your Plex account
- Copy the claim token from the page (it looks like:
pU-mHWYUZU6iXJFhJyA) - Paste it into the application setup
Note: This token is used to authenticate with your Plex server. Keep it secure and don't share it.
Manual Configuration
You can also edit settings anytime through the Settings menu in the application.
📱 System Tray Features
- Minimize to Tray: The app minimizes to system tray instead of closing
- Right-click Menu:
- Show: Restore the main window
- Update Now: Manually trigger playlist update
- Quit: Exit the application
- Double-click: Restore the main window
- Notifications: Get notified when automatic updates complete
📋 Log Viewer
The built-in log viewer shows:
- Update timestamps
- Songs added to playlist
- Error messages
- Update duration
- Connection status
Logs are automatically saved to playlist_log.txt for external viewing.
🔄 Automatic Updates
Configure automatic updates to run every:
- 5-120 minutes
- Hours (up to several hours)
The app will:
- Run in the background
- Show tray notifications when updates complete
- Prevent duplicate songs
- Handle connection errors gracefully
🛠️ Troubleshooting
Common Issues
"Server not found"
- Ensure your Plex server is running
- Check that you've claimed the server at http://[SERVER_IP]:32400/web
- Verify the server IP address in settings
"No matching tracks found"
- Ensure your music library is properly scanned in Plex
- Check that song metadata matches (artist names, titles)
- The app handles variations like "&" vs "and", featured artists, etc.
System tray not working
- On Linux, ensure you have a system tray (like KDE/GNOME)
- Some desktop environments may need additional packages
Manual Testing
Test the core functionality:
python main.py
This runs the update once without the GUI.
📁 Project Structure
journey-fm-playlist/
├── journey_fm_app.py # Main GUI application
├── main.py # Core update logic
├── create_icon.py # Icon generator
├── run_app.bat # Windows launcher
├── journey_fm_app.sh # Linux launcher
├── requirements.txt # Python dependencies
├── config.json # Configuration (auto-generated)
├── playlist_log.txt # Update logs
├── icon.png # Application icon
└── README.md # This file
🔧 Development
Adding Features
The application is built with PyQt6 for cross-platform compatibility. Key components:
MainWindow: Main application windowSystemTrayApp: Tray icon and menuSetupWizard: Configuration wizardLogViewer: Log display widgetUpdateWorker: Background update thread
Building Standalone Executables
Windows (PyInstaller)
pip install pyinstaller
pyinstaller --onefile --windowed --icon=icon.ico journey_fm_app.py
Linux (PyInstaller)
pip install pyinstaller
pyinstaller --onefile --icon=icon.png journey_fm_app.py
📋 Requirements
- Python: 3.8+
- PyQt6: GUI framework
- Selenium: Web scraping
- PlexAPI: Plex integration
- BeautifulSoup4: HTML parsing
System Requirements
- Windows: 10+ with system tray support
- Linux: Modern desktop environment with system tray
- Plex Server: Local or remote Plex server access
🤝 Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test on both Windows and Linux
- Submit a pull request
📄 License
This project is open source. Feel free to use and modify as needed.
🆘 Support
If you encounter issues:
- Check the application logs
- Verify your Plex server connection
- Ensure all dependencies are installed
- Test with
python main.pyfirst
For bugs or feature requests, please create an issue on GitHub.
