class TrumpcareTracker::RakeTask
Base rake task class
Public Instance Methods
audit_rep(i, rep, &block)
click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 59 def audit_rep(i, rep, &block) puts "Sending requests to Twitter API for #{rep.official_full}" rep_handles = handles.detect do |handle| handle['official'].downcase.strip == rep.twitter.downcase.strip end alt_screen_name = if rep_handles rep_handles['personal/campaign'] end tracker = TrumpcareTracker.new(rep.official_full, rep.twitter, alt_screen_name) start_time = Time.now tracker.audit duration = (Time.now - start_time).round(2) puts tracker.to_s block.call(tracker, rep) if block_given? puts "#{i + 1} down. Out of #{tracker.timeline.length} tweets checked,\n"\ "#{tracker.recent_tweets.length} were made in the last 7 days.\n"\ "The oldest tweet analyzed was created #{tracker.recent_tweets.last&.created_at&.strftime("%H:%M:%S %-m/%-d/%y")}\n"\ "#{tracker.requests} requests took #{duration} seconds." rescue Twitter::Error::TooManyRequests puts 'Rate limit exceeded, waiting 5 minutes' sleep(300) audit_rep(i, rep, &block) rescue Twitter::Error => e puts e.message audit_rep(i, rep, &block) end
audit_tweets(reps, &block)
click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 89 def audit_tweets(reps, &block) reps.each_with_index do |rep, i| next if rep.twitter.nil? audit_rep(i, rep, &block) end ensure `say "beep beep beep beep beep"` end
democrats(chamber = '')
click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 12 def democrats(chamber = '') chamber = chamber.to_s democrats = PYR.reps do |r| r.democrat = true r.chamber = chamber unless chamber.empty? end independents = PYR.reps do |r| r.independent = true r.chamber = chamber unless chamber.empty? end democrats.objects.to_a + independents.objects.to_a end
handles()
click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 55 def handles @_handles ||= CSV.read(File.expand_path('../twitter_handles.csv', __FILE__), headers: true) end
house_democrats()
click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 32 def house_democrats democrats('lower') end
house_republicans()
click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 51 def house_republicans republicans('lower') end
mentions_mapper(doc, regex)
click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 98 def mentions_mapper(doc, regex) doc.text.split("\n").select { |string| string.downcase.match?(regex) } end
republicans(chamber = '')
click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 36 def republicans(chamber = '') chamber = chamber.to_s republicans = PYR.reps do |r| r.republican = true r.chamber = chamber unless chamber.empty? end republicans.objects end
senate_democrats()
click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 28 def senate_democrats democrats('upper') end
senate_republicans()
click to toggle source
# File lib/trumpcare_tracker/rake_task.rb, line 47 def senate_republicans republicans('upper') end