diff --git a/plexpy/__init__.py b/plexpy/__init__.py index 09c16586..d3de0815 100644 --- a/plexpy/__init__.py +++ b/plexpy/__init__.py @@ -656,8 +656,8 @@ def dbcheck(): 'synced_version INTEGER, synced_version_profile TEXT, ' 'live INTEGER, live_uuid TEXT, channel_call_sign TEXT, channel_identifier TEXT, channel_thumb TEXT, ' 'secure INTEGER, relayed INTEGER, ' - 'buffer_count INTEGER DEFAULT 0, buffer_last_triggered INTEGER, last_paused INTEGER, ' - 'watched INTEGER DEFAULT 0, intro INTEGER DEFAULT 0, credits INTEGER DEFAULT 0, marker INTEGER DEFAULT 0, ' + 'buffer_count INTEGER DEFAULT 0, buffer_last_triggered INTEGER, last_paused INTEGER, watched INTEGER DEFAULT 0, ' + 'intro INTEGER DEFAULT 0, credits INTEGER DEFAULT 0, commercial INTEGER DEFAULT 0, marker INTEGER DEFAULT 0, ' 'initial_stream INTEGER DEFAULT 1, write_attempts INTEGER DEFAULT 0, raw_stream_info TEXT, ' 'rating_key_websocket TEXT)' ) @@ -1417,6 +1417,15 @@ def dbcheck(): 'ALTER TABLE sessions ADD COLUMN credits INTEGER DEFAULT 0' ) + # Upgrade sessions table from earlier versions + try: + c_db.execute('SELECT commercial FROM sessions') + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table sessions.") + c_db.execute( + 'ALTER TABLE sessions ADD COLUMN commercial INTEGER DEFAULT 0' + ) + # Upgrade sessions table from earlier versions try: c_db.execute('SELECT marker FROM sessions') diff --git a/plexpy/activity_handler.py b/plexpy/activity_handler.py index 5ed69e10..8933c1ac 100644 --- a/plexpy/activity_handler.py +++ b/plexpy/activity_handler.py @@ -247,13 +247,20 @@ class ActivityHandler(object): def on_intro(self, marker): if self.get_live_session(): - logger.debug("Tautulli ActivityHandler :: Session %s intro marker reached." % str(self.session_key)) + logger.debug("Tautulli ActivityHandler :: Session %s reached intro marker." % str(self.session_key)) self.put_notification('on_intro', marker=marker) + def on_commercial(self, marker): + if self.get_live_session(): + logger.debug("Tautulli ActivityHandler :: Session %s reached commercial marker." % str(self.session_key)) + + self.put_notification('on_commercial', marker=marker) + def on_credits(self, marker): if self.get_live_session(): - logger.debug("Tautulli ActivityHandler :: Session %s credits marker reached." % str(self.session_key)) + logger.debug("Tautulli ActivityHandler :: Session %s reached credits marker." % str(self.session_key)) + self.put_notification('on_credits', marker=marker) def on_watched(self): diff --git a/plexpy/activity_processor.py b/plexpy/activity_processor.py index dcd1f138..a8d8cdd4 100644 --- a/plexpy/activity_processor.py +++ b/plexpy/activity_processor.py @@ -661,8 +661,12 @@ class ActivityProcessor(object): [session['write_attempts'] + 1, session_key]) def set_marker(self, session_key=None, marker_idx=None, marker_type=None): - marker_args = [int(marker_type == 'intro'), int(marker_type == 'credits')] - self.db.action('UPDATE sessions SET intro = ?, credits = ?, marker = ? ' + marker_args = [ + int(marker_type == 'intro'), + int(marker_type == 'commercial'), + int(marker_type == 'credits') + ] + self.db.action('UPDATE sessions SET intro = ?, commercial = ?, credits = ?, marker = ? ' 'WHERE session_key = ?', marker_args + [marker_idx, session_key]) diff --git a/plexpy/notification_handler.py b/plexpy/notification_handler.py index c92415e5..4b727c5d 100644 --- a/plexpy/notification_handler.py +++ b/plexpy/notification_handler.py @@ -1023,8 +1023,8 @@ def build_media_notify_params(notify_action=None, session=None, timeline=None, m 'live': notify_params['live'], 'marker_start': marker['start_time_offset'], 'marker_end': marker['end_time_offset'], - 'credits_marker_first': int(marker['first']), - 'credits_marker_final': int(marker['final']), + 'credits_marker_first': helpers.cast_to_int(marker['first']), + 'credits_marker_final': helpers.cast_to_int(marker['final']), 'channel_call_sign': notify_params['channel_call_sign'], 'channel_identifier': notify_params['channel_identifier'], 'channel_thumb': notify_params['channel_thumb'], diff --git a/plexpy/notifiers.py b/plexpy/notifiers.py index 383f4908..d717c8f6 100644 --- a/plexpy/notifiers.py +++ b/plexpy/notifiers.py @@ -348,6 +348,14 @@ def available_notification_actions(agent_id=None): 'icon': 'fa-bookmark', 'media_types': ('episode',) }, + {'label': 'Commercial Marker', + 'name': 'on_credits', + 'description': 'Trigger a notification when a video stream reaches any commercial marker.', + 'subject': 'Tautulli ({server_name})', + 'body': '{user} ({player}) has reached a commercial marker for {title}.', + 'icon': 'fa-bookmark', + 'media_types': ('movie', 'episode') + }, {'label': 'Credits Marker', 'name': 'on_credits', 'description': 'Trigger a notification when a video stream reaches any credits marker.',