def notify_timeline(timeline_data=None, notify_action=None): if timeline_data and notify_action: if (timeline_data['media_type'] == 'movie' and plexcs.CONFIG.MOVIE_NOTIFY_ENABLE) \ or ((timeline_data['media_type'] == 'show' or timeline_data['media_type'] == 'episode') \ and plexcs.CONFIG.TV_NOTIFY_ENABLE) \ or ((timeline_data['media_type'] == 'artist' or timeline_data['media_type'] == 'track') \ and plexcs.CONFIG.MUSIC_NOTIFY_ENABLE): for agent in notifiers.available_notification_agents(): if agent['on_created'] and notify_action == 'created': # Build and send notification notify_strings = build_notify_text(timeline=timeline_data, state=notify_action) notifiers.send_notification(config_id=agent['id'], subject=notify_strings[0], body=notify_strings[1]) # Set the notification state in the db set_notify_state(session=timeline_data, state=notify_action, agent_info=agent) elif not timeline_data and notify_action: for agent in notifiers.available_notification_agents(): if agent['on_extdown'] and notify_action == 'extdown': # Build and send notification notify_strings = build_server_notify_text(state=notify_action) notifiers.send_notification(config_id=agent['id'], subject=notify_strings[0], body=notify_strings[1]) if agent['on_intdown'] and notify_action == 'intdown': # Build and send notification notify_strings = build_server_notify_text(state=notify_action) notifiers.send_notification(config_id=agent['id'], subject=notify_strings[0], body=notify_strings[1]) else: logger.debug( u"Plex:CS Notifier :: Notify timeline called but incomplete data received." )
def notify_timeline(timeline_data=None, notify_action=None): if timeline_data and notify_action: if ( (timeline_data["media_type"] == "movie" and plexcs.CONFIG.MOVIE_NOTIFY_ENABLE) or ( (timeline_data["media_type"] == "show" or timeline_data["media_type"] == "episode") and plexcs.CONFIG.TV_NOTIFY_ENABLE ) or ( (timeline_data["media_type"] == "artist" or timeline_data["media_type"] == "track") and plexcs.CONFIG.MUSIC_NOTIFY_ENABLE ) ): for agent in notifiers.available_notification_agents(): if agent["on_created"] and notify_action == "created": # Build and send notification notify_strings = build_notify_text(timeline=timeline_data, state=notify_action) notifiers.send_notification( config_id=agent["id"], subject=notify_strings[0], body=notify_strings[1] ) # Set the notification state in the db set_notify_state(session=timeline_data, state=notify_action, agent_info=agent) elif not timeline_data and notify_action: for agent in notifiers.available_notification_agents(): if agent["on_extdown"] and notify_action == "extdown": # Build and send notification notify_strings = build_server_notify_text(state=notify_action) notifiers.send_notification(config_id=agent["id"], subject=notify_strings[0], body=notify_strings[1]) if agent["on_intdown"] and notify_action == "intdown": # Build and send notification notify_strings = build_server_notify_text(state=notify_action) notifiers.send_notification(config_id=agent["id"], subject=notify_strings[0], body=notify_strings[1]) else: logger.debug(u"Plex:CS Notifier :: Notify timeline called but incomplete data received.")
def notify(stream_data=None, notify_action=None): from plexcs import users if stream_data and notify_action: # Check if notifications enabled for user user_data = users.Users() user_details = user_data.get_user_friendly_name( user=stream_data['user']) if not user_details['do_notify']: return if (stream_data['media_type'] == 'movie' and plexcs.CONFIG.MOVIE_NOTIFY_ENABLE) \ or (stream_data['media_type'] == 'episode' and plexcs.CONFIG.TV_NOTIFY_ENABLE): progress_percent = helpers.get_percent(stream_data['view_offset'], stream_data['duration']) for agent in notifiers.available_notification_agents(): if agent['on_play'] and notify_action == 'play': # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification(config_id=agent['id'], subject=notify_strings[0], body=notify_strings[1]) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif agent['on_stop'] and notify_action == 'stop' \ and (plexcs.CONFIG.NOTIFY_CONSECUTIVE or progress_percent < plexcs.CONFIG.NOTIFY_WATCHED_PERCENT): # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification(config_id=agent['id'], subject=notify_strings[0], body=notify_strings[1]) set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif agent['on_pause'] and notify_action == 'pause' \ and (plexcs.CONFIG.NOTIFY_CONSECUTIVE or progress_percent < 99): # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification(config_id=agent['id'], subject=notify_strings[0], body=notify_strings[1]) set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif agent['on_resume'] and notify_action == 'resume' \ and (plexcs.CONFIG.NOTIFY_CONSECUTIVE or progress_percent < 99): # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification(config_id=agent['id'], subject=notify_strings[0], body=notify_strings[1]) set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif agent['on_buffer'] and notify_action == 'buffer': # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification(config_id=agent['id'], subject=notify_strings[0], body=notify_strings[1]) set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif agent['on_watched'] and notify_action == 'watched': # Get the current states for notifications from our db notify_states = get_notify_state(session=stream_data) # If there is nothing in the notify_log for our agent id but it is enabled we should notify if not any(d['agent_id'] == agent['id'] for d in notify_states): # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification(config_id=agent['id'], subject=notify_strings[0], body=notify_strings[1]) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) else: # Check in our notify log if the notification has already been sent for notify_state in notify_states: if not notify_state['on_watched'] and ( notify_state['agent_id'] == agent['id']): # Build and send notification notify_strings = build_notify_text( session=stream_data, state=notify_action) notifiers.send_notification( config_id=agent['id'], subject=notify_strings[0], body=notify_strings[1]) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif (stream_data['media_type'] == 'track' and plexcs.CONFIG.MUSIC_NOTIFY_ENABLE): for agent in notifiers.available_notification_agents(): if agent['on_play'] and notify_action == 'play': # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification(config_id=agent['id'], subject=notify_strings[0], body=notify_strings[1]) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif agent['on_stop'] and notify_action == 'stop': # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification(config_id=agent['id'], subject=notify_strings[0], body=notify_strings[1]) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif agent['on_pause'] and notify_action == 'pause': # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification(config_id=agent['id'], subject=notify_strings[0], body=notify_strings[1]) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif agent['on_resume'] and notify_action == 'resume': # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification(config_id=agent['id'], subject=notify_strings[0], body=notify_strings[1]) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif agent['on_buffer'] and notify_action == 'buffer': # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification(config_id=agent['id'], subject=notify_strings[0], body=notify_strings[1]) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif stream_data['media_type'] == 'clip': pass else: #logger.debug(u"Plex:CS Notifier :: Notify called with unsupported media type.") pass else: logger.debug( u"Plex:CS Notifier :: Notify called but incomplete data received.")
def notify(stream_data=None, notify_action=None): from plexcs import users if stream_data and notify_action: # Check if notifications enabled for user user_data = users.Users() user_details = user_data.get_user_friendly_name(user=stream_data["user"]) if not user_details["do_notify"]: return if (stream_data["media_type"] == "movie" and plexcs.CONFIG.MOVIE_NOTIFY_ENABLE) or ( stream_data["media_type"] == "episode" and plexcs.CONFIG.TV_NOTIFY_ENABLE ): progress_percent = helpers.get_percent(stream_data["view_offset"], stream_data["duration"]) for agent in notifiers.available_notification_agents(): if agent["on_play"] and notify_action == "play": # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification( config_id=agent["id"], subject=notify_strings[0], body=notify_strings[1] ) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif ( agent["on_stop"] and notify_action == "stop" and (plexcs.CONFIG.NOTIFY_CONSECUTIVE or progress_percent < plexcs.CONFIG.NOTIFY_WATCHED_PERCENT) ): # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification( config_id=agent["id"], subject=notify_strings[0], body=notify_strings[1] ) set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif ( agent["on_pause"] and notify_action == "pause" and (plexcs.CONFIG.NOTIFY_CONSECUTIVE or progress_percent < 99) ): # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification( config_id=agent["id"], subject=notify_strings[0], body=notify_strings[1] ) set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif ( agent["on_resume"] and notify_action == "resume" and (plexcs.CONFIG.NOTIFY_CONSECUTIVE or progress_percent < 99) ): # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification( config_id=agent["id"], subject=notify_strings[0], body=notify_strings[1] ) set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif agent["on_buffer"] and notify_action == "buffer": # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification( config_id=agent["id"], subject=notify_strings[0], body=notify_strings[1] ) set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif agent["on_watched"] and notify_action == "watched": # Get the current states for notifications from our db notify_states = get_notify_state(session=stream_data) # If there is nothing in the notify_log for our agent id but it is enabled we should notify if not any(d["agent_id"] == agent["id"] for d in notify_states): # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification( config_id=agent["id"], subject=notify_strings[0], body=notify_strings[1] ) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) else: # Check in our notify log if the notification has already been sent for notify_state in notify_states: if not notify_state["on_watched"] and (notify_state["agent_id"] == agent["id"]): # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification( config_id=agent["id"], subject=notify_strings[0], body=notify_strings[1] ) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif stream_data["media_type"] == "track" and plexcs.CONFIG.MUSIC_NOTIFY_ENABLE: for agent in notifiers.available_notification_agents(): if agent["on_play"] and notify_action == "play": # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification( config_id=agent["id"], subject=notify_strings[0], body=notify_strings[1] ) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif agent["on_stop"] and notify_action == "stop": # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification( config_id=agent["id"], subject=notify_strings[0], body=notify_strings[1] ) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif agent["on_pause"] and notify_action == "pause": # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification( config_id=agent["id"], subject=notify_strings[0], body=notify_strings[1] ) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif agent["on_resume"] and notify_action == "resume": # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification( config_id=agent["id"], subject=notify_strings[0], body=notify_strings[1] ) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif agent["on_buffer"] and notify_action == "buffer": # Build and send notification notify_strings = build_notify_text(session=stream_data, state=notify_action) notifiers.send_notification( config_id=agent["id"], subject=notify_strings[0], body=notify_strings[1] ) # Set the notification state in the db set_notify_state(session=stream_data, state=notify_action, agent_info=agent) elif stream_data["media_type"] == "clip": pass else: # logger.debug(u"Plex:CS Notifier :: Notify called with unsupported media type.") pass else: logger.debug(u"Plex:CS Notifier :: Notify called but incomplete data received.")