mirror of
https://github.com/FakeTV/pseudo-channel.git
synced 2025-12-22 03:03:33 +00:00
Added logic to sleep / wake-up according to the 'schedule' lib memory schedule. TODO: clean up code / test.
This commit is contained in:
@@ -26,9 +26,6 @@ import xml.etree.ElementTree as ET
|
|||||||
|
|
||||||
import schedule
|
import schedule
|
||||||
|
|
||||||
from threading import Timer
|
|
||||||
import signal
|
|
||||||
|
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
import pseudo_config as config
|
import pseudo_config as config
|
||||||
@@ -1063,14 +1060,76 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
the_daily_schedule = pseudo_channel.db.get_daily_schedule()
|
|
||||||
|
|
||||||
daily_update_time = datetime.datetime.strptime(
|
daily_update_time = datetime.datetime.strptime(
|
||||||
pseudo_channel.translate_time(
|
pseudo_channel.translate_time(
|
||||||
pseudo_channel.DAILY_UPDATE_TIME
|
pseudo_channel.DAILY_UPDATE_TIME
|
||||||
),
|
),
|
||||||
pseudo_channel.APP_TIME_FORMAT_STR
|
pseudo_channel.APP_TIME_FORMAT_STR
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def job_that_executes_once(item, schedulelist):
|
||||||
|
|
||||||
|
print "##### Readying media: '{}'".format(item[3])
|
||||||
|
|
||||||
|
next_start_time = datetime.datetime.strptime(item[8], "%I:%M:%S %p")
|
||||||
|
|
||||||
|
now = datetime.datetime.now()
|
||||||
|
|
||||||
|
now = now.replace(year=1900, month=1, day=1)
|
||||||
|
|
||||||
|
now_for_update = now.replace(microsecond=0)
|
||||||
|
|
||||||
|
|
||||||
|
if now_for_update == time(
|
||||||
|
daily_update_time.hour,
|
||||||
|
daily_update_time.minute,
|
||||||
|
daily_update_time.second
|
||||||
|
):
|
||||||
|
|
||||||
|
if pseudo_channel.USING_GOOGLE_CALENDAR:
|
||||||
|
|
||||||
|
pseudo_channel.update_schedule_from_google_calendar()
|
||||||
|
|
||||||
|
the_daily_schedule = pseudo_channel.db.get_daily_schedule()
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
pass
|
||||||
|
|
||||||
|
pseudo_channel.generate_daily_schedule()
|
||||||
|
|
||||||
|
the_daily_schedule = pseudo_channel.db.get_daily_schedule()
|
||||||
|
|
||||||
|
"""------------------"""
|
||||||
|
|
||||||
|
time_diff = next_start_time - now
|
||||||
|
|
||||||
|
if time_diff.total_seconds() > 0:
|
||||||
|
|
||||||
|
|
||||||
|
print "+++++ Sleeping for {} seconds before playing: '{}'".format(time_diff.total_seconds(), item[3])
|
||||||
|
sleep(time_diff.total_seconds())
|
||||||
|
|
||||||
|
print "Woke up!"
|
||||||
|
|
||||||
|
pseudo_channel.controller.play(item, schedulelist)
|
||||||
|
|
||||||
|
return schedule.CancelJob
|
||||||
|
|
||||||
|
def generate_memory_schedule(schedulelist):
|
||||||
|
|
||||||
|
print "##### Generating Memory Schedule."
|
||||||
|
|
||||||
|
for item in schedulelist:
|
||||||
|
|
||||||
|
trans_time = datetime.datetime.strptime(item[8], "%I:%M:%S %p").strftime("%H:%M")
|
||||||
|
|
||||||
|
schedule.every().day.at(trans_time).do(job_that_executes_once, item, schedulelist).tag()
|
||||||
|
|
||||||
|
print "+++++ Done."
|
||||||
|
|
||||||
|
|
||||||
|
#the_daily_schedule = pseudo_channel.db.get_daily_schedule()
|
||||||
|
|
||||||
def run_task():
|
def run_task():
|
||||||
|
|
||||||
@@ -1109,7 +1168,9 @@ if __name__ == '__main__':
|
|||||||
print '{}'.format(datetime.datetime.now(), end="\r")
|
print '{}'.format(datetime.datetime.now(), end="\r")
|
||||||
|
|
||||||
|
|
||||||
schedule.every(1).seconds.do(run_task)
|
#schedule.every(1).seconds.do(run_task)
|
||||||
|
|
||||||
|
generate_memory_schedule(pseudo_channel.db.get_daily_schedule())
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
<wednesdays></wednesdays>
|
<wednesdays></wednesdays>
|
||||||
<thursdays></thursdays>
|
<thursdays></thursdays>
|
||||||
<fridays>
|
<fridays>
|
||||||
<time title="Looney Tunes" type="series" strict-time="true" time-shift="1" overlap-max="">12:30 AM</time>
|
|
||||||
</fridays>
|
</fridays>
|
||||||
<saturdays></saturdays>
|
<saturdays></saturdays>
|
||||||
<sundays></sundays>
|
<sundays></sundays>
|
||||||
|
|||||||
@@ -570,6 +570,45 @@ class PseudoDailyScheduleController():
|
|||||||
self.write_refresh_bool_to_file()
|
self.write_refresh_bool_to_file()
|
||||||
|
|
||||||
break
|
break
|
||||||
|
|
||||||
|
def play(self, row, datalist):
|
||||||
|
|
||||||
|
print("Starting Media: " + row[3])
|
||||||
|
print(row)
|
||||||
|
|
||||||
|
timeB = datetime.strptime(row[8], '%I:%M:%S %p')
|
||||||
|
|
||||||
|
self.play_media(row[11], row[6], row[3])
|
||||||
|
|
||||||
|
self.write_schedule_to_file(
|
||||||
|
self.get_html_from_daily_schedule(
|
||||||
|
timeB,
|
||||||
|
self.get_show_photo(
|
||||||
|
row[11],
|
||||||
|
row[6] if row[11] == "TV Shows" else row[3]
|
||||||
|
),
|
||||||
|
datalist
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self.write_refresh_bool_to_file()
|
||||||
|
|
||||||
|
"""Generate / write XML to file
|
||||||
|
"""
|
||||||
|
self.write_xml_to_file(
|
||||||
|
self.get_xml_from_daily_schedule(
|
||||||
|
timeB,
|
||||||
|
self.get_show_photo(
|
||||||
|
row[11],
|
||||||
|
row[6] if row[11] == "TV Shows" else row[3]
|
||||||
|
),
|
||||||
|
datalist
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self.my_logger.debug('Trying to play: ' + row[3])
|
||||||
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
*
|
*
|
||||||
* Check DB / current time. If that matches a scheduled shows startTime then trigger play via Plex API
|
* Check DB / current time. If that matches a scheduled shows startTime then trigger play via Plex API
|
||||||
|
|||||||
Reference in New Issue
Block a user