def parse_event_list_from_html(html): soup = BeautifulSoup(html, HTML_PARSER) event_list_divs = soup.select("#list")[0].find_all('div', recursive=False) event_list = list() for div in event_list_divs: name_tag = div.find("span", class_="eventname") if not name_tag: continue host_tag = div.find("span", class_="event_by") desc_tag = div.find("span", {"itemprop": "description"}) start_date_tag = div.find("time", {"itemprop": "startDate"}) end_date_tag = div.find("time", {"itemprop": "endDate"}) # No idea why it's just 'name' location_tag = div.find("span", {"itemprop": "name"}) event = Event() event.name = name_tag.string event.host = host_tag.string[HOST_NAME_START:] event.desc = desc_tag.string event.start_date = datetime_string_to_obj( start_date_tag['datetime']) event.end_date = datetime_string_to_obj(end_date_tag['datetime']) event.location = location_tag.string event_list.append(event) return event_list
def google_format_to_event(src_event): event = Event() event.name = src_event.get('summary', '') event.location = src_event.get('location', '') event.desc = src_event.get('description', '') event.start_date = dateutil.parser.parse(src_event['start']['dateTime']) event.end_date = dateutil.parser.parse(src_event['end']['dateTime']) event.host = src_event.get('extendedProperties', {}).get('shared', {}).get('host', '') return event