Last active
October 27, 2015 00:24
-
-
Save luigi/2843398 to your computer and use it in GitHub Desktop.
Calculate the percentage of tweets linking to a website that came from the Tweet button
This file contains 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
# | |
# Before running: | |
# $ gem install twitter | |
# | |
# Register a Twitter application to get auth credentials: | |
# https://dev.twitter.com/apps | |
# | |
# To run: | |
# $ ruby counter.rb upworthy.com 500 | |
# | |
# Where 'upworthy.com' is the website and '500' is the number of tweets to analyze. | |
# | |
# Context: | |
# http://luigimontanez.com/2012/actually-social-media-buttons-work-really-well | |
# | |
require 'rubygems' | |
require 'twitter' | |
search_term = ARGV[0] | |
num_tweets = ARGV.fetch(1, 100).to_i | |
total_tweets = 0 | |
from_button = 0 | |
from_ios = 0 | |
from_android = 0 | |
from_web = 0 | |
from_facebook = 0 | |
from_hootsuite = 0 | |
from_ifttt = 0 | |
from_twitterfeed = 0 | |
from_dlvr = 0 | |
client = Twitter::REST::Client.new do |config| | |
config.consumer_key = "YOUR_CONSUMER_KEY" | |
config.consumer_secret = "YOUR_CONSUMER_SECRET" | |
config.access_token = "YOUR_ACCESS_TOKEN" | |
config.access_token_secret = "YOUR_ACCESS_TOKEN_SECRET" | |
end | |
options = {:count => num_tweets, :result_type => 'recent'} | |
client.search(search_term, result_type: "recent").take(num_tweets).each do |tweet| | |
total_tweets += 1 | |
from_button += 1 if tweet.source =~ /Twitter for Websites/ | |
from_ios += 1 if tweet.source =~ /iOS/ | |
from_ios += 1 if tweet.source =~ /iPhone/ | |
from_ios += 1 if tweet.source =~ /iPad/ | |
from_android += 1 if tweet.source =~ /Android/ | |
from_web += 1 if tweet.source =~ /Web Client/ | |
from_facebook += 1 if tweet.source =~ /Facebook/ | |
from_hootsuite += 1 if tweet.source =~ /Hootsuite/ | |
from_ifttt += 1 if tweet.source =~ /IFTTT/ | |
from_twitterfeed += 1 if tweet.source =~ /twitterfeed/ | |
from_dlvr += 1 if tweet.source =~ /dlvr/ | |
max_id = tweet.id | |
end | |
puts "Search term: #{search_term}" | |
puts "Total tweets analyzed: #{total_tweets}" | |
puts "Tweets from button: #{from_button} (#{sprintf('%.1f', (from_button.to_f / total_tweets.to_f) * 100)}%)" | |
puts "Tweets from iOS: #{from_ios} (#{sprintf('%.1f', (from_ios.to_f / total_tweets.to_f) * 100)}%)" | |
puts "Tweets from Android: #{from_android} (#{sprintf('%.1f', (from_android.to_f / total_tweets.to_f) * 100)}%)" | |
puts "Tweets from Twitter.com: #{from_web} (#{sprintf('%.1f', (from_web.to_f / total_tweets.to_f) * 100)}%)" | |
puts "Tweets from Facebook: #{from_facebook} (#{sprintf('%.1f', (from_facebook.to_f / total_tweets.to_f) * 100)}%)" | |
puts "Tweets from Hootsuite: #{from_hootsuite} (#{sprintf('%.1f', (from_hootsuite.to_f / total_tweets.to_f) * 100)}%)" | |
puts "Tweets from IFTTT: #{from_ifttt} (#{sprintf('%.1f', (from_ifttt.to_f / total_tweets.to_f) * 100)}%)" | |
puts "Tweets from twitterfeed: #{from_twitterfeed} (#{sprintf('%.1f', (from_twitterfeed.to_f / total_tweets.to_f) * 100)}%)" | |
puts "Tweets from dlvr.it: #{from_dlvr} (#{sprintf('%.1f', (from_dlvr.to_f / total_tweets.to_f) * 100)}%)" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
/var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/request/multipart.rb:4: warning: already initialized constant DEFAULT_BOUNDARY
/var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter/response/raise_error.rb:21:in
on_complete': Unable to verify your credentials (Twitter::Error::Forbidden) from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/response.rb:9:in
call'from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/response.rb:63:in
on_complete' from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/response.rb:8:in
call'from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/request/url_encoded.rb:14:in
call' from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/request/multipart.rb:13:in
call'from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter/request/multipart_with_file.rb:14:in
call' from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/connection.rb:253:in
run_request'from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/connection.rb:118:in
post' from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter/client.rb:108:in
send'from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter/client.rb:108:in
request' from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter/client.rb:72:in
post'from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter/api/utils.rb:82:in
send' from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter/api/utils.rb:82:in
object_from_response'from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter/api/oauth.rb:24:in
token' from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter/client.rb:96:in
request_setup'from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/connection.rb:108:in
get' from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/connection.rb:249:in
run_request'from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/connection.rb:264:in
build_request' from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/request.rb:35:in
create'from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/request.rb:34:in
tap' from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/request.rb:34:in
create'from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/connection.rb:260:in
build_request' from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/connection.rb:245:in
run_request'from /var/lib/gems/1.8/gems/faraday-0.8.8/lib/faraday/connection.rb:106:in
get' from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter/client.rb:108:in
send'from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter/client.rb:108:in
request' from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter/client.rb:66:in
get'from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter/api/utils.rb:82:in
send' from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter/api/utils.rb:82:in
object_from_response'from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter/api/search.rb:32:in
search' from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter.rb:60:in
send'from /var/lib/gems/1.8/gems/twitter-4.8.1/lib/twitter.rb:60:in
method_missing' from counter.rb:21 from counter.rb:19:in
each'from counter.rb:19