tweetabout 0.0.4.1 → 0.0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -14,12 +14,30 @@ The words are are ordered list of the most frequently tweeted words based on the
14
14
 
15
15
  ### Gemfile
16
16
 
17
- gem "tweetabout", "~> 0.0.3"
17
+ gem "tweetabout", "~> 0.0.4.1"
18
18
 
19
19
  ### Dependencies
20
20
 
21
21
  `httparty` because httparty > NET::HTTP
22
22
 
23
+ ## Useage
24
+
25
+ example: Let's use `@jack`:
26
+ ```ruby
27
+ #args: a single string
28
+
29
+ #Invoke the TweetAbout Module:
30
+ #call the tweetabout method
31
+
32
+ @words = TweetAbout.tweetabout("jack")
33
+
34
+ #returns an array of words sorted from most frequent to least
35
+ #returns an empty array if the user doesn't have any tweets or:
36
+ # 400 (most likely twitter api limit is exceeded) https://dev.twitter.com/docs/rate-limiting
37
+ # 404 (most likely user doesn't exist, or twitter's api is down)
38
+
39
+ ```
40
+
23
41
  ## TODO
24
42
 
25
43
  * Test coverage. Actually this a requirement before using this gem in production. And I know I am a bad Rubyist for not writing tests first but I promise to get better.
@@ -0,0 +1,84 @@
1
+ module TweetAbout
2
+
3
+ class SortedTweets
4
+ include HTTParty
5
+
6
+ def initialize(username)
7
+ @username = username
8
+ end
9
+
10
+ def sort_tweets
11
+ get_tweets
12
+ hash = {}
13
+
14
+ @responses.each do |tweet|
15
+ tweet.split(" ").each do |key|
16
+ key = key.gsub(/\W/, "").downcase
17
+ if hash.has_key?(key)
18
+ hash["#{key}"] += 1
19
+ else
20
+ hash.merge!({"#{key}" => 1}) unless bad_key(key)
21
+ end
22
+ end
23
+ end
24
+ sorted_array = hash.sort_by { |keyword, frequency| frequency }.reverse
25
+ sorted_array.map { |keyword| keyword[0] }
26
+ end
27
+
28
+ def get_tweets
29
+ options = { :query => {:screen_name => @username, :include_rts => true, :count => 200} }
30
+
31
+ base_url = "http://api.twitter.com/1/statuses/user_timeline.json?"
32
+
33
+ @responses = []
34
+ response1 = HTTParty.get("#{base_url}", options)
35
+ return if response1.code == 404 #invalid username/bad url
36
+ return if response1.count == 0 #no tweets!
37
+ return if response1.code == 400 #api limt exceeded
38
+ start_at_1 = response1.last["id"]
39
+ response1.each do |object|
40
+ @responses << object["text"]
41
+ end
42
+
43
+ response2 = HTTParty.get("#{base_url}&max_id=#{start_at_1-1}", options)
44
+ return if response2.count == 0
45
+ return if response2.code == 400
46
+ start_at_2 = response2.last["id"]
47
+ response2.each do |object|
48
+ @responses << object["text"]
49
+ end
50
+
51
+ response3 = HTTParty.get("#{base_url}&max_id=#{start_at_2-1}", options)
52
+ return if response3.count == 0
53
+ return if response3.code == 400
54
+ start_at_3 = response3.last["id"]
55
+ response3.each do |object|
56
+ @responses << object["text"]
57
+ end
58
+
59
+ response4 = HTTParty.get("#{base_url}&max_id=#{start_at_3-1}", options)
60
+ return if response4.count == 0
61
+ return if response4.code == 400
62
+ start_at_4 = response4.last["id"]
63
+ response4.each do |object|
64
+ @responses << object["text"]
65
+ end
66
+
67
+ response5 = HTTParty.get("#{base_url}&max_id=#{start_at_4-1}", options)
68
+ return if response5.count == 0
69
+ return if response5.code == 400
70
+ start_at_5 = response4.last["id"]
71
+ response5.each do |object|
72
+ @responses << object["text"]
73
+ end
74
+ end
75
+
76
+ def bad_key(key)
77
+ return true if key.empty?
78
+ return true if key.start_with?('http')
79
+ end
80
+
81
+ def to_a
82
+ end
83
+ end
84
+ end
@@ -1,3 +1,3 @@
1
1
  module Tweetabout
2
- VERSION = "0.0.4.1"
2
+ VERSION = "0.0.5.0"
3
3
  end
data/lib/tweetabout.rb CHANGED
@@ -2,73 +2,6 @@ require "tweetabout/version"
2
2
  require "httparty"
3
3
 
4
4
  module TweetAbout
5
- def self.tweetabout(user)
6
- get_tweets(user)
5
+ require 'tweetabout/sorted_tweets'
7
6
 
8
- hash = {}
9
- @responses.each do |tweet|
10
- tweet.split(" ").each do |key|
11
- key = key.gsub(/\W/, "").downcase
12
- if hash.has_key?(key)
13
- hash["#{key}"] += 1
14
- else
15
- hash.merge!({"#{key}" => 1}) unless bad_key(key)
16
- end
17
- end
18
- end
19
- @sorted_array = hash.sort_by { |keyword, frequency| frequency }.reverse
20
- @sorted_array.map { |keyword| keyword[0] }
21
- end
22
-
23
- def self.bad_key(key)
24
- return true if key.empty?
25
- return true if key.start_with?('http')
26
- end
27
-
28
- def self.get_tweets(user)
29
- count = 200
30
- base_url = "http://api.twitter.com/1/statuses/user_timeline.json?screen_name=#{user}&include_rts=true&count=#{count}"
31
-
32
- @responses = []
33
- response1 = HTTParty.get("#{base_url}")
34
- return if response1.code == 404 #invalid username/bad url
35
- return if response1.count == 0 #no tweets!
36
- return if response1.code == 400 #api limt exceeded
37
- start_at_1 = response1.last["id"]
38
- response1.each do |object|
39
- @responses << object["text"]
40
- end
41
-
42
- response2 = HTTParty.get("#{base_url}&max_id=#{start_at_1-1}")
43
- return if response2.count == 0
44
- return if response2.code == 400
45
- start_at_2 = response2.last["id"]
46
- response2.each do |object|
47
- @responses << object["text"]
48
- end
49
-
50
- response3 = HTTParty.get("#{base_url}&max_id=#{start_at_2-1}")
51
- return if response3.count == 0
52
- return if response3.code == 400
53
- start_at_3 = response3.last["id"]
54
- response3.each do |object|
55
- @responses << object["text"]
56
- end
57
-
58
- response4 = HTTParty.get("#{base_url}&max_id=#{start_at_3-1}")
59
- return if response4.count == 0
60
- return if response4.code == 400
61
- start_at_4 = response4.last["id"]
62
- response4.each do |object|
63
- @responses << object["text"]
64
- end
65
-
66
- response5 = HTTParty.get("#{base_url}&max_id=#{start_at_4-1}")
67
- return if response5.count == 0
68
- return if response5.code == 400
69
- start_at_5 = response4.last["id"]
70
- response5.each do |object|
71
- @responses << object["text"]
72
- end
73
- end
74
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tweetabout
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4.1
4
+ version: 0.0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-20 00:00:00.000000000 Z
12
+ date: 2012-08-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
@@ -40,6 +40,7 @@ files:
40
40
  - README.md
41
41
  - Rakefile
42
42
  - lib/tweetabout.rb
43
+ - lib/tweetabout/sorted_tweets.rb
43
44
  - lib/tweetabout/version.rb
44
45
  - tweetabout.gemspec
45
46
  homepage: ''
@@ -62,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
62
63
  version: '0'
63
64
  requirements: []
64
65
  rubyforge_project:
65
- rubygems_version: 1.8.21
66
+ rubygems_version: 1.8.24
66
67
  signing_key:
67
68
  specification_version: 3
68
69
  summary: Takes a twitter username and outputs the most frequently tweeted words in