featherdust 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +3 -0
- data/lib/featherdust.rb +17 -12
- data/lib/particle.rb +16 -0
- data/test/cnn.xml +1 -1
- data/test/test_featherdust.rb +253 -10
- data/test/test_particle.rb +0 -0
- data/todo.txt +23 -0
- metadata +7 -2
data/Manifest.txt
CHANGED
data/lib/featherdust.rb
CHANGED
@@ -5,7 +5,7 @@ require 'nokogiri'
|
|
5
5
|
require 'net/http'
|
6
6
|
|
7
7
|
class Featherdust
|
8
|
-
VERSION = '0.0.
|
8
|
+
VERSION = '0.0.2'
|
9
9
|
|
10
10
|
attr_accessor :username, :num_posts, :raw_posts, :posts, :url
|
11
11
|
def initialize(username, num_posts = 20)
|
@@ -14,21 +14,19 @@ class Featherdust
|
|
14
14
|
@raw_posts = Array.new
|
15
15
|
end
|
16
16
|
|
17
|
-
def self.run
|
18
|
-
|
17
|
+
def self.run command
|
18
|
+
username = ARGV.shift
|
19
|
+
number = ARGV.shift
|
19
20
|
|
21
|
+
twitter_list = Featherdust.new(username, number)
|
22
|
+
|
20
23
|
puts twitter_list.display_statuses
|
21
24
|
end
|
22
|
-
|
23
|
-
def url
|
24
|
-
@url ||= Net::HTTP.get "twitter.com", "/statuses/user_timeline/#{@username}.xml?count=#{@num_posts}"
|
25
|
-
end
|
26
|
-
|
25
|
+
|
27
26
|
def get_statuses
|
28
27
|
if is_twitter_up? != "true"
|
29
28
|
raise "Twitter is having issues. Please check back later."
|
30
29
|
else
|
31
|
-
# status_list = Nokogiri::XML(Net::HTTP.get("twitter.com", "/statuses/user_timeline/#{@username}.xml?count=#{@num_posts}"))
|
32
30
|
status_list = Nokogiri::XML(Net::HTTP.get("twitter.com", "/statuses/user_timeline/#{@username}.xml?count=#{@num_posts}"))
|
33
31
|
status_list.xpath('/statuses/status').each do |statuses|
|
34
32
|
status_hash = {}
|
@@ -55,9 +53,14 @@ class Featherdust
|
|
55
53
|
tweets = get_statuses
|
56
54
|
@posts = "<ul>"
|
57
55
|
tweets.each do |tweet|
|
58
|
-
|
56
|
+
# TODO: This is really ugly, and I think it can be written better.
|
57
|
+
@posts += "
|
58
|
+
<li>
|
59
|
+
<p class=\"twitter_status\">#{tweet[:text]}</p>
|
60
|
+
<span><a href=\"http://twitter.com/#{@username}/statuses/#{tweet[:id]}\" title=\"Status update on Twitter\"> on #{tweet[:created_at]}</a></span>
|
61
|
+
</li>"
|
59
62
|
end
|
60
|
-
@posts += "</ul
|
63
|
+
@posts += "\n</ul>\n"
|
61
64
|
end
|
62
65
|
|
63
66
|
def is_twitter_up?
|
@@ -65,4 +68,6 @@ class Featherdust
|
|
65
68
|
twitter_status.xpath("/ok").inner_text
|
66
69
|
end
|
67
70
|
|
68
|
-
end
|
71
|
+
end
|
72
|
+
|
73
|
+
Featherdust.run(ARGV) if $0 == __FILE__
|
data/lib/particle.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
|
3
|
+
class Particle
|
4
|
+
|
5
|
+
ATTRIBUTES = [:created_at, :id, :text, :source, :truncated, :in_reply_to_status_id, :in_reply_to_user_id, :in_reply_to_screen_name, :favorited ]
|
6
|
+
|
7
|
+
ATTRIBUTES.each do |a|
|
8
|
+
attr_accessor a
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize(song_data)
|
12
|
+
ATTRIBUTES.each do |attr|
|
13
|
+
self.send("#{attr}=", (song_data[attr] || ""))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/test/cnn.xml
CHANGED
data/test/test_featherdust.rb
CHANGED
@@ -30,20 +30,263 @@ class TestFeatherdust < Test::Unit::TestCase
|
|
30
30
|
assert_equal expected, actual
|
31
31
|
end
|
32
32
|
|
33
|
-
def test_url_live
|
34
|
-
assert @live_test.url
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_url
|
38
|
-
assert @twitter_account.url
|
39
|
-
end
|
40
|
-
|
41
33
|
def test_get_statuses
|
42
|
-
|
34
|
+
actual = @twitter_account.get_statuses
|
35
|
+
expected = [{:location=>"",
|
36
|
+
:source=>"<a href=\"http://twitterfeed.com\">twitterfeed</a>",
|
37
|
+
:url=>"http://www.cnn.com",
|
38
|
+
:profile_image_url=>
|
39
|
+
"http://s3.amazonaws.com/twitter_production/profile_images/67228129/icon.cnn_normal.png",
|
40
|
+
:in_reply_to_status_id=>"",
|
41
|
+
:in_reply_to_screen_name=>"",
|
42
|
+
:protected=>"false",
|
43
|
+
:in_reply_to_user_id=>"",
|
44
|
+
:created_at=>"Thu Dec 18 13:48:21 +0000 2008",
|
45
|
+
:name=>"CNN.com",
|
46
|
+
:user_id=>"759251",
|
47
|
+
:followers_count=>"14965",
|
48
|
+
:truncated=>"false",
|
49
|
+
:description=>
|
50
|
+
"Breaking News, U.S., World, Weather, Entertainment & Video News",
|
51
|
+
:text=>
|
52
|
+
"20 Iraqi Interior Ministry officers arrested http://tinyurl.com/4xghtt",
|
53
|
+
:favorited=>"false",
|
54
|
+
:id=>"1064896431",
|
55
|
+
:screen_name=>"cnn"},
|
56
|
+
{:location=>"",
|
57
|
+
:source=>"<a href=\"http://twitterfeed.com\">twitterfeed</a>",
|
58
|
+
:url=>"http://www.cnn.com",
|
59
|
+
:profile_image_url=>
|
60
|
+
"http://s3.amazonaws.com/twitter_production/profile_images/67228129/icon.cnn_normal.png",
|
61
|
+
:in_reply_to_status_id=>"",
|
62
|
+
:in_reply_to_screen_name=>"",
|
63
|
+
:protected=>"false",
|
64
|
+
:in_reply_to_user_id=>"",
|
65
|
+
:created_at=>"Thu Dec 18 10:49:17 +0000 2008",
|
66
|
+
:name=>"CNN.com",
|
67
|
+
:user_id=>"759251",
|
68
|
+
:followers_count=>"14955",
|
69
|
+
:truncated=>"false",
|
70
|
+
:description=>
|
71
|
+
"Breaking News, U.S., World, Weather, Entertainment & Video News",
|
72
|
+
:text=>"Bagosora guilty of Rwanda genocide http://tinyurl.com/3mw72t",
|
73
|
+
:favorited=>"false",
|
74
|
+
:id=>"1064690521",
|
75
|
+
:screen_name=>"cnn"},
|
76
|
+
{:location=>"",
|
77
|
+
:source=>"<a href=\"http://twitterfeed.com\">twitterfeed</a>",
|
78
|
+
:url=>"http://www.cnn.com",
|
79
|
+
:profile_image_url=>
|
80
|
+
"http://s3.amazonaws.com/twitter_production/profile_images/67228129/icon.cnn_normal.png",
|
81
|
+
:in_reply_to_status_id=>"",
|
82
|
+
:in_reply_to_screen_name=>"",
|
83
|
+
:protected=>"false",
|
84
|
+
:in_reply_to_user_id=>"",
|
85
|
+
:created_at=>"Thu Dec 18 09:48:46 +0000 2008",
|
86
|
+
:name=>"CNN.com",
|
87
|
+
:user_id=>"759251",
|
88
|
+
:followers_count=>"14954",
|
89
|
+
:truncated=>"false",
|
90
|
+
:description=>
|
91
|
+
"Breaking News, U.S., World, Weather, Entertainment & Video News",
|
92
|
+
:text=>"Obama's inaugural choice ignites outrage http://tinyurl.com/52ojol",
|
93
|
+
:favorited=>"false",
|
94
|
+
:id=>"1064634944",
|
95
|
+
:screen_name=>"cnn"},
|
96
|
+
{:location=>"",
|
97
|
+
:source=>"<a href=\"http://twitterfeed.com\">twitterfeed</a>",
|
98
|
+
:url=>"http://www.cnn.com",
|
99
|
+
:profile_image_url=>
|
100
|
+
"http://s3.amazonaws.com/twitter_production/profile_images/67228129/icon.cnn_normal.png",
|
101
|
+
:in_reply_to_status_id=>"",
|
102
|
+
:in_reply_to_screen_name=>"",
|
103
|
+
:protected=>"false",
|
104
|
+
:in_reply_to_user_id=>"",
|
105
|
+
:created_at=>"Thu Dec 18 09:48:38 +0000 2008",
|
106
|
+
:name=>"CNN.com",
|
107
|
+
:user_id=>"759251",
|
108
|
+
:followers_count=>"14954",
|
109
|
+
:truncated=>"false",
|
110
|
+
:description=>
|
111
|
+
"Breaking News, U.S., World, Weather, Entertainment & Video News",
|
112
|
+
:text=>
|
113
|
+
"Alec Baldwin on divorce, custody and Palin http://tinyurl.com/3e6u37",
|
114
|
+
:favorited=>"false",
|
115
|
+
:id=>"1064634845",
|
116
|
+
:screen_name=>"cnn"},
|
117
|
+
{:location=>"",
|
118
|
+
:source=>"<a href=\"http://twitterfeed.com\">twitterfeed</a>",
|
119
|
+
:url=>"http://www.cnn.com",
|
120
|
+
:profile_image_url=>
|
121
|
+
"http://s3.amazonaws.com/twitter_production/profile_images/67228129/icon.cnn_normal.png",
|
122
|
+
:in_reply_to_status_id=>"",
|
123
|
+
:in_reply_to_screen_name=>"",
|
124
|
+
:protected=>"false",
|
125
|
+
:in_reply_to_user_id=>"",
|
126
|
+
:created_at=>"Thu Dec 18 08:49:04 +0000 2008",
|
127
|
+
:name=>"CNN.com",
|
128
|
+
:user_id=>"759251",
|
129
|
+
:followers_count=>"14955",
|
130
|
+
:truncated=>"false",
|
131
|
+
:description=>
|
132
|
+
"Breaking News, U.S., World, Weather, Entertainment & Video News",
|
133
|
+
:text=>"Holiday health concerns may just be myths http://tinyurl.com/3zx4pd",
|
134
|
+
:favorited=>"false",
|
135
|
+
:id=>"1064580674",
|
136
|
+
:screen_name=>"cnn"},
|
137
|
+
{:location=>"",
|
138
|
+
:source=>"<a href=\"http://twitterfeed.com\">twitterfeed</a>",
|
139
|
+
:url=>"http://www.cnn.com",
|
140
|
+
:profile_image_url=>
|
141
|
+
"http://s3.amazonaws.com/twitter_production/profile_images/67228129/icon.cnn_normal.png",
|
142
|
+
:in_reply_to_status_id=>"",
|
143
|
+
:in_reply_to_screen_name=>"",
|
144
|
+
:protected=>"false",
|
145
|
+
:in_reply_to_user_id=>"",
|
146
|
+
:created_at=>"Thu Dec 18 07:48:08 +0000 2008",
|
147
|
+
:name=>"CNN.com",
|
148
|
+
:user_id=>"759251",
|
149
|
+
:followers_count=>"14954",
|
150
|
+
:truncated=>"false",
|
151
|
+
:description=>
|
152
|
+
"Breaking News, U.S., World, Weather, Entertainment & Video News",
|
153
|
+
:text=>
|
154
|
+
"Exxon Mobil to pay $6.1 million for air pollution http://tinyurl.com/48ohph",
|
155
|
+
:favorited=>"false",
|
156
|
+
:id=>"1064525536",
|
157
|
+
:screen_name=>"cnn"},
|
158
|
+
{:location=>"",
|
159
|
+
:source=>"<a href=\"http://twitterfeed.com\">twitterfeed</a>",
|
160
|
+
:url=>"http://www.cnn.com",
|
161
|
+
:profile_image_url=>
|
162
|
+
"http://s3.amazonaws.com/twitter_production/profile_images/67228129/icon.cnn_normal.png",
|
163
|
+
:in_reply_to_status_id=>"",
|
164
|
+
:in_reply_to_screen_name=>"",
|
165
|
+
:protected=>"false",
|
166
|
+
:in_reply_to_user_id=>"",
|
167
|
+
:created_at=>"Thu Dec 18 04:48:37 +0000 2008",
|
168
|
+
:name=>"CNN.com",
|
169
|
+
:user_id=>"759251",
|
170
|
+
:followers_count=>"14947",
|
171
|
+
:truncated=>"false",
|
172
|
+
:description=>
|
173
|
+
"Breaking News, U.S., World, Weather, Entertainment & Video News",
|
174
|
+
:text=>
|
175
|
+
"Rice talks successes, failures of past 8 years http://tinyurl.com/4uo83q",
|
176
|
+
:favorited=>"false",
|
177
|
+
:id=>"1064329837",
|
178
|
+
:screen_name=>"cnn"},
|
179
|
+
{:location=>"",
|
180
|
+
:source=>"<a href=\"http://twitterfeed.com\">twitterfeed</a>",
|
181
|
+
:url=>"http://www.cnn.com",
|
182
|
+
:profile_image_url=>
|
183
|
+
"http://s3.amazonaws.com/twitter_production/profile_images/67228129/icon.cnn_normal.png",
|
184
|
+
:in_reply_to_status_id=>"",
|
185
|
+
:in_reply_to_screen_name=>"",
|
186
|
+
:protected=>"false",
|
187
|
+
:in_reply_to_user_id=>"",
|
188
|
+
:created_at=>"Thu Dec 18 04:48:35 +0000 2008",
|
189
|
+
:name=>"CNN.com",
|
190
|
+
:user_id=>"759251",
|
191
|
+
:followers_count=>"14947",
|
192
|
+
:truncated=>"false",
|
193
|
+
:description=>
|
194
|
+
"Breaking News, U.S., World, Weather, Entertainment & Video News",
|
195
|
+
:text=>
|
196
|
+
"Credit card holders livid about 'rate-jacking' http://tinyurl.com/3jejsc",
|
197
|
+
:favorited=>"false",
|
198
|
+
:id=>"1064329783",
|
199
|
+
:screen_name=>"cnn"},
|
200
|
+
{:location=>"",
|
201
|
+
:source=>"<a href=\"http://twitterfeed.com\">twitterfeed</a>",
|
202
|
+
:url=>"http://www.cnn.com",
|
203
|
+
:profile_image_url=>
|
204
|
+
"http://s3.amazonaws.com/twitter_production/profile_images/67228129/icon.cnn_normal.png",
|
205
|
+
:in_reply_to_status_id=>"",
|
206
|
+
:in_reply_to_screen_name=>"",
|
207
|
+
:protected=>"false",
|
208
|
+
:in_reply_to_user_id=>"",
|
209
|
+
:created_at=>"Thu Dec 18 02:48:53 +0000 2008",
|
210
|
+
:name=>"CNN.com",
|
211
|
+
:user_id=>"759251",
|
212
|
+
:followers_count=>"14933",
|
213
|
+
:truncated=>"false",
|
214
|
+
:description=>
|
215
|
+
"Breaking News, U.S., World, Weather, Entertainment & Video News",
|
216
|
+
:text=>"Brown: Obama should be more open to press http://tinyurl.com/4avj8n",
|
217
|
+
:favorited=>"false",
|
218
|
+
:id=>"1064150989",
|
219
|
+
:screen_name=>"cnn"},
|
220
|
+
{:location=>"",
|
221
|
+
:source=>"<a href=\"http://twitterfeed.com\">twitterfeed</a>",
|
222
|
+
:url=>"http://www.cnn.com",
|
223
|
+
:profile_image_url=>
|
224
|
+
"http://s3.amazonaws.com/twitter_production/profile_images/67228129/icon.cnn_normal.png",
|
225
|
+
:in_reply_to_status_id=>"",
|
226
|
+
:in_reply_to_screen_name=>"",
|
227
|
+
:protected=>"false",
|
228
|
+
:in_reply_to_user_id=>"",
|
229
|
+
:created_at=>"Wed Dec 17 23:48:50 +0000 2008",
|
230
|
+
:name=>"CNN.com",
|
231
|
+
:user_id=>"759251",
|
232
|
+
:followers_count=>"14925",
|
233
|
+
:truncated=>"false",
|
234
|
+
:description=>
|
235
|
+
"Breaking News, U.S., World, Weather, Entertainment & Video News",
|
236
|
+
:text=>
|
237
|
+
"Walsh's legacy -- awareness of danger to kids http://tinyurl.com/495kwp",
|
238
|
+
:favorited=>"false",
|
239
|
+
:id=>"1063867194",
|
240
|
+
:screen_name=>"cnn"}]
|
241
|
+
assert_equal expected, actual
|
43
242
|
end
|
44
243
|
|
45
244
|
def test_display_statuses
|
46
|
-
|
245
|
+
actual = @twitter_account.display_statuses
|
246
|
+
expected = "<ul>
|
247
|
+
<li>
|
248
|
+
<p class=\"twitter_status\">20 Iraqi Interior Ministry officers arrested http://tinyurl.com/4xghtt</p>
|
249
|
+
<span><a href=\"http://twitter.com/cnn/statuses/1064896431\" title=\"Status update on Twitter\"> on Thu Dec 18 13:48:21 +0000 2008</a></span>
|
250
|
+
</li>
|
251
|
+
<li>
|
252
|
+
<p class=\"twitter_status\">Bagosora guilty of Rwanda genocide http://tinyurl.com/3mw72t</p>
|
253
|
+
<span><a href=\"http://twitter.com/cnn/statuses/1064690521\" title=\"Status update on Twitter\"> on Thu Dec 18 10:49:17 +0000 2008</a></span>
|
254
|
+
</li>
|
255
|
+
<li>
|
256
|
+
<p class=\"twitter_status\">Obama's inaugural choice ignites outrage http://tinyurl.com/52ojol</p>
|
257
|
+
<span><a href=\"http://twitter.com/cnn/statuses/1064634944\" title=\"Status update on Twitter\"> on Thu Dec 18 09:48:46 +0000 2008</a></span>
|
258
|
+
</li>
|
259
|
+
<li>
|
260
|
+
<p class=\"twitter_status\">Alec Baldwin on divorce, custody and Palin http://tinyurl.com/3e6u37</p>
|
261
|
+
<span><a href=\"http://twitter.com/cnn/statuses/1064634845\" title=\"Status update on Twitter\"> on Thu Dec 18 09:48:38 +0000 2008</a></span>
|
262
|
+
</li>
|
263
|
+
<li>
|
264
|
+
<p class=\"twitter_status\">Holiday health concerns may just be myths http://tinyurl.com/3zx4pd</p>
|
265
|
+
<span><a href=\"http://twitter.com/cnn/statuses/1064580674\" title=\"Status update on Twitter\"> on Thu Dec 18 08:49:04 +0000 2008</a></span>
|
266
|
+
</li>
|
267
|
+
<li>
|
268
|
+
<p class=\"twitter_status\">Exxon Mobil to pay $6.1 million for air pollution http://tinyurl.com/48ohph</p>
|
269
|
+
<span><a href=\"http://twitter.com/cnn/statuses/1064525536\" title=\"Status update on Twitter\"> on Thu Dec 18 07:48:08 +0000 2008</a></span>
|
270
|
+
</li>
|
271
|
+
<li>
|
272
|
+
<p class=\"twitter_status\">Rice talks successes, failures of past 8 years http://tinyurl.com/4uo83q</p>
|
273
|
+
<span><a href=\"http://twitter.com/cnn/statuses/1064329837\" title=\"Status update on Twitter\"> on Thu Dec 18 04:48:37 +0000 2008</a></span>
|
274
|
+
</li>
|
275
|
+
<li>
|
276
|
+
<p class=\"twitter_status\">Credit card holders livid about 'rate-jacking' http://tinyurl.com/3jejsc</p>
|
277
|
+
<span><a href=\"http://twitter.com/cnn/statuses/1064329783\" title=\"Status update on Twitter\"> on Thu Dec 18 04:48:35 +0000 2008</a></span>
|
278
|
+
</li>
|
279
|
+
<li>
|
280
|
+
<p class=\"twitter_status\">Brown: Obama should be more open to press http://tinyurl.com/4avj8n</p>
|
281
|
+
<span><a href=\"http://twitter.com/cnn/statuses/1064150989\" title=\"Status update on Twitter\"> on Thu Dec 18 02:48:53 +0000 2008</a></span>
|
282
|
+
</li>
|
283
|
+
<li>
|
284
|
+
<p class=\"twitter_status\">Walsh's legacy -- awareness of danger to kids http://tinyurl.com/495kwp</p>
|
285
|
+
<span><a href=\"http://twitter.com/cnn/statuses/1063867194\" title=\"Status update on Twitter\"> on Wed Dec 17 23:48:50 +0000 2008</a></span>
|
286
|
+
</li>
|
287
|
+
</ul>
|
288
|
+
"
|
289
|
+
assert_equal expected, actual
|
47
290
|
end
|
48
291
|
|
49
292
|
end
|
File without changes
|
data/todo.txt
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
FEATHERDUST: A Twitter gem.
|
2
|
+
|
3
|
+
TODO:
|
4
|
+
|
5
|
+
Write Tests that fail!
|
6
|
+
Make the tests pass!
|
7
|
+
(Ok ... enough of being snarky.)
|
8
|
+
|
9
|
+
XML Parser
|
10
|
+
- take in a username
|
11
|
+
base output option
|
12
|
+
- limit output based on optional number of status updates (default is 10)
|
13
|
+
- HTML Unordered List
|
14
|
+
regex to detect/add links
|
15
|
+
take in options block
|
16
|
+
advanced output methods
|
17
|
+
- div vs list (esp. if requested updates number is 1)
|
18
|
+
- DL
|
19
|
+
- others?
|
20
|
+
headings
|
21
|
+
default styles?
|
22
|
+
examples
|
23
|
+
documentation
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: featherdust
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Tierney
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-12-
|
12
|
+
date: 2008-12-18 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -43,14 +43,18 @@ extra_rdoc_files:
|
|
43
43
|
- History.txt
|
44
44
|
- Manifest.txt
|
45
45
|
- README.txt
|
46
|
+
- todo.txt
|
46
47
|
files:
|
47
48
|
- History.txt
|
48
49
|
- Manifest.txt
|
49
50
|
- README.txt
|
50
51
|
- Rakefile
|
51
52
|
- lib/featherdust.rb
|
53
|
+
- lib/particle.rb
|
52
54
|
- test/cnn.xml
|
53
55
|
- test/test_featherdust.rb
|
56
|
+
- test/test_particle.rb
|
57
|
+
- todo.txt
|
54
58
|
has_rdoc: true
|
55
59
|
homepage: http://rubyforge.org/projects/uwruby
|
56
60
|
post_install_message:
|
@@ -80,3 +84,4 @@ specification_version: 2
|
|
80
84
|
summary: Featherdust is a simple Twitter gem that grabs and parses data via the Twitter API
|
81
85
|
test_files:
|
82
86
|
- test/test_featherdust.rb
|
87
|
+
- test/test_particle.rb
|