async def async_get_events(self, start_date, end_date): """Get all events in a specific time frame.""" event_list = [] event_items = [] try: events_items = ical.latest_events(self.name) _LOGGER.debug("Got Events for %s", self.name) except: None #events_items = ical.events(self.url, None, None, start_date, end_date ) for event in events_items: uid = None if hasattr(event, 'uid'): uid = event.uid data = { 'uid': uid, 'title': event.summary, 'start': self.get_date_formatted(event.start, event.all_day), 'end': self.get_date_formatted(event.end, event.all_day), 'location': event.location, 'description': event.description } # Note that we return a formatted date for start and end here, # but a different format for self.event! event_list.append(data) return event_list
def test_request_data(self): ical = "test/test_data/basic.ics" start = date(2017, 5, 18) end = date(2017, 5, 19) key = "basic" icalevents.request_data(key, url=None, file=ical, string_content=None, start=start, end=end, fix_apple=False) self.assertTrue(icalevents.all_done(key), "request is finished") self.assertEqual(len(icalevents.latest_events(key)), 2, "two events are found")
def test_events_async_url(self): url = "https://raw.githubusercontent.com/irgangla/icalevents/master/test/test_data/basic.ics" start = date(2017, 5, 18) end = date(2017, 5, 19) key = "basic" icalevents.events_async(key, url=url, file=None, start=start, end=end) sleep(4) self.assertTrue(icalevents.all_done(key), "request is finished") self.assertEqual(len(icalevents.latest_events(key)), 2, "two events are found")
def test_events_async(self): ical = "test/test_data/basic.ics" start = date(2017, 5, 18) end = date(2017, 5, 19) key = "basic" icalevents.events_async(key, url=None, file=ical, start=start, end=end) sleep(4) self.assertTrue(icalevents.all_done(key), "request is finished") self.assertEqual(len(icalevents.latest_events(key)), 2, "two events are found")
def update(self): # """Get the latest data.""" _LOGGER.debug("Updating %s", self.name) ical.events_async(self.name, self.url) event_items = [] try: events_items = ical.latest_events(self.name) _LOGGER.debug("Got Events %s", self.name) except: None temp_event = None right_now = arrow.utcnow() for event in events_items: ar_start = arrow.get(event.start) ar_end = arrow.get(event.end) if (ar_end < right_now) or (ar_start > right_now): continue if temp_event is None: temp_event = event elif arrow.get(temp_event.end) > ar_end: temp_event = event if temp_event is None: self.event = None return True self.event = { 'summary': temp_event.summary, 'start': self.get_hass_date(temp_event.start, temp_event.all_day), 'end': self.get_hass_date(temp_event.end, temp_event.all_day), 'location': temp_event.location, 'description': temp_event.description } return True
if not line: break name, url = line.split(maxsplit=1) name = name.strip() url = url.strip() fix_apple = False if name == "icloud": fix_apple = True key = "req_%d" % counter counter += 1 keys.append(key) events_async(key, url, fix_apple=fix_apple) while keys: print("%d request running." % len(keys)) for k in keys[:]: if all_done(k): print("Request %s finished." % k) keys.remove(k) es = latest_events(k) for e in es: print(e) sleep(2)