Beispiel #1
0
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)
Beispiel #2
0
    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)
Beispiel #3
0
        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)
Beispiel #4
0
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)
Beispiel #5
0
    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)
Beispiel #6
0
    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)
Beispiel #7
0
    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)
Beispiel #9
0
  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)
Beispiel #10
0
    
    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)
Beispiel #11
0
      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)
Beispiel #12
0
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)
Beispiel #13
0
      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)
Beispiel #14
0
        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)
Beispiel #15
0
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)
Beispiel #16
0
    
    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)
Beispiel #17
0
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)
Beispiel #18
0
      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)
Beispiel #19
0
    
  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/')
    
Beispiel #20
0
        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)
Beispiel #21
0
            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)
Beispiel #22
0
  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)
Beispiel #23
0
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)
Beispiel #24
0
    
    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)
Beispiel #25
0
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)
Beispiel #26
0
      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)
Beispiel #27
0
        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)
Beispiel #28
0
    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)
Beispiel #29
0
    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)
Beispiel #30
0
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)