def _parse_show(self, link): event_doc = html_util.fetch_and_parse(link) event_detail = event_doc.get_element_by_id("detail") show = Show() strong_iter = event_detail.iter(tag = 'strong') date_tag, title_tag, blank_tag, desc_tag = strong_iter.next(), strong_iter.next(), strong_iter.next(), strong_iter.next() date_txt = date_tag.text_content() if desc_tag.getnext().tail: time_match = self.TIME_RE.search(desc_tag.getnext().tail) else: time_match = None if time_match: time_txt = time_match.group('time') else: time_txt = None show.merge_key = link show.venue = self.venue() show.title = title_tag.text_content() show.show_time = date_util.parse_date_and_time(date_txt, time_txt) show.resources.show_url = link show.resources.resource_uris = self.resource_extractor.extract_resources(event_detail) for img_tag in event_detail.iter(tag = 'img'): if 'main' in img_tag.get('src'): show.resources.image_url = img_tag.get('src') break return show
def _trans_record(self, record): show = Show() show.venue = Venue(record.get('venue-name'), record.get('venue-url')) show.title = record.get('title') show.merge_key = record.get('merge-key') performers = [] if record.get('performers'): for performer in record['performers'].split(','): performers.append(Performer(performer.strip())) if record.get('tags'): show.tags = [t.strip() for t in record['tags'].split(',')] date_txt = record.get('show-date') if not date_txt: raise Exception('Show Date is required') else: show.date = date_util.parse_date_time(date_txt) if performers: show.performers = performers if record.get('show-time'): show.show_time = date_util.parse_date_and_time(date_txt, record.get('show-time')) if record.get('door-time'): show.show_time = date_util.parse_date_and_time(date_txt, record.get('door-time')) show.resources.show_url = record.get('show-url') show.resources.image_url = record.get('image-url') show.resources.resource_uris = self.resource_extractor.extract_resources(self._create_resource_doc(record)) return show