Commit bf5449ce authored by David Trattnig's avatar David Trattnig
Browse files

Fixed filters and simplified using timestamps.

parent f4c48bd5
......@@ -6,7 +6,7 @@ import simplejson
from datetime import datetime, timedelta
#from modules.models.schedule import Schedule
from modules.base.simpleutil import SimpleUtil
class CalendarFetcher:
url = dict()
......@@ -259,51 +259,49 @@ class CalendarFetcher:
def remove_data_more_than_24h_in_the_future(self, schedule_from_pv):
def remove_data_more_than_24h_in_the_future(self, schedules):
"""
Removes entries 24h in the future and 12 hours in the past.
Note: This might influence resuming (in case of a crash)
single schedules which are longer than 12 hours long.
Think e.g. live broadcasts.
"""
act_list = []
now = datetime.now()
now_plus_24hours = now + timedelta(hours=24)
for s in schedule_from_pv:
date_start = datetime.strptime(s["start"], "%Y-%m-%dT%H:%M:%S")
items = []
now = SimpleUtil.timestamp()
now_plus_24hours = now + (12*60*60)
now_minus_12hours = now - (12*60*60)
# append only elements which are close enough to now
if date_start <= now_plus_24hours and date_start >= now - timedelta(hours=12):
act_list.append(s)
for s in schedules:
start_time = datetime.strptime(s["start"], "%Y-%m-%dT%H:%M:%S")
start_time = SimpleUtil.timestamp(start_time)
return act_list
if start_time <= now_plus_24hours and start_time >= now_minus_12hours:
items.append(s)
return items
def remove_data_in_the_past(self, schedule_from_pv):
def remove_data_in_the_past(self, schedules):
"""
Removes all schedules from the past, except the one which is
currently playing.
"""
act_list = []
now = datetime.now()
count = len(schedule_from_pv)
for index, curr in enumerate(schedule_from_pv):
date_start = datetime.strptime(curr["start"], "%Y-%m-%dT%H:%M:%S")
if index+1 < count:
date_next_start = datetime.strptime(schedule_from_pv[index+1]["start"], "%Y-%m-%dT%H:%M:%S")
items = []
now = SimpleUtil.timestamp()
for s in schedules:
start_time = datetime.strptime(s["start"], "%Y-%m-%dT%H:%M:%S")
start_time = SimpleUtil.timestamp(start_time)
end_time = datetime.strptime(s["end"], "%Y-%m-%dT%H:%M:%S")
end_time = SimpleUtil.timestamp(end_time)
# Append all elements in the future
if date_start >= now:
act_list.append(curr)
# Append the one which is now playing
elif date_start < now and date_next_start >= now:
act_list.append(curr)
return act_list
if start_time >= now:
items.append(s)
# Append the one which is playing now
elif start_time < now < end_time:
items.append(s)
return items
# ------------------------------------------------------------------------------------------ #
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment