diff --git a/PseudoChannel.py b/PseudoChannel.py index 2eea45e..f169da4 100644 --- a/PseudoChannel.py +++ b/PseudoChannel.py @@ -406,6 +406,18 @@ class PseudoChannel(): schedule = self.db.get_schedule() + weekday_dict = { + "0" : ["mondays", "weekdays", "everyday"], + "1" : ["tuesdays", "weekdays", "everyday"], + "2" : ["wednesdays", "weekdays", "everyday"], + "3" : ["thursdays", "weekdays", "everyday"], + "4" : ["fridays", "weekdays", "everyday"], + "5" : ["saturdays", "weekends", "everyday"], + "6" : ["sundays", "weekends", "everyday"], + } + + weekno = datetime.datetime.today().weekday() + schedule_advance_watcher = 0 for entry in schedule: @@ -414,185 +426,194 @@ class PseudoChannel(): section = entry[9] - if section == "TV Shows": + for key, val in weekday_dict.iteritems(): - if entry[3] == "random": + try: - next_episode = self.db.get_random_episode() + if str(entry[7]) in str(val) and int(weekno) == int(key): - else: + if section == "TV Shows": - next_episode = self.db.get_next_episode(entry[3]) + if entry[3] == "random": - if next_episode != None: - - episode = Episode( - section, # section_type - next_episode[3], # title - entry[5], # natural_start_time - self.get_end_time_from_duration(entry[5], next_episode[4]), # natural_end_time - next_episode[4], # duration - entry[7], # day_of_week - entry[10], # is_strict_time - entry[11], # time_shift - entry[12], # overlap_max - entry[3], # show_series_title - next_episode[5], # episode_number - next_episode[6] # season_number - ) + next_episode = self.db.get_random_episode() - self.MEDIA.append(episode) + else: - else: + next_episode = self.db.get_next_episode(entry[3]) - print("Cannot find TV Show Episode, {} in the local db".format(entry[3])) + if next_episode != None: + + episode = Episode( + section, # section_type + next_episode[3], # title + entry[5], # natural_start_time + self.get_end_time_from_duration(entry[5], next_episode[4]), # natural_end_time + next_episode[4], # duration + entry[7], # day_of_week + entry[10], # is_strict_time + entry[11], # time_shift + entry[12], # overlap_max + entry[3], # show_series_title + next_episode[5], # episode_number + next_episode[6] # season_number + ) - #print(episode) + self.MEDIA.append(episode) - elif section == "Movies": + else: - if entry[3] == "random": + print("Cannot find TV Show Episode, {} in the local db".format(entry[3])) - the_movie = self.db.get_random_movie() - print("here") + #print(episode) - else: + elif section == "Movies": - the_movie = self.db.get_movie(entry[3]) + if entry[3] == "random": - if the_movie != None: + the_movie = self.db.get_random_movie() - movie = Movie( - section, # section_type - the_movie[3], # title - entry[5], # natural_start_time - self.get_end_time_from_duration(entry[5], the_movie[4]), # natural_end_time - the_movie[4], # duration - entry[7], # day_of_week - entry[10], # is_strict_time - entry[11], # time_shift - entry[12] # overlap_max - ) + else: - #print(movie.natural_end_time) + the_movie = self.db.get_movie(entry[3]) - self.MEDIA.append(movie) + if the_movie != None: - else: + movie = Movie( + section, # section_type + the_movie[3], # title + entry[5], # natural_start_time + self.get_end_time_from_duration(entry[5], the_movie[4]), # natural_end_time + the_movie[4], # duration + entry[7], # day_of_week + entry[10], # is_strict_time + entry[11], # time_shift + entry[12] # overlap_max + ) - print("Cannot find Movie, {} in the local db".format(entry[3])) + #print(movie.natural_end_time) - elif section == "Music": + self.MEDIA.append(movie) - the_music = self.db.get_music(entry[3]) + else: - if the_music != None: + print("Cannot find Movie, {} in the local db".format(entry[3])) - music = Music( - section, # section_type - the_music[3], # title - entry[5], # natural_start_time - self.get_end_time_from_duration(entry[5], the_music[4]), # natural_end_time - the_music[4], # duration - entry[7], # day_of_week - entry[10], # is_strict_time - entry[11], # time_shift - entry[12] # overlap_max - ) + elif section == "Music": - #print(music.natural_end_time) + the_music = self.db.get_music(entry[3]) - self.MEDIA.append(music) + if the_music != None: - else: + music = Music( + section, # section_type + the_music[3], # title + entry[5], # natural_start_time + self.get_end_time_from_duration(entry[5], the_music[4]), # natural_end_time + the_music[4], # duration + entry[7], # day_of_week + entry[10], # is_strict_time + entry[11], # time_shift + entry[12] # overlap_max + ) - print("Cannot find Music, {} in the local db".format(entry[3])) + #print(music.natural_end_time) - elif section == "Video": + self.MEDIA.append(music) - the_video = self.db.get_video(entry[3]) + else: - if the_music != None: + print("Cannot find Music, {} in the local db".format(entry[3])) - video = Video( - section, # section_type - the_video[3], # title - entry[5], # natural_start_time - self.get_end_time_from_duration(entry[5], the_video[4]), # natural_end_time - the_video[4], # duration - entry[7], # day_of_week - entry[10], # is_strict_time - entry[11], # time_shift - entry[12] # overlap_max - ) + elif section == "Video": - #print(music.natural_end_time) + the_video = self.db.get_video(entry[3]) - self.MEDIA.append(video) + if the_music != None: - else: + video = Video( + section, # section_type + the_video[3], # title + entry[5], # natural_start_time + self.get_end_time_from_duration(entry[5], the_video[4]), # natural_end_time + the_video[4], # duration + entry[7], # day_of_week + entry[10], # is_strict_time + entry[11], # time_shift + entry[12] # overlap_max + ) - print("Cannot find Video, {} in the local db".format(entry[3])) + #print(music.natural_end_time) - else: + self.MEDIA.append(video) - pass + else: - """If we reached the end of the schedule we are ready to kick off the daily_schedule - - """ - if schedule_advance_watcher >= len(schedule): - - previous_episode = None - - self.db.remove_all_daily_scheduled_items() - - for entry in self.MEDIA: - - #print entry.natural_end_time - - if previous_episode != None: - - natural_start_time = datetime.datetime.strptime(entry.natural_start_time, '%I:%M %p') - - natural_end_time = entry.natural_end_time - - if entry.is_strict_time.lower() == "true": - - print "++++ Strict-time: {}".format(entry.title) - - entry.end_time = self.get_end_time_from_duration(entry.start_time, entry.duration) - - self.db.add_media_to_daily_schedule(entry) - - previous_episode = entry + print("Cannot find Video, {} in the local db".format(entry[3])) else: - print "++++ NOT strict-time: {}".format(entry.title) + pass - new_starttime = self.calculate_start_time( - previous_episode.end_time, - entry.natural_start_time, - previous_episode.time_shift, - previous_episode.overlap_max - ) + """If we reached the end of the schedule we are ready to kick off the daily_schedule - print "++++ New start time:", new_starttime + """ + if schedule_advance_watcher >= len(schedule): - entry.start_time = datetime.datetime.strptime(new_starttime, '%I:%M %p').strftime('%-I:%M %p') + previous_episode = None - entry.end_time = self.get_end_time_from_duration(entry.start_time, entry.duration) + self.db.remove_all_daily_scheduled_items() - self.db.add_media_to_daily_schedule(entry) + for entry in self.MEDIA: - previous_episode = entry + #print entry.natural_end_time - else: + if previous_episode != None: - self.db.add_media_to_daily_schedule(entry) + natural_start_time = datetime.datetime.strptime(entry.natural_start_time, '%I:%M %p') - previous_episode = entry + natural_end_time = entry.natural_end_time + + if entry.is_strict_time.lower() == "true": + + print "++++ Strict-time: {}".format(entry.title) + + entry.end_time = self.get_end_time_from_duration(entry.start_time, entry.duration) + + self.db.add_media_to_daily_schedule(entry) + + previous_episode = entry + + else: + + print "++++ NOT strict-time: {}".format(entry.title) + + new_starttime = self.calculate_start_time( + previous_episode.end_time, + entry.natural_start_time, + previous_episode.time_shift, + previous_episode.overlap_max + ) + + print "++++ New start time:", new_starttime + + entry.start_time = datetime.datetime.strptime(new_starttime, '%I:%M %p').strftime('%-I:%M %p') + + entry.end_time = self.get_end_time_from_duration(entry.start_time, entry.duration) + + self.db.add_media_to_daily_schedule(entry) + + previous_episode = entry + + else: + + self.db.add_media_to_daily_schedule(entry) + + previous_episode = entry + + except TypeError as e: + + pass if __name__ == '__main__': diff --git a/pseudo_schedule.xml b/pseudo_schedule.xml index 390508f..6c16830 100644 --- a/pseudo_schedule.xml +++ b/pseudo_schedule.xml @@ -5,12 +5,42 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + @@ -19,9 +49,9 @@ - - - + + + @@ -53,10 +83,8 @@ - - + - diff --git a/src/PseudoDailyScheduleController.py b/src/PseudoDailyScheduleController.py index 9ac046c..08e8448 100644 --- a/src/PseudoDailyScheduleController.py +++ b/src/PseudoDailyScheduleController.py @@ -320,7 +320,7 @@ class PseudoDailyScheduleController(): timeB, self.get_show_photo( row[11], - row[3] + row[6] if row[11] == "TV Shows" else row[3] ), datalist )