diff --git a/legistar/events.py b/legistar/events.py index 42827d0..44e5011 100644 --- a/legistar/events.py +++ b/legistar/events.py @@ -238,39 +238,46 @@ def api_events(self, since_datetime=None): params=params, item_key="EventId") - def events(self, since_datetime=None, api_events=None): - - for api_event in api_events or self.api_events(since_datetime=since_datetime): - - time_str = api_event['EventTime'] - if not time_str: # If we don't have an event time, skip it - continue - - try: - # Start times are entered manually. Sometimes, they don't - # conform to this format. Log events with invalid start times, - # but don't interrupt the scrape for them. - start_time = time.strptime(time_str, self.time_string_format) - except ValueError: - event_url = '{0}/events/{1}'.format(self.BASE_URL, api_event['EventId']) - self.logger.error('API event has invalid start time "{0}": {1}'.format(time_str, event_url)) - continue + def events(self, since_datetime=None): + for api_event in self.api_events(since_datetime=since_datetime): + if event := self.event(api_event): + yield event + + def event(self, api_event): + time_str = api_event["EventTime"] + if not time_str: # If we don't have an event time, skip it + return + try: + # Start times are entered manually. Sometimes, they don't + # conform to this format. Log events with invalid start times, + # but don't interrupt the scrape for them. + start_time = time.strptime(time_str, self.time_string_format) + except ValueError: + event_url = "{0}/events/{1}".format(self.BASE_URL, api_event["EventId"]) + self.logger.error( + 'API event has invalid start time "{0}": {1}'.format( + time_str, event_url + ) + ) + return - start = self.toTime(api_event['EventDate']) - api_event['start'] = start.replace(hour=start_time.tm_hour, - minute=start_time.tm_min) + start = self.toTime(api_event["EventDate"]) + api_event["start"] = start.replace( + hour=start_time.tm_hour, minute=start_time.tm_min + ) - api_event['status'] = self._event_status(api_event) + api_event["status"] = self._event_status(api_event) - web_event = self._get_web_event(api_event) + web_event = self._get_web_event(api_event) - if web_event: - yield api_event, web_event + if web_event: + return api_event, web_event - else: - event_url = '{0}/events/{1}'.format(self.BASE_URL, api_event['EventId']) - self.warning('API event could not be found in web interface: {0}'.format(event_url)) - continue + else: + event_url = "{0}/events/{1}".format(self.BASE_URL, api_event["EventId"]) + self.warning( + "API event could not be found in web interface: {0}".format(event_url) + ) def agenda(self, event): agenda_url = (self.BASE_URL +