tweetabout 0.0.4.1 → 0.0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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