apply "Filter already passed events" commit by octys from upstream
This commit is contained in:
		
							parent
							
								
									ad8bd06f6a
								
							
						
					
					
						commit
						bf5d375274
					
				
							
								
								
									
										19
									
								
								fahrplan.py
								
								
								
								
							
							
						
						
									
										19
									
								
								fahrplan.py
								
								
								
								
							| 
						 | 
					@ -97,6 +97,12 @@ def events(scheduleUrl, titlemap={}):
 | 
				
			||||||
                else:
 | 
					                else:
 | 
				
			||||||
                    subtitle = ''
 | 
					                    subtitle = ''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if event.find('duration') is not None and ':' in event.find('duration').text:
 | 
				
			||||||
 | 
					                    parts = event.find('duration').text.split(':', 1)
 | 
				
			||||||
 | 
					                    duration = int(parts[0]) * 60 + int(parts[1])
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    duration = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if event.find('start') is not None and event.find('start').text is not None:
 | 
					                if event.find('start') is not None and event.find('start').text is not None:
 | 
				
			||||||
                    start = re.sub(r'\s+', ' ', event.find('start').text).strip()
 | 
					                    start = re.sub(r'\s+', ' ', event.find('start').text).strip()
 | 
				
			||||||
                else:
 | 
					                else:
 | 
				
			||||||
| 
						 | 
					@ -114,6 +120,7 @@ def events(scheduleUrl, titlemap={}):
 | 
				
			||||||
                    'track': event.find('track').text,
 | 
					                    'track': event.find('track').text,
 | 
				
			||||||
                    'start': event.find('start').text,
 | 
					                    'start': event.find('start').text,
 | 
				
			||||||
                    'datetime': event.find('date').text,
 | 
					                    'datetime': event.find('date').text,
 | 
				
			||||||
 | 
					                    'duration': duration,
 | 
				
			||||||
                    'roomguid': room.attrib['guid'] if 'guid' in room.attrib else '',
 | 
					                    'roomguid': room.attrib['guid'] if 'guid' in room.attrib else '',
 | 
				
			||||||
                    #'url': event.find('url').text
 | 
					                    #'url': event.find('url').text
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
| 
						 | 
					@ -121,10 +128,18 @@ def events(scheduleUrl, titlemap={}):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == "__main__":	
 | 
					if __name__ == "__main__":	
 | 
				
			||||||
    events = list(events(scheduleUrl))
 | 
					    events = events(scheduleUrl)
 | 
				
			||||||
    events = sorted(events, key=lambda x: datetime.datetime.fromisoformat(x["datetime"]))
 | 
					    events = sorted(events, key=lambda x: datetime.datetime.fromisoformat(x["datetime"]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Filter already passed events
 | 
				
			||||||
 | 
					    # (There is a grace period of 30 mins after start for events longer than that)
 | 
				
			||||||
 | 
					    grace = datetime.timedelta(minutes=30)
 | 
				
			||||||
 | 
					    def is_upcoming(ev, now=datetime.datetime.now().astimezone()):
 | 
				
			||||||
 | 
					        ev_date = datetime.datetime.fromisoformat(ev["datetime"])
 | 
				
			||||||
 | 
					        return ev_date + grace > now and ev_date + datetime.timedelta(minutes=ev["duration"]) > now
 | 
				
			||||||
 | 
					    events = filter(is_upcoming, events)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    with open("fahrplan.json", "w") as f:
 | 
					    with open("fahrplan.json", "w") as f:
 | 
				
			||||||
        json.dump(events, f)
 | 
					        json.dump(list(events), f)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue