From 1450c0b94fcef81769dfe41eb95336d85b0a2240 Mon Sep 17 00:00:00 2001 From: Justin Emter Date: Thu, 20 Jul 2017 18:33:01 -0700 Subject: [PATCH] Alpha 1.0 --- PseudoChannel.py | 19 +++++++++++++++-- pseudo_schedule.xml | 4 ++-- src/PseudoChannelDatabase.py | 6 +++++- src/PseudoDailyScheduleController.py | 31 +++++++++++++++++----------- 4 files changed, 43 insertions(+), 17 deletions(-) diff --git a/PseudoChannel.py b/PseudoChannel.py index 44d4702..a515b2c 100644 --- a/PseudoChannel.py +++ b/PseudoChannel.py @@ -6,6 +6,7 @@ from src import Commercial from src import Episode from src import Music from src import Video +from src import PseudoDailyScheduleController from pseudo_config import * from plexapi.server import PlexServer @@ -17,6 +18,8 @@ import itertools from xml.dom import minidom import xml.etree.ElementTree as ET +from time import sleep + class PseudoChannel(): PLEX = PlexServer(baseurl, token) @@ -27,6 +30,8 @@ class PseudoChannel(): self.db = PseudoChannelDatabase("pseudo-channel.db") + self.controller = PseudoDailyScheduleController() + """Database functions. update_db(): Grab the media from the Plex DB and store it in the local pseudo-channel.db. @@ -595,9 +600,19 @@ if __name__ == '__main__': #pseudo_channel.update_db() - pseudo_channel.update_schedule() + #pseudo_channel.update_schedule() - pseudo_channel.generate_daily_schedule() + #pseudo_channel.generate_daily_schedule() + + try: + print "++++ Running TV Controller" + while True: + pseudo_channel.controller.tv_controller(pseudo_channel.db.get_daily_schedule()) + t = datetime.datetime.utcnow() + sleeptime = 60 - (t.second + t.microsecond/1000000.0) + sleep(sleeptime) + except KeyboardInterrupt, e: + pass diff --git a/pseudo_schedule.xml b/pseudo_schedule.xml index 1873b5d..21331a2 100644 --- a/pseudo_schedule.xml +++ b/pseudo_schedule.xml @@ -51,12 +51,12 @@ - + - + \ No newline at end of file diff --git a/src/PseudoChannelDatabase.py b/src/PseudoChannelDatabase.py index f05d739..2043bbd 100644 --- a/src/PseudoChannelDatabase.py +++ b/src/PseudoChannelDatabase.py @@ -286,7 +286,11 @@ class PseudoChannelDatabase(): def get_daily_schedule(self): - return None + self.cursor.execute("SELECT * FROM daily_schedule ORDER BY datetime(startTime) ASC") + + datalist = list(self.cursor.fetchall()) + + return datalist def get_movie(self, title): diff --git a/src/PseudoDailyScheduleController.py b/src/PseudoDailyScheduleController.py index 2f33b2c..ea4085c 100644 --- a/src/PseudoDailyScheduleController.py +++ b/src/PseudoDailyScheduleController.py @@ -18,6 +18,8 @@ class PseudoDailyScheduleController(): TOKEN = token + PLEX_CLIENTS = plexClients + def __init__(self): self.my_logger = logging.getLogger('MyLogger') @@ -55,7 +57,7 @@ class PseudoDailyScheduleController(): * @return string: the generated html content * ''' - def get_html_from_daily_schedule(self, currentTime, bgImageURL): + def get_html_from_daily_schedule(self, currentTime, bgImageURL, datalist): now = datetime.now() @@ -110,10 +112,6 @@ class PseudoDailyScheduleController(): with tag('th'): text('Start Time') - c.execute("SELECT * FROM daily_schedule ORDER BY datetime(startTimeUnix) ASC") - - datalist = list(c.fetchall()) - numberIncrease = 0 for row in datalist: @@ -204,7 +202,7 @@ class PseudoDailyScheduleController(): ''' def play_media(self, mediaType, mediaParentTitle, mediaTitle): - mediaItems = plex.library.section(mediaType).get(mediaParentTitle).episodes() + mediaItems = self.PLEX.library.section(mediaType).get(mediaParentTitle).episodes() for item in mediaItems: @@ -212,9 +210,9 @@ class PseudoDailyScheduleController(): if item.title == mediaTitle: - for client in plexClients: + for client in self.PLEX_CLIENTS: - clientItem = plex.client(client) + clientItem = self.PLEX.client(client) clientItem.playMedia(item) @@ -238,6 +236,7 @@ class PseudoDailyScheduleController(): """ for row in datalist: + endTime = datetime.strptime(row[9], '%Y-%m-%d %H:%M:%S.%f') if currentTime.hour == endTime.hour: @@ -246,7 +245,7 @@ class PseudoDailyScheduleController(): print("Ok end time found") - self.write_schedule_to_file(self.get_html_from_daily_schedule(None, None)) + self.write_schedule_to_file(self.get_html_from_daily_schedule(None, None, datalist)) break ''' @@ -266,7 +265,7 @@ class PseudoDailyScheduleController(): datalist = list(c.fetchall())""" - my_logger.debug('TV Controller') + self.my_logger.debug('TV Controller') for row in datalist: @@ -281,7 +280,15 @@ class PseudoDailyScheduleController(): self.play_media("TV Shows", row[6], row[3]) - self.write_schedule_to_file(self.get_html_from_daily_schedule(timeB, self.get_show_photo(row[11], row[6]))) + self.write_schedule_to_file( + self.get_html_from_daily_schedule( + timeB, + self.get_show_photo( + row[11], + row[6]), + datalist + ) + ) self.my_logger.debug('Trying to play: ' + row[3]) @@ -291,4 +298,4 @@ class PseudoDailyScheduleController(): if datalistLengthMonitor >= len(datalist): - self.check_for_end_time() \ No newline at end of file + self.check_for_end_time(datalist) \ No newline at end of file