Skip to content

Instantly share code, notes, and snippets.

@blacktwin
Last active April 16, 2024 02:47
Show Gist options
  • Save blacktwin/f10e0a1e85af00e878963b4570a99054 to your computer and use it in GitHub Desktop.
Save blacktwin/f10e0a1e85af00e878963b4570a99054 to your computer and use it in GitHub Desktop.
Download theme songs from Plex TV Shows.
'''
Download theme songs from Plex TV Shows. Theme songs are mp3 and named by shows as displayed by Plex.
Songs are saved in a 'Theme Songs' directory located in script's path.
'''
from plexapi.server import PlexServer
# pip install plexapi
import os
import re
import urllib
## Edit ##
PLEX_URL = 'http://localhost:32400'
PLEX_TOKEN = 'xxxxx'
TV_LIBRARY = 'TV Shows' # Name of your TV Show library
## /Edit ##
plex = PlexServer(PLEX_URL, PLEX_TOKEN)
# Theme Songs url
themes_url = 'http://tvthemes.plexapp.com/{}.mp3'
# Create /Theme Songs/ directory in same path as script.
out_path = os.path.join(os.path.dirname(__file__), 'Theme Songs')
if not os.path.isdir(out_path):
os.mkdir(out_path)
# Get episodes from TV Shows
for show in plex.library.section(TV_LIBRARY).all():
# Remove special characters from name
filename = '{}.mp3'.format(re.sub('\W+',' ', show.title))
# Set output path
theme_path = os.path.join(out_path, filename)
# Get tvdb_if from first episode, no need to go through all episodes
tvdb_id = show.episodes()[0].guid.split('/')[2]
# Download theme song to output path
urllib.urlretrieve(themes_url.format(tvdb_id), theme_path)
@xmha97
Copy link

xmha97 commented Jan 9, 2022

@dukejansen
Copy link

Seems like this does not work. The URLs it generates just lead to a 404.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment