diff --git a/PseudoChannel.py b/PseudoChannel.py index e649fb5..9e84a38 100644 --- a/PseudoChannel.py +++ b/PseudoChannel.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- import sys +import signal import datetime from datetime import time import logging @@ -682,9 +683,16 @@ class PseudoChannel(): except OSError: pass + def signal_term_handler(self, signal, frame): + + logging.info('+++++ got SIGTERM') + self.controller.stop_media() + self.exit_app() + sys.exit(0) + def exit_app(self): - print " - Exiting Pseudo TV & cleaning up." + logging.info(' - Exiting Pseudo TV & cleaning up.') for i in self.MEDIA: del i self.MEDIA = None @@ -937,6 +945,9 @@ if __name__ == '__main__': ).tag('daily-update') sleep_before_triggering_play_now = 1 + '''When the process is killed, stop any currently playing media & cleanup''' + signal.signal(signal.SIGTERM, pseudo_channel.signal_term_handler) + try: while True: schedule.run_pending() diff --git a/plex_token-example.py b/plex_token-example.py new file mode 100644 index 0000000..a684e1b --- /dev/null +++ b/plex_token-example.py @@ -0,0 +1,4 @@ +'''Change the values below, rename this file to "plex_token.py", and move this file just + outside of this directory ("../pseudo-channel")''' +token = "" +baseurl = 'http://media.home:32400' diff --git a/pseudo_config.py b/pseudo_config.py index b294fe5..9ef622b 100644 --- a/pseudo_config.py +++ b/pseudo_config.py @@ -104,4 +104,4 @@ except ImportError as e: baseurl = plex_token.baseurl token = plex_token.token -gkey = plex_token.gkey \ No newline at end of file +gkey = '' #plex_token.gkey \ No newline at end of file diff --git a/src/PseudoDailyScheduleController.py b/src/PseudoDailyScheduleController.py index 42bb540..a7b06f6 100644 --- a/src/PseudoDailyScheduleController.py +++ b/src/PseudoDailyScheduleController.py @@ -390,6 +390,17 @@ class PseudoDailyScheduleController(): print "##### There was an error trying to play the media." pass + def stop_media(self): + + try: + self.my_logger.debug('Trying to stop media.') + for client in self.PLEX_CLIENTS: + clientItem = self.PLEX.client(client) + clientItem.stop(mtype='video') + self.my_logger.debug('Done.') + except Exception as e: + self.my_logger.debug('stop_media - except.', e) + pass ''' * * If tv_controller() does not find a "startTime" for scheduled media, search for an "endTime" match for now time.