from fancyashow.parsers.common.facebook import FacebookParser from fancyashow.extensions import ExtensionLibrary from fancyashow.extensions.models import Venue extensions = ExtensionLibrary() class SilentBarn(FacebookParser): @classmethod def profile_id(cls): return 'silentbarn' @classmethod def venue(cls): return Venue('Silent Barn', 'http://www.facebook.com/silentbarn') @classmethod def id(cls): return 'us.ny.brooklyn.silent-barn' extensions.register_show_parser(SilentBarn)
show.merge_key = link show.venue = self.venue() show.performers = performers show.show_time = date_util.parse_show_time(date_txt, time_txt) show.door_time = date_util.parse_door_time(date_txt, time_txt) show.resources.show_url = link show.resources.resource_uris = self.resource_extractor.extract_resources(event) if img is not None: show.resources.image_url = img.get('src') return show def _parse_performers(self, h): ret = [] for name in lang_util.parse_performers(h.text_content()): ret.append(Performer(name, headliner = h.tag in ('h1', 'h2'))) return ret def venue(self): return Venue('Knitting Factory', self.BASE_URL) @classmethod def id(cls): return 'us.ny.brooklyn.knitting-factory' extensions.register_show_parser(KnittingFactory)
if time_match: first_time = time_txt = time_match.group('time') else: time_txt = None performers.append(Performer(header.text_content(), start_time = time_txt, headliner = header.tag in ('h1'))) show = Show() show.merge_key = link show.venue = self.venue() show.performers = performers show.show_time = date_util.parse_date_and_time(date_txt, first_time) show.resources.show_url = link show.resources.resource_uris = self.resource_extractor.extract_resources(event) if img is not None: show.resources.image_url = img.get('src') return show def venue(self): return Venue('Pianos', self.BASE_URL) @classmethod def id(cls): return 'us.ny.manhattan.pianos' extensions.register_show_parser(Pianos)
from fancyashow.extensions import ExtensionLibrary from fancyashow.parsers.common.lastfm import LastFMParser from fancyashow.extensions.models import Venue extensions = ExtensionLibrary() class RadioCityMusicHall(LastFMParser): def venue_id(self): return 8906841 def venue(self): return Venue('Radio City Music Hall', 'http://www.radiocity.com/') @classmethod def id(self): return 'us.ny.manhattan.radio-city-music-hall' extensions.register_show_parser(RadioCityMusicHall)
date_tag = event_detail.get_element_by_id("bellhouse_date") date_match = self.DATE_RE.match(date_tag.text_content()) time_match = self.TIME_RE.search(event_detail.text_content()) if date_match and time_match: month, day = (int(d) for d in (date_match.group('month'), date_match.group('day'))) show_date = datetime.now().replace(month = month, day = day) show.show_time = date_util.parse_date_and_time(show_date.strftime('%F'), time_match.group('time')) show.resources.resource_uris = self.resource_extractor.extract_resources(event_detail) for img_tag in event_detail.iter(tag = 'img'): show.resources.image_url = img_tag.get('src') break date_util.adjust_fuzzy_years(show, self._parser_started) return show def venue(self): return Venue('The Bell House', self.BASE_URL) @classmethod def id(cls): return 'us.ny.brooklyn.bell-house' extensions.register_show_parser(BellHouse)
if not self.BACK_ROOM_RE.match(entry.title.text): return None title_txt = self.BACK_ROOM_RE.sub('', entry.title.text) show = Show() show.venue = self.venue() show.performers = [Performer(p) for p in lang_util.parse_performers(title_txt)] show.show_time = date_util.parse_date_time(entry.when[0].start_time) return show def venue(self): return Venue('The Gutter', 'http://www.thegutterbrooklyn.com/') @classmethod def id(self): return 'us.ny.brooklyn.gutter' @classmethod def calendar_id(cls): return '*****@*****.**' @classmethod def group_by_date(cls): return False extensions.register_show_parser(Gutter)
show = Show() date_txt = html_util.get_first_element(event_detail, 'h2').text_content() performers_txt = html_util.get_first_element(event_detail, '.caption').text_content() show.venue = self.venue() show.performers = [Performer(p) for p in lang_util.parse_performers(performers_txt)] if not date_txt.lower().startswith('every'): show.date = date_util.parse_date_and_time(date_txt, None) show.resources.resource_uris = self.resource_extractor.extract_resources(event_detail) for img_tag in event_detail.iter(tag = 'img'): show.resources.image_url = img_tag.get('src') break date_util.adjust_fuzzy_years(show, self._parse_started) return show def venue(self): return Venue('Union Pool', self.BASE_URL) @classmethod def id(cls): return 'us.ny.brooklyn.union-pool' extensions.register_show_parser(UnionPool)
performers = [] show = Show() show.merge_key = link show.venue = self.venue() show.performers = [Performer(p) for p in lang_util.parse_performers("/".join(title_txt))] show.door_time = date_util.parse_show_time(date_txt, time_txt) show.show_time = date_util.parse_door_time(date_txt, time_txt) show.resources.show_url = link show.resources.resource_uris = self.resource_extractor.extract_resources(event_detail) img = html_util.get_first_element(event_detail, "img") if img is not None: show.resources.image_url = img.get("src") return show def venue(self): return Venue("Santos Party House", self.BASE_URL) @classmethod def id(cls): return "us.ny.manhattan.santos-party-house" extensions.register_show_parser(SantosPartyHouse)
def _parse_show(self, tds): date, info, time = tds[0], tds[1], tds[2] date_txt = date.text_content() time_match = date_util.STRICT_TIME_RE.search(time.text_content()) if time_match: time_txt = time_match.group('time') else: raise Exception('Unable to determine time for show: %s - %s - %s' % (date_txt, time.text_content(), info.text_content())) performers = [] for el in info.iter(tag = 'a'): performers.append(el.text_content()) show_time = date_util.parse_date_and_time(date_txt, time_txt) resource_uris = self.resource_extractor.extract_resources(*tds) return (show_time, ' '.join(performers), resource_uris) def venue(self): return Venue('Barbes', self.BASE_URL) @classmethod def id(cls): return 'us.ny.brooklyn.barbes' extensions.register_show_parser(Barbes)
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 venue(self): return Venue('Public Assembly', self.BASE_URL) @classmethod def id(cls): return 'us.ny.brooklyn.public-assembly' extensions.register_show_parser(PublicAssembly)
if self.SHOW_START_RE.match(line): show = self._parse_show(line) if show: yield show def _parse_show(self, show_txt): parts = show_txt.split(self.SHOW_PART_SEP) date_txt, time_txt = parts[0], parts[1] performers = parts[-1] show = Show() show.show_time = date_util.parse_date_and_time(date_txt, time_txt) show.venue = self.venue() show.performers = [Performer(p) for p in lang_util.parse_performers(performers)] date_util.adjust_fuzzy_years(show, self._parse_started) return show def venue(self): return Venue('Rock Shop', self.BASE_URL) @classmethod def id(cls): return 'us.ny.brooklyn.rock-shop' extensions.register_show_parser(RockShop)
from fancyashow.extensions import ExtensionLibrary from fancyashow.parsers.common.lastfm import LastFMParser from fancyashow.extensions.models import Venue extensions = ExtensionLibrary() class MadisonSquareGarden(LastFMParser): def venue_id(self): return 8778812 def venue(self): return Venue('Madison Square Garden', 'http://www.thegarden.com/') @classmethod def id(self): return 'us.ny.manhattan.madison-square-garden' extensions.register_show_parser(MadisonSquareGarden)
text = e.tail or e.text_content() if performer_is_next and text: performer_is_next = False headliner = e.tag == 'span' and html_util.has_class(e, 'headliner') time_match = date_util.TIME_RE.search(start_time_txt) if time_match and not self.NUM_RE.search(start_time_txt): logger.debug('Got start time: %s' % start_time_txt) start_time = time_match.group('time') else: start_time = None performers.append(Performer(text, start_time = start_time, headliner = headliner)) elif text: start_time_txt = text performer_is_next = self.NUM_RE.search(start_time_txt) or date_util.TIME_RE.search(start_time_txt) return performers def venue(self): return Venue('Living Room', self.BASE_URL) @classmethod def id(cls): return 'us.ny.manhattan.living-room' extensions.register_show_parser(LivingRoom)
performers.append(Performer(name, start_time = time_txt)) if len(performers) == 0: return None show = Show() show.venue = self.venue() show.performers = performers show.show_time = date_util.parse_date_and_time(date_txt, show_time_txt) show.resources.resource_uris = self.resource_extractor.extract_resources(info_el) # Fontanas's stores the large image in an anchor tag for a in info_el.iter(tag = 'a'): if self.IMAGE_RE.search(a.get('href', '')): show.resources.image_url = a.get('href') date_util.adjust_fuzzy_years(show, self._parse_started) return show def venue(self): return Venue('Fontanas', self.BASE_URL) @classmethod def id(cls): return 'us.ny.manhattan.fontanas' extensions.register_show_parser(Fontanas)
from fancyashow.extensions import ExtensionLibrary from fancyashow.parsers.common.lastfm import LastFMParser from fancyashow.extensions.models import Venue extensions = ExtensionLibrary() class RoselandBallroom(LastFMParser): def venue_id(self): return 8780835 def venue(self): return Venue('Roseland Ballroom', 'http://www.roselandballroom.com/') @classmethod def id(self): return 'us.ny.manhattan.roseland-ballroom' extensions.register_show_parser(RoselandBallroom)
date_match = self.DATE_RE.match(date_tag.text_content()) time_match = self.TIME_RE.search(date_tag.text_content()) if date_match and time_match: month, day = (int(d) for d in (date_match.group('month'), date_match.group('day'))) show_date = datetime.now().replace(month = month, day = day) show.show_time = date_util.parse_date_and_time(show_date.strftime('%F'), time_match.group('time')) show.resources.resource_uris = self.resource_extractor.extract_resources(event_detail) for img_tag in event_detail.iter(tag = 'img'): show.resources.image_url = img_tag.get('src') break date_util.adjust_fuzzy_years(show, self._parse_started) return show def venue(self): return Venue('Union Hall', self.BASE_URL) @classmethod def id(cls): return 'us.ny.brooklyn.union-hall' extensions.register_show_parser(UnionHall)
import re logger = logging.getLogger(__name__) extensions = ExtensionLibrary() class WebsterHall(LastFMParser): def venue_id(self): return 8778811 def venue(self): return Venue('Webster Hall', "http://www.websterhall.com/") @classmethod def id(cls): return 'us.ny.manhattan.webster-hall' class WebsterHallStudio(LastFMParser): def venue_id(self): return 9004895 def venue(self): return Venue('The Studio at Webster Hall', "http://www.websterhall.com/thestudio/") @classmethod def id(cls): return 'us.ny.manhattan.webster-hall-studio' extensions.register_show_parser(WebsterHall) extensions.register_show_parser(WebsterHallStudio)
except: logging.exception('Unable to parse: %s - %s' % (date_txt, time_txt)) continue show.resources.image_url = img_url show.resources.resource_uris = self.resource_extractor.extract_resources(show_doc) date_util.adjust_fuzzy_years(show, entry_date) shows.append(show) return shows def _is_img(self, el): if el.tag == 'img': return True elif el.tag == 'a': for img in el.iter(tag = 'img'): return True return False def venue(self): return Venue('Glasslands', self.BASE_URL) @classmethod def id(cls): return 'us.ny.brooklyn.glasslands' extensions.register_show_parser(Glasslands)
def show_list_url(self): return self.venue().url + 'listing' def event_url_re(self): return re.compile(self.venue().url + 'event/\d+') class MercuryLounge(BoweryPresentsBase): def venue(self): return Venue('Mercury Lounge', 'http://www.mercuryloungenyc.com/') @classmethod def id(cls): return 'us.ny.manhattan.mercury-lounge' extensions.register_show_parser(MercuryLounge) class BoweryBallroom(BoweryPresentsBase): def venue(self): return Venue('Bowery Ballroom', 'http://www.boweryballroom.com/') @classmethod def id(cls): return 'us.ny.manhattan.bowery-ballroom' extensions.register_show_parser(BoweryBallroom) class MusicHallofWilliamsburg(BoweryPresentsBase): def venue(self): return Venue('Music Hall of Williamsburg', 'http://www.musichallofwilliamsburg.com/')
continue elif 'pub side' in entry.title.text.lower(): logger.debug('Entry "%s" is on the Pub Side of Spike Hill, skipping' % entry.title.text) continue start_time = date_util.parse_date_time(entry.when[0].start_time) show.show_time = min(start_time, show.show_time or start_time) show.performers.append(Performer(entry.title.text)) return [show] def venue(self): return Venue('Spike Hill', 'http://www.spikehill.com/') @classmethod def id(self): return 'us.ny.brooklyn.spike-hill' @classmethod def calendar_id(cls): return '*****@*****.**' @classmethod def group_by_date(cls): return True extensions.register_show_parser(SpikeHill)
had_num = True elif had_num: performers.append(Performer(line)) had_num = False else: logger.error('Unknown line format: %s' % line) show.venue = self.venue() show.performers = performers show.date = date_util.parse_date_and_time(date_txt, None) show.resources.resource_uris = self.resource_extractor.extract_resources(event_detail) for img_tag in event_detail.iter(tag = 'img'): show.resources.image_url = img_tag.get('src') break date_util.adjust_fuzzy_years(show, self._parse_started) return show def venue(self): return Venue('Bruar Falls', self.BASE_URL) @classmethod def id(cls): return 'us.ny.brooklyn.bruar-falls' extensions.register_show_parser(BruarFalls)
def _parse_performers(self, a): name = a.text_content() if html_util.has_class(a, 'headliner'): return [Performer(name, headliner = True)] elif html_util.has_class(a, 'opener'): return [Performer(name, headliner = False)] return [] def fetch_performer_content(self, url): doc = html_util.fetch_and_parse(url) return doc.cssselect('#content') def show_list_url(self): return self.venue().url + 'events' def event_url_re(self): return re.compile(self.venue().url + 'event/\d+') def venue(self): return Venue('Le Poisson Rouge', 'http://www.lepoissonrouge.com/') @classmethod def id(cls): return 'us.ny.manhattan.lpr' extensions.register_show_parser(LPR)
from fancyashow.extensions import ExtensionLibrary from fancyashow.parsers.common.lastfm import LastFMParser from fancyashow.extensions.models import Venue extensions = ExtensionLibrary() class IrvingPlaza(LastFMParser): def venue_id(self): return 8778815 def venue(self): return Venue('Irving Plaza', 'http://www.irvingplaza.com/') @classmethod def id(self): return 'us.ny.manhattan.irving-plaza' extensions.register_show_parser(IrvingPlaza)
if date_txt.lower().startswith('tonight'): date_txt = datetime.today().date().strftime('%F') img = html_util.get_first_element(show_el, 'img', optional = True) show = Show() show.performers = [Performer(p) for p in lang_util.parse_performers(title)] show.show_time = date_util.parse_date_and_time(date_txt, None) show.merge_key = event_id show.venue = self.venue() show.resources.show_url = link show.resources.resource_uris = self.resource_extractor.extract_resources(show_el) if img is not None: show.resources.image_url = img.get('src') return show def venue(self): return Venue('Coco 66', self.BASE_URL) @classmethod def id(cls): return 'us.ny.brooklyn.coco-66' extensions.register_show_parser(Coco66)
from fancyashow.extensions import ExtensionLibrary from fancyashow.parsers.common.myspace import MyspaceParser from fancyashow.extensions.models import Venue extensions = ExtensionLibrary() class CameoGallery(MyspaceParser): def venue(self): return Venue('Cameo Gallery', 'http://www.myspace.com/cameogallery/') @classmethod def profile_id(self): return 459194474 @classmethod def id(self): return 'us.ny.brooklyn.cameo-gallery' extensions.register_show_parser(CameoGallery)
performers.append(Performer(name)) show = Show() show.venue = self.venue() show.performers = performers show.show_time = date_util.parse_date_and_time(date_txt, time_txt) show.resources.resource_uris = self.resource_extractor.extract_resources(el) for img in el.iter(tag = 'img'): logging.debug('image: %s - %s' % (img.get('src'), self.IMAGE_RE.search(img.get('src', '')))) if self.IMAGE_RE.search(img.get('src', '')): show.resources.image_url = img.get('src') date_util.adjust_fuzzy_years(show, self._parse_started) return show def _parse_performer(self, h): return Performer(h.text_content(), headliner = h.tag in ('h1', 'h2')) def venue(self): return Venue('Europa', self.BASE_URL) @classmethod def id(cls): return 'us.ny.brooklyn.europa' extensions.register_show_parser(Europa)
for p in html_util.get_elements(event_detail, ".supports"): for pi in lang_util.parse_performers(p.text_content()): performers.append(Performer(pi, headliner=False)) show = Show() show.merge_key = link show.venue = self.venue() show.performers = performers show.show_time = date_util.parse_show_time(date_txt, time_txt) show.door_time = date_util.parse_door_time(date_txt, time_txt) show.resources.show_url = link show.resources.resource_uris = self.resource_extractor.extract_resources(event_detail) if img is not None: show.resources.image_url = img.get("src") return show def venue(self): return Venue("Brooklyn Bowl", self.BASE_URL) @classmethod def id(cls): return "us.ny.brooklyn.brooklyn-bowl" extensions.register_show_parser(BrooklynBowl)
time_txt = event_detail.text_content() show = Show() show.venue = self.venue() title_txt = html_util.get_first_element(event_detail, '.event-name').text_content() show.performers = [Performer(p) for p in lang_util.parse_performers(title_txt)] show.show_time = date_util.parse_show_time(date_txt, time_txt) show.door_time = date_util.parse_door_time(date_txt, time_txt) show.resources.resource_uris = self.resource_extractor.extract_resources(event_detail) img = html_util.get_first_element(el, ".event-image img", optional = True) if img is not None: show.resources.image_url = img.get('src') date_util.adjust_fuzzy_years(show, self._parse_started) return show def venue(self): return Venue('Southpaw', self.BASE_URL) @classmethod def id(cls): return 'us.ny.brooklyn.southpaw' extensions.register_show_parser(Southpaw)
for e in show_detail.getchildren(): text = e.tail or e.text_content() if performer_is_next and text: performer_is_next = False headliner = e.tag == 'span' and html_util.has_class(e, 'headliner') time_match = self.TIME_RE.search(start_time_txt) if time_match and not self.NUM_RE.search(start_time_txt): start_time = time_match.group('time') else: start_time = None performers.append(Performer(text, start_time = start_time, headliner = headliner)) elif text: start_time_txt = text performer_is_next = self.NUM_RE.search(start_time_txt) or date_util.TIME_RE.search(start_time_txt) return performers def venue(self): return Venue('Cake Shop', self.BASE_URL) @classmethod def id(cls): return 'us.ny.brooklyn.cake-shop' extensions.register_show_parser(CakeShop)
from fancyashow.extensions import ExtensionLibrary from fancyashow.parsers.common.myspace import MyspaceParser from fancyashow.extensions.models import Venue extensions = ExtensionLibrary() class SheaStadium(MyspaceParser): def venue(self): return Venue('Shea Stadium', 'http://www.myspace.com/sheastadiumbk') @classmethod def profile_id(self): return 463786807 @classmethod def id(self): return 'us.ny.brooklyn.shea-stadium' extensions.register_show_parser(SheaStadium)