app/models/calagator/source/parser/meetup.rb in calagator-1.0.0.rc3 vs app/models/calagator/source/parser/meetup.rb in calagator-1.0.0

- old
+ new

@@ -1,23 +1,25 @@ module Calagator class Source::Parser::Meetup < Source::Parser self.label = :Meetup - self.url_pattern = %r{^http://(?:www\.)?meetup\.com/[^/]+/events/([^/]+)/?} + self.url_pattern = %r{^https?://(?:www\.)?meetup\.com/[^/]+/events/([^/]+)/?} def to_events return fallback unless Calagator.meetup_api_key.present? return unless data = get_data + start_time = Time.at(data['time']/1000).utc event = Event.new({ source: source, - title: data['name'], + title: "#{data['group']['name']} - #{data['name']}", description: data['description'], url: data['event_url'], venue: to_venue(data['venue']), - tag_list: "meetup:event=#{data['event_id']}, meetup:group=#{data['group']['urlname']}", + tag_list: "meetup:event=#{data['event_id']}, meetup:group=#{data['group']['urlname']}#{group_topics(data)}", # Meetup sends us milliseconds since the epoch in UTC - start_time: Time.at(data['time']/1000).utc, + start_time: start_time, + end_time: data['duration'] ? start_time + data['duration']/1000 : nil }) [event_or_duplicate(event)] end @@ -35,13 +37,19 @@ to_events_api_helper(url, "problem") do |event_id| [ "https://api.meetup.com/2/event/#{event_id}", { key: Calagator.meetup_api_key, - sign: 'true' + sign: 'true', + fields: 'topics' } ] end + end + + def group_topics(data) + topics = data['group']['topics'] + topics.map{ |t| t['name'].downcase }.join(', ').insert(0, ', ') unless topics.empty? end def to_venue(value) return if value.blank? venue = Venue.new({