mirror of
https://github.com/FakeTV/pseudo-channel.git
synced 2025-12-21 18:53:42 +00:00
Adjusted logic to calculate start / stop times for commercials. This should solve the commercials getting cut off. I do hoever see some issues, pushing anyway.
This commit is contained in:
@@ -8,130 +8,147 @@ from src import Commercial
|
|||||||
|
|
||||||
class PseudoChannelCommercial():
|
class PseudoChannelCommercial():
|
||||||
|
|
||||||
MIN_DURATION_FOR_COMMERCIAL = 10 #seconds
|
MIN_DURATION_FOR_COMMERCIAL = 10 #seconds
|
||||||
daily_schedule = []
|
daily_schedule = []
|
||||||
|
|
||||||
def __init__(self, commercials):
|
def __init__(self, commercials):
|
||||||
|
|
||||||
self.commercials = commercials
|
self.commercials = commercials
|
||||||
|
|
||||||
def get_commercials_to_inject(self):
|
def get_commercials_to_inject(self):
|
||||||
|
|
||||||
self.go()
|
self.go()
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_random_commercial(self):
|
def get_random_commercial(self):
|
||||||
|
|
||||||
random_commercial = random.choice(self.commercials)
|
random_commercial = random.choice(self.commercials)
|
||||||
|
|
||||||
random_commercial_dur_seconds = (int(random_commercial[4])/1000)%60
|
random_commercial_dur_seconds = (int(random_commercial[4])/1000)%60
|
||||||
|
|
||||||
while random_commercial_dur_seconds < self.MIN_DURATION_FOR_COMMERCIAL:
|
while random_commercial_dur_seconds < self.MIN_DURATION_FOR_COMMERCIAL:
|
||||||
|
|
||||||
random_commercial = random.choice(self.commercials)
|
random_commercial = random.choice(self.commercials)
|
||||||
|
|
||||||
random_commercial_dur_seconds = (int(random_commercial[4])/1000)%60
|
random_commercial_dur_seconds = (int(random_commercial[4])/1000)%60
|
||||||
|
|
||||||
return random_commercial
|
return random_commercial
|
||||||
|
|
||||||
def go(self):
|
def go(self):
|
||||||
|
|
||||||
shuffled_commercial_list = copy.deepcopy(self.commercials)
|
shuffled_commercial_list = copy.deepcopy(self.commercials)
|
||||||
|
|
||||||
random.shuffle(self.commercials, random.random)
|
random.shuffle(self.commercials, random.random)
|
||||||
|
|
||||||
#print shuffled_commercial_list
|
#print shuffled_commercial_list
|
||||||
|
|
||||||
prev_item = None
|
prev_item = None
|
||||||
|
|
||||||
for entry in self.daily_schedule:
|
for entry in self.daily_schedule:
|
||||||
|
|
||||||
"""First Episode"""
|
"""First Episode"""
|
||||||
if prev_item == None:
|
if prev_item == None:
|
||||||
|
|
||||||
prev_item = entry
|
prev_item = entry
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
prev_item_end_time = datetime.datetime.strptime(prev_item[9], '%Y-%m-%d %H:%M:%S.%f')
|
prev_item_end_time = datetime.datetime.strptime(prev_item[9], '%Y-%m-%d %H:%M:%S.%f')
|
||||||
|
|
||||||
curr_item_start_time = datetime.datetime.strptime(entry[8], '%I:%M:%S %p')
|
curr_item_start_time = datetime.datetime.strptime(entry[8], '%I:%M:%S %p')
|
||||||
|
|
||||||
time_diff = (curr_item_start_time - prev_item_end_time)
|
time_diff = (curr_item_start_time - prev_item_end_time)
|
||||||
|
|
||||||
days, hours, minutes = time_diff.days, time_diff.seconds // 3600, time_diff.seconds // 60 % 60
|
days, hours, minutes = time_diff.days, time_diff.seconds // 3600, time_diff.seconds // 60 % 60
|
||||||
|
|
||||||
count = 0
|
count = 0
|
||||||
|
|
||||||
commercial_list = []
|
commercial_list = []
|
||||||
|
|
||||||
commercial_dur_sum = 0
|
commercial_dur_sum = 0
|
||||||
|
|
||||||
while int(time_diff.total_seconds()) >= commercial_dur_sum and count < len(self.commercials):
|
while int(time_diff.total_seconds()) >= commercial_dur_sum and count < len(self.commercials):
|
||||||
|
|
||||||
|
|
||||||
random_commercial = self.get_random_commercial()
|
random_commercial = self.get_random_commercial()
|
||||||
|
|
||||||
commercial_list.append(random_commercial)
|
commercial_list.append(random_commercial)
|
||||||
|
|
||||||
commercial_dur_sum += int(random_commercial[4])
|
commercial_dur_sum += int(random_commercial[4])
|
||||||
|
|
||||||
print commercial_list
|
print commercial_list
|
||||||
|
|
||||||
prev_item = entry
|
prev_item = entry
|
||||||
|
|
||||||
def get_commercials_to_place_between_media(self, last_ep, now_ep):
|
def timedelta_milliseconds(self, td):
|
||||||
|
return td.days*86400000 + td.seconds*1000 + td.microseconds/1000
|
||||||
|
|
||||||
print last_ep.end_time, now_ep.start_time
|
def get_commercials_to_place_between_media(self, last_ep, now_ep):
|
||||||
|
|
||||||
prev_item_end_time = datetime.datetime.strptime(last_ep.end_time.strftime('%Y-%m-%d %H:%M:%S.%f'), '%Y-%m-%d %H:%M:%S.%f')
|
print last_ep.end_time, now_ep.start_time
|
||||||
|
|
||||||
curr_item_start_time = datetime.datetime.strptime(now_ep.start_time, '%I:%M:%S %p')
|
prev_item_end_time = datetime.datetime.strptime(last_ep.end_time.strftime('%Y-%m-%d %H:%M:%S.%f'), '%Y-%m-%d %H:%M:%S.%f')
|
||||||
|
|
||||||
time_diff = (curr_item_start_time - prev_item_end_time)
|
curr_item_start_time = datetime.datetime.strptime(now_ep.start_time, '%I:%M:%S %p')
|
||||||
|
|
||||||
days, hours, minutes = time_diff.days, time_diff.seconds // 3600, time_diff.seconds // 60 % 60
|
time_diff = (curr_item_start_time - prev_item_end_time)
|
||||||
|
|
||||||
count = 0
|
count = 0
|
||||||
|
|
||||||
commercial_list = []
|
commercial_list = []
|
||||||
|
|
||||||
commercial_dur_sum = 0
|
commercial_dur_sum = 0
|
||||||
|
|
||||||
while int(time_diff.total_seconds()) >= commercial_dur_sum and (count*10000) < len(self.commercials):
|
time_diff_milli = self.timedelta_milliseconds(time_diff)
|
||||||
|
|
||||||
random_commercial = self.get_random_commercial()
|
last_commercial = None
|
||||||
|
|
||||||
new_commercial_seconds = (int(random_commercial[4])/1000)%60
|
time_watch = prev_item_end_time
|
||||||
|
|
||||||
commercial_dur_sum += new_commercial_seconds
|
print "here", time_diff.seconds
|
||||||
|
|
||||||
new_commercial_start_time = prev_item_end_time + datetime.timedelta(seconds=commercial_dur_sum)
|
while curr_item_start_time > time_watch and (count) < len(self.commercials):
|
||||||
|
|
||||||
new_commercial_end_time = new_commercial_start_time + datetime.timedelta(seconds=int(new_commercial_seconds))
|
random_commercial = self.get_random_commercial()
|
||||||
|
|
||||||
formatted_time_for_new_commercial = new_commercial_start_time.strftime('%I:%M:%S %p')
|
last_commercial = random_commercial
|
||||||
|
|
||||||
new_commercial = Commercial(
|
#new_commercial_seconds = (int(random_commercial[4])/1000)%60
|
||||||
"Commercials",
|
|
||||||
random_commercial[3],
|
|
||||||
formatted_time_for_new_commercial, # natural_start_time
|
|
||||||
new_commercial_end_time,
|
|
||||||
random_commercial[4],
|
|
||||||
"everyday", # day_of_week
|
|
||||||
"true", # is_strict_time
|
|
||||||
"1", # time_shift
|
|
||||||
"0", # overlap_max
|
|
||||||
"", # plex_media_id
|
|
||||||
)
|
|
||||||
|
|
||||||
if int(time_diff.total_seconds()) < commercial_dur_sum:
|
new_commercial_milli = int(random_commercial[4])
|
||||||
|
|
||||||
break
|
commercial_dur_sum += new_commercial_milli
|
||||||
|
|
||||||
commercial_list.append(new_commercial)
|
new_commercial_start_time = time_watch
|
||||||
|
|
||||||
#print "here!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
new_commercial_end_time = new_commercial_start_time
|
||||||
|
|
||||||
return commercial_list
|
new_commercial_end_time += datetime.timedelta(milliseconds=int(new_commercial_milli))
|
||||||
|
|
||||||
|
formatted_time_for_new_commercial = time_watch.strftime('%I:%M:%S %p')
|
||||||
|
|
||||||
|
new_commercial = Commercial(
|
||||||
|
"Commercials",
|
||||||
|
random_commercial[3],
|
||||||
|
formatted_time_for_new_commercial, # natural_start_time
|
||||||
|
new_commercial_end_time,
|
||||||
|
random_commercial[4],
|
||||||
|
"everyday", # day_of_week
|
||||||
|
"true", # is_strict_time
|
||||||
|
"1", # time_shift
|
||||||
|
"0", # overlap_max
|
||||||
|
"", # plex_media_id
|
||||||
|
)
|
||||||
|
|
||||||
|
time_watch += datetime.timedelta(milliseconds=commercial_dur_sum)
|
||||||
|
|
||||||
|
if time_diff_milli < commercial_dur_sum or new_commercial_end_time > curr_item_start_time:
|
||||||
|
|
||||||
|
break
|
||||||
|
|
||||||
|
commercial_list.append(new_commercial)
|
||||||
|
|
||||||
|
#print "here!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
||||||
|
|
||||||
|
return commercial_list
|
||||||
Reference in New Issue
Block a user