Files
journey-fm-playlist/README.md
T

4.6 KiB

Journey FM Playlist Creator

Desktop app + script that pulls recently played songs from Journey FM / Spirit FM and updates a Plex playlist.

What It Does

  • Scrapes recently played songs from:
    • https://www.myjourneyfm.com/recently-played/
    • https://spiritfm.com/ajax/now_playing_history.txt
  • Matches tracks in your Plex Music library with title/artist normalization.
  • Creates or updates your configured Plex playlist.
  • Avoids adding duplicates already in the target playlist.
  • Tracks run history in playlist_history.db.
  • Writes missing songs to amazon_buy_list.txt with Amazon search links.
  • Provides a GUI with system tray support, settings, log viewer, history, stats, analytics, and CSV export.

Requirements

  • Python 3.10+
  • Plex account token + reachable Plex server
  • A Chrome/Chromium browser for Selenium scraping

Dependencies are listed in requirements.txt (GUI uses PySide6).

Install

Windows

Simple install from GitHub (recommended):

  1. Open PowerShell.
  2. Run:
git clone https://github.com/nmemmert/journey-fm-playlist.git
cd journey-fm-playlist
.\install_windows.bat
  1. Launch from:
    • Start Menu: Journey FM Playlist Creator
    • Desktop shortcut: Journey FM Playlist Creator

No Git? Download ZIP from GitHub (Code -> Download ZIP), extract, open PowerShell in that folder, and run:

.\install_windows.bat

If script execution is blocked:

powershell -NoProfile -ExecutionPolicy Bypass -File .\install_windows.ps1

Optional installer switches:

  • -NoDesktopShortcut skips Desktop shortcut creation
  • -NoStartMenuShortcut skips Start Menu shortcut creation

Manual install (advanced):

py -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python journey_fm_app.py

Installer files:

  • install_windows.bat - one-click installer launcher
  • install_windows.ps1 - installer logic

Linux

Quick setup:

./install.sh

Manual setup:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python journey_fm_app.py

Configuration

Use the GUI setup wizard (first launch) or edit config.json directly.

Example config.json:

{
  "PLEX_TOKEN": "your-plex-token",
  "SERVER_IP": "192.168.1.100",
  "PLAYLIST_NAME": "Journey FM Recently Played",
  "AUTO_UPDATE": true,
  "UPDATE_INTERVAL": 15,
  "UPDATE_UNIT": "Minutes",
  "SELECTED_STATIONS": "journey_fm,spirit_fm"
}

You can also provide runtime env vars:

  • PLEX_TOKEN
  • SERVER_IP
  • PLAYLIST_NAME

Optional browser override:

  • CHROME_BINARY (absolute path to Chrome/Chromium executable)

If CHROME_BINARY is not set, the app auto-detects browser locations for Windows/Linux/macOS and then falls back to PATH.

Running Without GUI

Run one update cycle from CLI:

python main.py

GUI Notes

  • Minimize-to-tray on close when tray is available.
  • Tray menu supports Show / Update Now / Quit.
  • Auto-update runs on configurable interval.
  • Works on X11 and Wayland Linux sessions.

Output Files

  • config.json - runtime settings shared by GUI and CLI
  • playlist_history.db - update history and statistics data
  • playlist_log.txt - GUI update logs
  • amazon_buy_list.txt - missing songs with Amazon links
  • playlist_export.csv - exported playlist from GUI action

Troubleshooting

  • Server not found: verify SERVER_IP, Plex availability, and that you are signed in with the correct account token.
  • No songs added: confirm scraped songs exist in your Plex library and metadata is correct.
  • Browser startup errors: install Chrome/Chromium or set CHROME_BINARY explicitly.
  • No tray icon: some desktop environments disable or hide legacy trays.
  • GUI fails at startup (libGL.so.1 / PySide6 import errors): install missing system graphics libs (Linux example: sudo apt install libgl1) and reinstall Python deps with pip install -r requirements.txt.

Core Files

  • journey_fm_app.py - desktop GUI and tray app
  • main.py - scraping + Plex update pipeline
  • requirements.txt - Python dependencies
  • install.sh - Linux setup helper

Pre-Release Checklist

  • Verify config.json has valid PLEX_TOKEN, SERVER_IP, and PLAYLIST_NAME.
  • Run one CLI update: python main.py and confirm songs/history are written.
  • Run GUI update: python journey_fm_app.py and verify status/log output updates.
  • Confirm tray behavior (minimize to tray, Show/Update/Quit actions).
  • On Windows/Linux, confirm Chrome/Chromium detection or set CHROME_BINARY.
  • Export playlist once and verify playlist_export.csv is created.