How I Turned Plexamp into a Full Fledged Streaming Service for My Users
With streaming subscription fees steadily climbing across Spotify, Apple Music, and Youtube Music, moving my music collection entirely to a self-hosted server running Plex and Plexamp seemed like an obvious financial win. However, once my family and friends started using it, we all noticed the missing features. We missed the discovery engines, effortless playlist sharing, and algorithmic radios that make modern streaming platforms feel alive. Plexamp offers an incredible playback engine and native sonic analysis, but raw folder browsing and static genre tags do not replicate the magic of streaming services. Rather than accepting those limitations, I decided to bridge the gap by pairing modern AI coding tools with Python to build a suite of custom automation daemons. By leveraging the YouTube Music recommendation algorithms and utilizing my Deezer subscription through Deemix to source missing FLAC files, I transformed my private Plex setup into a dynamic, multi-user streaming ecosystem.
Building the Catalog Foundation: Automated Global Playlist Syncing & Custom Artwork
When moving multiple users over from their streaming platforms, the biggest challenge was avoiding an empty, intimidating search bar. To solve this, I manually curated over 100 public YouTube Music playlists covering everything from throwback decades and classic Latin to specific mood mixes and seasonal hits. I specifically chose YouTube Music over Spotify or Apple Music because I found its recommendation algorithm to be far superior, providing the best suggestions as I built each set. To give everything a unified, premium look, I designed all the playlist covers from scratch in Canva, drawing stylistic inspiration from streaming editorial art while keeping the designs original. A background synchronization daemon continuously monitors these public links, comparing every track against my local Plex database and using Deemix to pull down any missing lossless releases. Once updated, the script mirrors the newly assembled playlist and high-res cover art across every shared user profile on the server, ensuring everyone wakes up to a fresh, active library.
On-Demand Discovery: The 5-Star Dynamic Radio Engine
Plex’s native station features are a great starting point, but they can quickly feel repetitive if your local library lacks deep cut variety. To give users real time radio discovery, I built an interactive daemon that turns Plexamp’s rating system into an algorithmic trigger. Whenever a user rates any track with 5 stars, the background script detects the rating, extracts the artist and title, and queries YouTube Music’s watch playlist API endpoint to pull YouTube’s authentic recommendation queue. The script cross references those suggestions against our local library, automatically queueing and downloading any missing tracks via Deemix in the background to ensure the station is completely populated. Visually, the script extracts the seed song’s cover art, applies a Gaussian blur, overlays custom bold typography, and uploads the graphic to Plex as the official cover. The result is a dedicated, personalized “Mix: Song Title” radio station delivered directly to that user’s library within minutes.
Get Sonny Olivarez’s stories in your inbox
Join Medium for free to get updates from this writer.
Artist Deep Dives: The “Presenting” Spotlight System
Streaming platforms excel at artist discovery through “Hits” or “This Is” playlists, so I built an automated counterpart called Presenting playlists. Every twelve hours, an audit daemon scans listening activity across all shared profiles to identify artists who have at least five distinct tracks with high play counts or top ratings. Once an artist crosses this threshold, the script queries Deezer’s API to fetch that artist’s top 100 most popular tracks worldwide. Any songs missing from the local library are batched and fetched via Deemix, ensuring the complete discography is permanently available. To finish the playlist, the daemon takes the artist photo saved in the music library, applies it to a blank template, and stamps the artist’s name in clean typography. The end result is a tailored, magazine-style artist spotlight playlist pushed straight to the listener’s dashboard.
Daily Mixes: Discovery and BPM-Driven Sonic Vibes
Keeping a local server feeling fresh requires a balance between discovering new releases and rediscovering older favorites. My daily mix engine scans recent listening logs to extract artist seeds, fetches discovery tracks via YouTube Music, and weaves in “forgotten classics”. For mood based listening, the script bypasses external APIs entirely and queries Plex’s native sonic analysis metadata, reading the exact track tempo and energy levels. Fast tracks above 110 BPM are channeled into a high energy playlist, while songs below 90 BPM are channeled into a relaxing chill playlist.
In-App Importing: Frictionless Playlist Cloning
Migrating existing music collections from other streaming platforms is usually a tedious chore that requires third-party transfer web apps. To streamline this for my users, I created a headless clone engine that operates directly inside Plexamp. A user simply creates an empty playlist inside the app named “Playlist” and pastes any shareable URL from Spotify, Apple Music, YouTube Music, or Deezer directly into the summary field. The daemon intercepts this trigger, scrapes the full tracklist from the provided link, matches what we already have, and sends any missing albums to Deemix for automated background retrieval. The script then fully mirrors the playlist into the users playlist collection.
Quality Control: Smart Likes and the 1-Star Play Count Reset Sweeper
Maintaining personalized libraries also requires automated cleanup to keep recommendation data clean. A background “likes” daemon monitors playback, automatically adding any track with six or more plays or a high rating into an official “My Likes” collection while using track fingerprinting to eliminate duplicate versions. Likewise, removing unwanted songs or bad recommendations on a private server is usually frustrating, so I implemented a 1 star purge workflow. Whenever a user rates a song 1 star, a sweeper catches the event within 60 seconds, immediately resets the play count history to zero to pull it from their “My Likes” playlist, and purges the track from all existing playlists for that user. The script then clears the star rating back to neutral, giving users an effortless way to scrub tracks from their playback profile without ever needing server admin privileges.
Final Thoughts
Combining Plexamp’s playback engine with custom automation proves that self hosting your music doesn’t mean sacrificing the modern conveniences of streaming platforms. Utilizing AI as a development partner allowed me to write and debug scripts far faster than building everything by hand, turning complex API data into a seamless listener experience. By using external APIs strictly for intelligence and discovery while keeping all audio files hosted locally, you get the absolute best of both worlds: uncompromised FLAC audio quality and an intuitive listening experience that keeps your users engaged every single day.




