Created
June 28, 2018 17:59
-
-
Save pachacamac/f058ab74260950cede2e81474f2ee577 to your computer and use it in GitHub Desktop.
get current factory berlin events
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'mechanize' | |
require 'open-uri' | |
require 'json' | |
require 'time' | |
def mechanize_session | |
browser = Mechanize.new | |
#browser.history_added = Proc.new { sleep 0.5 } | |
browser.user_agent = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36' | |
yield(browser) | |
end | |
def events_for_month(d = Date.today) | |
mechanize_session do |agent| | |
page = agent.get("https://factoryberlin.com/events/#{d.year}-#{d.month.to_s.rjust(2,'0')}") | |
venues = Hash.new('unknown').merge( | |
page.css('input[name="tribe_venues[]"], input[name="tribe_venues[]"] + span').each_slice(2).map{|k,v| | |
[k.attribute('value').value, v.text] | |
}.to_h) | |
page.css('.tribe_events'). | |
map{|e| JSON.parse(e.attribute('data-tribejson').value, symbolize_names: true)}. | |
map{|e| | |
e[:categoryClasses] = e[:categoryClasses].split | |
venue_class = e[:categoryClasses].find{|c| c =~ /\Atribe-events-venue-/} | |
e[:venue] = venues[venue_class.split('-').last] if venue_class | |
e[:startTime] = Time.parse(e[:startTime]) | |
e[:endTime] = Time.parse(e[:endTime]) | |
e[:membersOnly] = !!e[:categoryClasses].find{|c| c =~ /members-only/i} | |
e | |
} | |
end | |
end | |
puts JSON.pretty_generate(events_for_month) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment