Class: TrumpcareTracker::Reporters

Inherits:
RakeTask
  • Object
show all
Includes:
TrumpcareTracker::RakeTask::Methods
Defined in:
lib/trumpcare_tracker/reporters.rb

Overview

Rake tasks to generate audit reports in CSV format

require ‘trumpcare_tracker/reporters’ TrumpcareTracker::Reporters.new

$ bundle exec rake tracker:export $ bundle exec rake tracker:homepage_scraper

Instance Method Summary collapse

Methods included from TrumpcareTracker::RakeTask::Methods

#audit_rep, #audit_tweets, #handles, #mentions_mapper, #reps

Constructor Details

#initializeReporters

Returns a new instance of Reporters.



18
19
20
21
# File 'lib/trumpcare_tracker/reporters.rb', line 18

def initialize
  export_task
  homepage_scraper_task
end

Instance Method Details

#export_taskObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/trumpcare_tracker/reporters.rb', line 23

def export_task
  namespace :tracker do
    desc 'Output a report of Senate Democrats Trumpcare tweets'
    task :export do
      csv_tweet_report = CSV.generate do |csv|
        csv << %w[
          senator
          official_user_name
          alt_user_name
          tweets_in_last_seven_days
          trumpcare_tweets
          tct_percentage
          russia_tweets
          rt_percentage
          tct_to_rt_ratio
          trumpcare_tweet_urls
          russia_tweet_urls
        ]
        audit_tweets(reps) { |tracker| csv << tracker.to_h.values }
      end

      File.open('trumpcare_tweet_report.csv', 'w') do |file|
        file.write csv_tweet_report
      end
    end
  end
end

#homepage_scraper_taskObject



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/trumpcare_tracker/reporters.rb', line 53

def homepage_scraper_task
  namespace :tracker do
    desc 'Search Senators\' official homepage for TrumpCare and Russia Mentions'
    task :homepage_scraper do
      csv_homepage_report = CSV.generate do |csv|
        csv << %w[senator url trumpcare_mentions russia_mentions trumpcare_to_russia_ratio]
        reps.each do |rep|
          doc = Nokogiri::HTML(open(rep.url))
          trumpcare_mentions_count = mentions_mapper(doc, TrumpcareTracker.trumpcare_keyword_regex).count
          russia_mentions_count = mentions_mapper(doc, TrumpcareTracker.russia_keyword_regex).count
          csv << [
              rep.official_full,
              rep.url,
              trumpcare_mentions_count,
              russia_mentions_count,
              TrumpcareTracker.ratio(trumpcare_mentions_count, russia_mentions_count)
          ]
          puts "Scraped #{rep.official_full}'s homepage"
        end
      end

      File.open('trumpcare_homepage_report.csv', 'w') do |file|
        file.write csv_homepage_report
      end
    end
  end
end