def main(trello, secrets, debug): sites = [ { 'url': 'http://www.wonderballroom.com/all-shows/', 'venue': 'Wonder Ballroom', }, ] for site in sites: url = site['url'] venue = site['venue'] print("Scanning {}... ".format(venue), end='') content = requests.get(url) doc = bs(content.text, 'html.parser') events = doc.select('.vevent') event_urls = map( lambda x: ( x, urljoin(site['url'], x.select('.url')[0].get('href')) ), events) final_events = [] for event, url in event_urls: content = requests.get(url) doc = bs(content.text, 'html.parser') parsed_event = parse_event(doc, venue, debug) final_events.append(parsed_event) print("Found {} items.".format(len(final_events))) [print(" {}".format(",".join(event['headliners']))) for event in final_events] sync_to_trello(trello, secrets, final_events)
def main(trello, secrets): sites = [ { 'url': 'https://www.eventbrite.com/venue/api/feeds/organization/92.json', 'venue': "Analog Theater", }, ] for site in sites: url = site['url'] venue = site['venue'] print("Scanning {}... ".format(venue), end='') content = requests.get(url) events = json.loads(content.text) final_events = [] for event in events: parsed_event = parse_event(event) final_events.append(parsed_event) print("Found {} items.".format(len(final_events))) [ print(" {}".format(",".join(event['headliners']))) for event in final_events ] sync_to_trello(trello, secrets, final_events)
def main(trello, secrets): sites = [ { 'url': "http://www.crystalballroompdx.com/events/search/Any?joint_name=Crystal+Ballroom&location_id=2", 'venue': "Crystal Ballroom", }, ] for site in sites: url = site['url'] venue = site['venue'] print("Scanning {}... ".format(venue), end='') headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:57.0) Gecko/20100101 Firefox/57.0', 'X-Requested-With': 'XMLHttpRequest', 'Host': 'www.crystalballroompdx.com', 'Referer': 'http://www.crystalballroompdx.com/1904-cbr-event-calendar', 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Accept-Language': 'en-US,en;q=0.5'} content = requests.get(url, headers=headers) events = content.json() final_events = [parse_event(event, venue) for event in events if parse_event(event, venue) is not None] print("Found {} items.".format(len(final_events))) [print(" {}".format(",".join(event['headliners']))) for event in final_events] sync_to_trello(trello, secrets, final_events)
def main(trello, secrets): ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' sites = [ { 'url': 'http://roselandpdx.com/events/?tribe_bar_rhp_venue=168', 'venue': 'Roseland Theater', }, { 'url': 'http://hawthornetheatre.com/events/', 'venue': 'Hawthorne Theatre', }, ] for site in sites: url = site['url'] venue = site['venue'] print("Scanning {}... ".format(venue), end='') content = requests.get(url, headers={"User-Agent": ua}) doc = bs(content.text, 'html.parser') events = doc.select('.rhino-event-header') event_urls = map(lambda x: (x, x.select('.url')[0].get('href')), events) final_events = [] for event, url in event_urls: content = requests.get(url, headers={"User-Agent": ua}) doc = bs(content.text, 'html.parser') parsed_event = parse_event(doc, venue) final_events.append(parsed_event) print("Found {} items.".format(len(final_events))) sync_to_trello(trello, secrets, final_events)
def main(trello, secrets): sites = [ { 'url': 'http://www.mississippistudios.com/calendar', 'venue': 'Mississippi Studios', }, { 'url': 'http://www.dougfirlounge.com/calendar', 'venue': 'Doug Fir Lounge', }, { 'url': 'http://www.revolutionhall.com/calendar', 'venue': 'Revolution Hall', }, { 'url': 'http://www.aladdin-theater.com/calendar', 'venue': 'Aladdin Theater', }, { 'url': 'http://www.holocene.org/calendar', 'venue': 'Holocene', }, ] for site in sites: url = site['url'] venue = site['venue'] print("Scanning {}... ".format(venue), end='') content = requests.get(url) doc = bs(content.text, 'html.parser') days = doc.select('.vevent.data') final_events = [] for day in days: time_str = day.find('span').get('title') date = arrow.get(time_str) events = day.find_all('div', class_='one-event') if len(events) == 0: events = day.find_all('section', class_='one-event') for event in events: parsed_event = parse_event(event, venue) start_time = event.find(class_='start-time') if start_time: start_time = start_time.text.lower() ampm = start_time.split(' ')[-1] parts = start_time.split(' ')[0].split(':') hours = int(parts[0]) mins = int(parts[1]) if ampm.startswith('p'): hours += 12 date = date.replace(hour=hours % 24, minute=mins % 60) parsed_event['date'] = date final_events.append(parsed_event) print("Found {} items.".format(len(final_events))) [print(" {}".format(",".join(event['headliners']))) for event in final_events] sync_to_trello(trello, secrets, final_events)
def main(trello, secrets): sites = [ { 'url': 'http://startheaterportland.com/', 'venue': 'Star Theater', }, ] for site in sites: url = site['url'] venue = site['venue'] print("Scanning {}... ".format(venue), end='') result = Render(url) import pdb pdb.set_trace() return content = requests.get(url) doc = bs(content.text, 'html.parser') days = doc.select('.tw-section') import pdb pdb.set_trace() final_events = [] for day in days: time_str = day.find('span').get('title') date = arrow.get(time_str) events = day.find_all('div', class_='one-event') for event in events: parsed_event = parse_event(event, venue) start_time = event.find(class_='start-time') if start_time: start_time = start_time.text.lower() ampm = start_time.split(' ')[-1] parts = start_time.split(' ')[0].split(':') hours = int(parts[0]) mins = int(parts[1]) if ampm.startswith('p'): hours += 12 date = date.replace(hour=hours % 24, minute=mins % 60) parsed_event['date'] = date final_events.append(parsed_event) print("Found {} items.".format(len(final_events))) [ print(" {}".format(",".join(event['headliners']))) for event in final_events ] sync_to_trello(trello, secrets, final_events)
def main(trello, secrets): sites = [ { 'url': "http://danteslive.com/event/?twpage={}", 'venue': "Dante's", }, ] for site in sites: url = site['url'] venue = site['venue'] print("Scanning {}... ".format(venue), end='') index = 0 final_events = [] # deal with pagination of events summary page while True: content = requests.get(url.format(index)) doc = bs(content.text, 'html.parser') event_list = doc.select('.tw-plugin-upcoming-event-list')[0] events = event_list.find_all('td', style=False) # It returns a page for any index. If no events, we've reached the # last page if not events: break event_links = [event.find('a')['href'] for event in events] # dive into each event, as the info is much more regular in the # event page vs the summary page for link in event_links: event_content = requests.get(link) event = bs(event_content.text, 'html.parser') parsed_event = parse_event(event, venue) final_events.append(parsed_event) index += 1 print("Found {} items.".format(len(final_events))) [ print(" {}".format(",".join(event['headliners']))) for event in final_events ] sync_to_trello(trello, secrets, final_events)
def main(trello, secrets): sites = [ { 'url': 'http://www.tonicloungeportland.com/', 'venue': 'Tonic Lounge', }, { 'url': 'http://highwatermarklounge.com/', 'venue': 'High Water Mark Lounge', }, ] for site in sites: url = site['url'] venue = site['venue'] print("Scanning {}... ".format(venue), end='') content = requests.get(url) doc = bs(content.text, 'html.parser') events = doc.select('#grid')[0].select('a') # filter out any events that have no date (not real events) events = [e for e in events if len(e.find_all(class_='event-date')) > 0] final_events = [] for event in events: # Get info from summary view date_elem = event.find(class_='event-date') date = get_date(date_elem) artists = get_artists(date_elem) # Get the rest from the specific event content = requests.get(event['href']) doc = bs(content.text, 'html.parser') parsed_event = parse_event(doc, venue, artists, date) # Fill in the fields we got from summary final_events.append(parsed_event) print("Found {} items.".format(len(final_events))) [print(" {}".format(",".join(event['headliners']))) for event in final_events] sync_to_trello(trello, secrets, final_events)
def main(trello, secrets): sites = [ { 'url': 'http://bossanovaballroom.com/shows/list/?tribe_event_display=list&tribe_paged={}', 'venue': 'Bossanova Ballroom', }, ] for site in sites: url = site['url'] venue = site['venue'] print("Scanning {}... ".format(venue), end='') index = 1 final_events = [] # deal with pagination summary page while True: content = requests.get(url.format(index), headers={"User-Agent": ua}) doc = bs(content.text, 'html.parser') events = doc.find_all(class_='type-tribe_events') if not events: break for event in events: parsed_event = parse_event(event, venue) final_events.append(parsed_event) index += 1 print("Found {} items.".format(len(final_events))) [ print(" {}".format(",".join(event['headliners']))) for event in final_events ] sync_to_trello(trello, secrets, final_events)