#!/usr/bin/env python # -*- coding: utf-8 -*- # # Description: Automatically mark a video (movie, show, season, or episode) # as played in Plex for specific users. # Author: /u/SwiftPanda16 # Requires: plexapi # # Tautulli script trigger: # * Notify on watched # Tautulli script conditions: # * Condition {1}: # [ Username | is | <from username> ] # * Condition {2} (optional): # [ Library Name | is | DVR ] # Tautulli script arguments: # * Watched: # --rating_key {rating_key} --users "<to username2>" "<to username3>" import argparse import os from plexapi.server import PlexServer from plexapi.video import Video PLEX_URL = '' PLEX_TOKEN = '' # Environmental Variables PLEX_URL = os.getenv('PLEX_URL', PLEX_URL) PLEX_TOKEN = os.getenv('PLEX_TOKEN', PLEX_TOKEN) def mark_watched(plex, rating_key, users): admin = plex.myPlexAccount().username.lower() for user in users: server = plex if user.lower() == admin else plex.switchUser(user) item = server.fetchItem(rating_key) if isinstance(item, Video): print(f'Marking {item.title} as watched for {user}.') item.markWatched() if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument('--rating_key', required=True, type=int) parser.add_argument('--users', required=True, nargs='+') opts = parser.parse_args() plex = PlexServer(PLEX_URL, PLEX_TOKEN) mark_watched(plex, **vars(opts))