archive | ||
fun | ||
killstream | ||
maps | ||
notify | ||
reporting | ||
utility | ||
README.md |
JBOPS - Just a Bunch Of Plex Scripts
Most of these scripts utilize a combination of PlexPy, python-plexapi, and requests.
Notice:
These scripts have not been tested using Tautulli. The improvements in Tautulli may cause errors with scripts that pull data from Tautulli, especailly metadata. If you come into a problem please create an issue and reference the script that errors out with Tautulli. Once Tautulli is out of Beta I'll look into which scripts need updated and which can be removed.
Scripts List
Scripts pulled from my gist profile.
Maps
Example | File | Description |
---|---|---|
Maps | Using PlexPy data, draw a map connecting Server to Clients based on IP addresses. |
Fun
Gist | File | Description |
---|---|---|
aired_today_playlist | Create a Plex Playlist with what was aired on this today's month-day, sort by oldest first. If Playlist from yesterday exists delete and create today's. If today's Playlist exists exit. | |
plexapi_haiku | Create a hiaku from titles found in Plex. |
Kill stream
Gist | File | Description |
---|---|---|
wait_kill_pause_notify_main | Receive session_key from PlexPy when paused. Use sub-script wait_kill_pause_notify_sub to wait for X time then check if still paused. If so, kill. Toggle whether you'd like to be notified through a PlexPy notification agent. | |
watch_limit | Kill streams if user has watched too much Plex Today. | |
play_limit | Kill streams if user has played too much Plex Today. | |
kill_time | Limit number of plays of TV Show episodes during time of day. Idea is to reduce continuous plays while sleeping. | |
kill_trans_pause_notify | Kill Plex paused video transcoding streams and receive notification. | |
ip_whitelist | Receive session_key and IP from PlexPy when playback starts. Use IP to check against whitelist. If not in whitelist use session_key to determine stream and kill. | |
kill_all_more_than | If user has 2 or more concurrent streams kill all streams | |
kill_else_if_buffering | Kill concurrent transcode streams of other users if Admin user is experiencing buffering warnings from PlexPy. | |
kill_more_than | If user has 2 or more concurrent streams and the IP of the 2nd stream differs from 1st kill 2nd. If 2nd stream IP is the same as 1st stream don't kill. | |
kill_outsider_stream | Kill stream if user is outside of local network. | |
kill_plex_streams | Kill all Plex streams for whatever reason you want. | |
kill_session_bitrate | Kill stream if bitrate is greater than 4 Mbps | |
kill_trans_exp_audio | Kill Plex video transcoding streams only. All audio streams are left alone. Kill message based on platform. | |
kill_trans_pause | Kill Plex paused video transcoding streams using PlexPy. |
Notify
Gist | File | Description |
---|---|---|
notify_delay | Delay Notification Agent message for concurrent streams. | |
find_unwatched_notify | Find what was added TFRAME ago and not watched and notify admin using PlexPy. | |
notify_added_custom | Send an email with what was added to Plex in the past week using PlexPy. Email includes title (TV: Show Name: Episode Name; Movie: Movie Title), time added, image, and summary. | |
notify_fav_tv_all_movie | Notify users of recently added episode to show that they have watched at least LIMIT times via email. Also notify users of new movies. | |
notify_newip | If a new IP is found send notification via the Email Notification Agent. Email contains User's Avatar image, link to location, IP address, and User's Email address. | |
notify_on_added | Send an Email notification when a specific show is added to Plex. Add shows to list that you want notifications for. | |
notify_user_favorites | Notify users of recently added episode to show that they have watched at least LIMIT times via email. | |
notify_user_newip | Notify user that their account has been accessed by a new IP. IP is cleared to make sure notification is sent again. | |
twitter_notify | Post to Twitter when TV/Movie is added to Plex. Include custom message and embed poster image. Option to tweet to TWITTER_USER if title is inside TITLE_FIND. |
Utility
Gist | File | Description |
---|---|---|
plex_api_parental_control | Set as cron or task for times of allowing and not allowing user access to server. Unsharing will kill any current stream from user before unsharing. | |
plex_api_share | Share or unshare libraries | |
bypass_auth_name | Use PlexPy to pull last IP address from user and add to List of IP addresses and networks that are allowed without auth in Plex. | |
delete_watched_TV | From a list of TV shows, check if users in a list has watched shows episodes. If all users in list have watched an episode of listed show, then delete episode. | |
find_plex_meta | Find location of Plex metadata. | |
find_unwatched | Find what was added TFRAME ago and not watched using PlexPy. | |
grab_gdrive_media | Grab media (videos, pictures) from Google Drive. All videos and pictures were automatically synced from Google Photos to Google Drive. Puts media into MEDIA_TYPE/YEAR/MONTH-DAY/FILE.ext directory structure. | |
plex_api_poster_pull | Pull Movie and TV Show poster images from Plex. | |
plex_imgur_dl | Pull poster images from Imgur and places them inside Shows root folder. | |
plex_theme_songs | Download theme songs from Plex TV Shows. | |
plexapi_delete_playlists | Delete all playlists from Plex using PlexAPI. | |
plexapi_search_file | Find full path for Plex items. | |
refresh_next_episode | Refresh the next episode of show once current episode is watched. | |
remove_watched_movies | Find Movies that have been watched by a list of users. If all users have watched movie then delete. | |
stream_limiter_ban_email | This is indented to restrict a user to the LIMIT amount of concurrent streams. User will be warned, punished, and banned completely if violations continue. |
Reporting
Gist | File | Description |
---|---|---|
weekly_stats_reporting | Pull library and user statistics of last week. | |
added_to_plex | Find when media was added between STARTFRAME and ENDFRAME to Plex through PlexPy. | |
check_play | Check if user has play a file more than 3 times but has not finished watching. Hoping to catch play failures. | |
check_plex_log | Checking plex logs for debug code WARN and 'Failed to obtain a streaming resource for transcode of key /library/metadata/"titleID"'. | |
drive_check | Check if drive exists. If not then notify via PlexPy notifier agent. | |
userplays_weekly_reporting | Use PlexPy to count how many plays per user occurred this week and send email via PlexPy. |
Setting Up PlexPy for Custom Scripts
Enabling Scripts in PlexPy:
Settings > Notification Agents > Click the Scripts gear
- Set scripts location to location of your scripts
- Scroll down to option you want to use and select the script from the drop down menu
- Save
Settings > Notification Agents > Click the Bell next to Scripts
- Check desired trigger
- Close
Settings > Notifications > Click Script
- Enter in the Script Arguments
- Save
Common variables
Plex
- PLEX_HOST - Local IP to connect to Plex ('localhost', '192.168.0.x', '127.0.0.1', etc.)
- PLEX_PORT - Port number used by Plex (default: 32400)
- PLEX_SSL - http:// or https://? '' if http and 's' if https
- PLEX_TOKEN - Plex or PlexPy Settings > Plex.tv Account > PMS Token
PlexPy
- PLEXPY_URL - Local IP to connect to PlexPy ('localhost', '192.168.0.x', '127.0.0.1', etc.)
- PLEXPY_APIKEY - PlexPy Settings > Access Control > Enable API - API Key