Managing Theme Music, Posters, and Art with the WebuI and API

Theme songs, I found, behave similarly to posters and art. For Shows the /themes endpoint shows you information on the show’s provided theme song. You can use the same methods to upload a poster to upload a new theme song. (DO NOT DO THIS!)Though I’ve only tested and been able to upload mp3 files from a local filepath. Once uploaded the /themes endpoint will show the uploaded item and the theme song uploaded will become the default (DO NOT DO THIS!).

The main issue is that the methods used to select a poster and art do not work and do not exist for selecting a theme song. Either never added, not allowed, or I haven’t found yet. So I have no way to select the default, provided, theme song again. The only fix is to do the plex dance on the item. For Shows, the default theme show should return as new metadata is refreshed. However, much like with posters and art the previously uploaded themes will remain stored the xml of the item, even after a plex dance. This is true for items like Playlist, Collections, Photos, Albums, Movies, Artists, etc. I assume anything :slight_smile: You can upload a theme song to a Movie and in order to have this theme play stop playing you have to dance.

API and WebUI Requests

  1. Allow or provide params to delete or remove uploaded posters, arts, and theme songs

    • This would be nice for the webUI as well
  2. Allow for more items to have the /posters, /arts, and /themes endpoints

    • Some items like Tracks do not seem to have a /posters endpoint but a poster can be uploaded
  3. Allow or provide params for selection of /posters, /arts, and /themes for other items

    • Uploading works fine :slight_smile:
  4. Allow selection, deletion, and upload functionality of posters, art, theme music for more items via the webui

    • Theme songs for Playlists, Seasons, Movies, Albums, Artists, Collections, etc.

Are you able to manually add theme music to movies?

I’ve tried getting theme music for movies with my agent. It downloads the mp3 and if I rename the file to add the .mp3 back, I can play it fine in VLC. But… It won’t play in any plex client.

Sorry for the late reply. Last time when I tested it, yes. I could add a theme to anything and it would play when using a browser. I only performed limited testing and in trying to remember I can’t say for sure if I tested with any other player. I have a foggy memory that I might have tried on a Roku and the windows Plex Player and was successful. Take that with a grain of salt as that was some builds ago and I’m sure some things would have changed.

Supposedly they have added this as a native feature now. I am skeptical that I can use the agent to add the theme music, without the workaround using python plex api that you previously helped me with! I think it is only working as local extras. I will test and try to let you know my results.

Themes are now working with movies, using the same method as with tv themes just not automated. Add a theme.mp3 to the movies folder, activate prefer local metadata in the library settings, refresh metadata and that’s it. Had it working on Xbox, Apple TV, TVos, Android and iOs Phones just not Roku the last time I checked. No love for collection themes yet though, there is a workaround which sounds very similar to the one mentioned above but I couldn’t quite understand how to get started from the instructions I found. Can you shed any light on it and get me started? Just want to add themes to collections and it’s the last thing that’s missing.

I am not really interested in using local metadata, and from my understand theme.mp3 only works if the movie is in it’s own folder. I need the metadata agent to be able to add movie theme music.

This is the pull request I made for the plexapi (Add ability to upload theme music by ReenigneArcher · Pull Request #658 · pkkid/python-plexapi · GitHub). I think they didn’t want to implement it because it’s not easy to reverse if you add the wrong mp3.

I had to make a bunch of other changes beyond this to get it to work within my metadata agent as Plex is stuck on Python 2.7, but if you’re running outside of an agent the code there should be enough for you.

this would be quite nice to have

Consider my support added!