deedubs-twitter 0.7.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/History +206 -0
- data/License +20 -0
- data/Notes +33 -0
- data/README.rdoc +19 -0
- data/Rakefile +103 -0
- data/VERSION.yml +4 -0
- data/examples/connect.rb +30 -0
- data/examples/friendship_existance.rb +13 -0
- data/examples/helpers/config_store.rb +38 -0
- data/examples/httpauth.rb +11 -0
- data/examples/ids.rb +13 -0
- data/examples/search.rb +15 -0
- data/examples/timeline.rb +19 -0
- data/examples/unauthorized.rb +16 -0
- data/examples/update.rb +11 -0
- data/examples/user.rb +5 -0
- data/lib/twitter/base.rb +165 -0
- data/lib/twitter/httpauth.rb +27 -0
- data/lib/twitter/oauth.rb +41 -0
- data/lib/twitter/request.rb +102 -0
- data/lib/twitter/search.rb +106 -0
- data/lib/twitter/trends.rb +29 -0
- data/lib/twitter.rb +63 -0
- data/test/fixtures/firehose.json +1 -0
- data/test/fixtures/follower_ids.json +1 -0
- data/test/fixtures/friend_ids.json +1 -0
- data/test/fixtures/friends_timeline.json +1 -0
- data/test/fixtures/rate_limit_exceeded.json +1 -0
- data/test/fixtures/replies.json +1 -0
- data/test/fixtures/search.json +1 -0
- data/test/fixtures/search_from_jnunemaker.json +1 -0
- data/test/fixtures/status.json +1 -0
- data/test/fixtures/status_show.json +1 -0
- data/test/fixtures/trends_current.json +1 -0
- data/test/fixtures/trends_current_exclude.json +1 -0
- data/test/fixtures/trends_daily.json +1 -0
- data/test/fixtures/trends_daily_date.json +1 -0
- data/test/fixtures/trends_daily_exclude.json +1 -0
- data/test/fixtures/trends_weekly.json +1 -0
- data/test/fixtures/trends_weekly_date.json +1 -0
- data/test/fixtures/trends_weekly_exclude.json +1 -0
- data/test/fixtures/user.json +1 -0
- data/test/fixtures/user_timeline.json +1 -0
- data/test/test_helper.rb +36 -0
- data/test/twitter/base_test.rb +95 -0
- data/test/twitter/httpauth_test.rb +76 -0
- data/test/twitter/oauth_test.rb +81 -0
- data/test/twitter/request_test.rb +217 -0
- data/test/twitter/search_test.rb +144 -0
- data/test/twitter/trends_test.rb +95 -0
- data/test/twitter_test.rb +38 -0
- metadata +200 -0
data/lib/twitter/base.rb
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
module Twitter
|
2
|
+
class Base
|
3
|
+
extend Forwardable
|
4
|
+
|
5
|
+
def_delegators :client, :get, :post
|
6
|
+
|
7
|
+
attr_reader :client
|
8
|
+
|
9
|
+
def initialize(client)
|
10
|
+
@client = client
|
11
|
+
end
|
12
|
+
|
13
|
+
# Options: since_id, max_id, count, page, since
|
14
|
+
def friends_timeline(query={})
|
15
|
+
perform_get('/statuses/friends_timeline.json', :query => query)
|
16
|
+
end
|
17
|
+
|
18
|
+
# Options: id, user_id, screen_name, since_id, max_id, page, since
|
19
|
+
def user_timeline(query={})
|
20
|
+
perform_get('/statuses/user_timeline.json', :query => query)
|
21
|
+
end
|
22
|
+
|
23
|
+
def status(id)
|
24
|
+
perform_get("/statuses/show/#{id}.json")
|
25
|
+
end
|
26
|
+
|
27
|
+
# Options: in_reply_to_status_id
|
28
|
+
def update(status, query={})
|
29
|
+
perform_post("/statuses/update.json", :body => {:status => status}.merge(query))
|
30
|
+
end
|
31
|
+
|
32
|
+
# Options: since_id, max_id, since, page
|
33
|
+
def replies(query={})
|
34
|
+
perform_get('/statuses/replies.json', :query => query)
|
35
|
+
end
|
36
|
+
|
37
|
+
def status_destroy(id)
|
38
|
+
perform_post("/statuses/destroy/#{id}.json")
|
39
|
+
end
|
40
|
+
|
41
|
+
# Options: id, user_id, screen_name, page
|
42
|
+
def friends(query={})
|
43
|
+
perform_get('/statuses/friends.json', :query => query)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Options: id, user_id, screen_name, page
|
47
|
+
def followers(query={})
|
48
|
+
perform_get('/statuses/followers.json', :query => query)
|
49
|
+
end
|
50
|
+
|
51
|
+
def user(id, query={})
|
52
|
+
perform_get("/users/show/#{id}.json", :query => query)
|
53
|
+
end
|
54
|
+
|
55
|
+
# Options: since, since_id, page
|
56
|
+
def direct_messages(query={})
|
57
|
+
perform_get("/direct_messages.json", :query => query)
|
58
|
+
end
|
59
|
+
|
60
|
+
# Options: since, since_id, page
|
61
|
+
def direct_messages_sent(query={})
|
62
|
+
perform_get("/direct_messages/sent.json", :query => query)
|
63
|
+
end
|
64
|
+
|
65
|
+
def direct_message_create(user, text)
|
66
|
+
perform_post("/direct_messages/new.json", :body => {:user => user, :text => text})
|
67
|
+
end
|
68
|
+
|
69
|
+
def direct_message_destroy(id)
|
70
|
+
perform_post("/direct_messages/destroy/#{id}.json")
|
71
|
+
end
|
72
|
+
|
73
|
+
def friendship_create(id, follow=false)
|
74
|
+
body = {}
|
75
|
+
body.merge!(:follow => follow) if follow
|
76
|
+
perform_post("/friendships/create/#{id}.json", :body => body)
|
77
|
+
end
|
78
|
+
|
79
|
+
def friendship_destroy(id)
|
80
|
+
perform_post("/friendships/destroy/#{id}.json")
|
81
|
+
end
|
82
|
+
|
83
|
+
def friendship_exists?(a, b)
|
84
|
+
perform_get("/friendships/exists.json", :query => {:user_a => a, :user_b => b})
|
85
|
+
end
|
86
|
+
|
87
|
+
# Options: id, user_id, screen_name
|
88
|
+
def friend_ids(query={})
|
89
|
+
perform_get("/friends/ids.json", :query => query, :mash => false)
|
90
|
+
end
|
91
|
+
|
92
|
+
# Options: id, user_id, screen_name
|
93
|
+
def follower_ids(query={})
|
94
|
+
perform_get("/followers/ids.json", :query => query, :mash => false)
|
95
|
+
end
|
96
|
+
|
97
|
+
def verify_credentials
|
98
|
+
perform_get("/account/verify_credentials.json")
|
99
|
+
end
|
100
|
+
|
101
|
+
# Device must be sms, im or none
|
102
|
+
def update_delivery_device(device)
|
103
|
+
perform_post('/account/update_delivery_device.json', :body => {:device => device})
|
104
|
+
end
|
105
|
+
|
106
|
+
# One or more of the following must be present:
|
107
|
+
# profile_background_color, profile_text_color, profile_link_color,
|
108
|
+
# profile_sidebar_fill_color, profile_sidebar_border_color
|
109
|
+
def update_profile_colors(colors={})
|
110
|
+
perform_post('/account/update_profile_colors.json', :body => colors)
|
111
|
+
end
|
112
|
+
|
113
|
+
def rate_limit_status
|
114
|
+
perform_get('/account/rate_limit_status.json')
|
115
|
+
end
|
116
|
+
|
117
|
+
# One or more of the following must be present:
|
118
|
+
# name, email, url, location, description
|
119
|
+
def update_profile(body={})
|
120
|
+
perform_post('/account/update_profile.json', :body => body)
|
121
|
+
end
|
122
|
+
|
123
|
+
# Options: id, page
|
124
|
+
def favorites(query={})
|
125
|
+
perform_get('/favorites.json', :query => query)
|
126
|
+
end
|
127
|
+
|
128
|
+
def favorite_create(id)
|
129
|
+
perform_post("/favorites/create/#{id}.json")
|
130
|
+
end
|
131
|
+
|
132
|
+
def favorite_destroy(id)
|
133
|
+
perform_post("/favorites/destroy/#{id}.json")
|
134
|
+
end
|
135
|
+
|
136
|
+
def enable_notifications(id)
|
137
|
+
perform_post("/notifications/follow/#{id}.json")
|
138
|
+
end
|
139
|
+
|
140
|
+
def disable_notifications(id)
|
141
|
+
perform_post("/notifications/leave/#{id}.json")
|
142
|
+
end
|
143
|
+
|
144
|
+
def block(id)
|
145
|
+
perform_post("/blocks/create/#{id}.json")
|
146
|
+
end
|
147
|
+
|
148
|
+
def unblock(id)
|
149
|
+
perform_post("/blocks/destroy/#{id}.json")
|
150
|
+
end
|
151
|
+
|
152
|
+
def help
|
153
|
+
perform_get('/help/test.json')
|
154
|
+
end
|
155
|
+
|
156
|
+
private
|
157
|
+
def perform_get(path, options={})
|
158
|
+
Twitter::Request.get(self, path, options)
|
159
|
+
end
|
160
|
+
|
161
|
+
def perform_post(path, options={})
|
162
|
+
Twitter::Request.post(self, path, options)
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Twitter
|
2
|
+
class HTTPAuth
|
3
|
+
include HTTParty
|
4
|
+
format :plain
|
5
|
+
|
6
|
+
attr_reader :username, :password, :options
|
7
|
+
|
8
|
+
def initialize(username, password, options={})
|
9
|
+
@username, @password = username, password
|
10
|
+
@options = {:ssl => false}.merge(options)
|
11
|
+
self.class.base_uri "http#{'s' if options[:ssl]}://twitter.com"
|
12
|
+
end
|
13
|
+
|
14
|
+
def get(uri, headers={})
|
15
|
+
self.class.get(uri, :headers => headers, :basic_auth => basic_auth)
|
16
|
+
end
|
17
|
+
|
18
|
+
def post(uri, body={}, headers={})
|
19
|
+
self.class.post(uri, :body => body, :headers => headers, :basic_auth => basic_auth)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
def basic_auth
|
24
|
+
@basic_auth ||= {:username => @username, :password => @password}
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Twitter
|
2
|
+
class OAuth
|
3
|
+
extend Forwardable
|
4
|
+
def_delegators :access_token, :get, :post
|
5
|
+
|
6
|
+
attr_reader :ctoken, :csecret, :consumer_options
|
7
|
+
|
8
|
+
# Options
|
9
|
+
# :sign_in => true to just sign in with twitter instead of doing oauth authorization
|
10
|
+
# (http://apiwiki.twitter.com/Sign-in-with-Twitter)
|
11
|
+
def initialize(ctoken, csecret, options={})
|
12
|
+
@ctoken, @csecret, @consumer_options = ctoken, csecret, {}
|
13
|
+
|
14
|
+
if options[:sign_in]
|
15
|
+
@consumer_options[:authorize_path] = '/oauth/authenticate'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def consumer
|
20
|
+
@consumer ||= ::OAuth::Consumer.new(@ctoken, @csecret, {:site => 'http://twitter.com'}.merge(consumer_options))
|
21
|
+
end
|
22
|
+
|
23
|
+
def request_token
|
24
|
+
@request_token ||= consumer.get_request_token
|
25
|
+
end
|
26
|
+
|
27
|
+
def authorize_from_request(rtoken, rsecret)
|
28
|
+
request_token = ::OAuth::RequestToken.new(consumer, rtoken, rsecret)
|
29
|
+
access_token = request_token.get_access_token
|
30
|
+
@atoken, @asecret = access_token.token, access_token.secret
|
31
|
+
end
|
32
|
+
|
33
|
+
def access_token
|
34
|
+
@access_token ||= ::OAuth::AccessToken.new(consumer, @atoken, @asecret)
|
35
|
+
end
|
36
|
+
|
37
|
+
def authorize_from_access(atoken, asecret)
|
38
|
+
@atoken, @asecret = atoken, asecret
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
module Twitter
|
2
|
+
class Request
|
3
|
+
extend Forwardable
|
4
|
+
|
5
|
+
def self.get(client, path, options={})
|
6
|
+
new(client, :get, path, options).perform
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.post(client, path, options={})
|
10
|
+
new(client, :post, path, options).perform
|
11
|
+
end
|
12
|
+
|
13
|
+
attr_reader :client, :method, :path, :options
|
14
|
+
|
15
|
+
def_delegators :client, :get, :post
|
16
|
+
|
17
|
+
def initialize(client, method, path, options={})
|
18
|
+
@client, @method, @path, @options = client, method, path, {:mash => true}.merge(options)
|
19
|
+
end
|
20
|
+
|
21
|
+
def uri
|
22
|
+
@uri ||= begin
|
23
|
+
uri = URI.parse(path)
|
24
|
+
|
25
|
+
if options[:query] && options[:query] != {}
|
26
|
+
uri.query = to_query(options[:query])
|
27
|
+
end
|
28
|
+
|
29
|
+
uri.to_s
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def perform
|
34
|
+
make_friendly(send("perform_#{method}"))
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
def perform_get
|
39
|
+
send(:get, uri, options[:headers])
|
40
|
+
end
|
41
|
+
|
42
|
+
def perform_post
|
43
|
+
send(:post, uri, options[:body], options[:headers])
|
44
|
+
end
|
45
|
+
|
46
|
+
def make_friendly(response)
|
47
|
+
raise_errors(response)
|
48
|
+
data = parse(response)
|
49
|
+
options[:mash] ? mash(data) : data
|
50
|
+
end
|
51
|
+
|
52
|
+
def raise_errors(response)
|
53
|
+
case response.code.to_i
|
54
|
+
when 400
|
55
|
+
data = parse(response)
|
56
|
+
raise RateLimitExceeded.new(data), "(#{response.code}): #{response.message} - #{data['error'] if data}"
|
57
|
+
when 401
|
58
|
+
data = parse(response)
|
59
|
+
raise Unauthorized.new(data), "(#{response.code}): #{response.message} - #{data['error'] if data}"
|
60
|
+
when 403
|
61
|
+
data = parse(response)
|
62
|
+
raise General.new(data), "(#{response.code}): #{response.message} - #{data['error'] if data}"
|
63
|
+
when 404
|
64
|
+
raise NotFound, "(#{response.code}): #{response.message}"
|
65
|
+
when 500
|
66
|
+
raise InformTwitter, "Twitter had an internal error. Please let them know in the group. (#{response.code}): #{response.message}"
|
67
|
+
when 502..503
|
68
|
+
raise Unavailable, "(#{response.code}): #{response.message}"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def parse(response)
|
73
|
+
Crack::JSON.parse(response.body)
|
74
|
+
end
|
75
|
+
|
76
|
+
def mash(obj)
|
77
|
+
if obj.is_a?(Array)
|
78
|
+
obj.map { |item| make_mash_with_consistent_hash(item) }
|
79
|
+
elsif obj.is_a?(Hash)
|
80
|
+
make_mash_with_consistent_hash(obj)
|
81
|
+
else
|
82
|
+
obj
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
# Lame workaround for the fact that mash doesn't hash correctly
|
87
|
+
def make_mash_with_consistent_hash(obj)
|
88
|
+
m = Mhash.new(obj)
|
89
|
+
def m.hash
|
90
|
+
inspect.hash
|
91
|
+
end
|
92
|
+
return m
|
93
|
+
end
|
94
|
+
|
95
|
+
def to_query(options)
|
96
|
+
options.inject([]) do |collection, opt|
|
97
|
+
collection << "#{opt[0]}=#{opt[1]}"
|
98
|
+
collection
|
99
|
+
end * '&'
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
module Twitter
|
2
|
+
class Search
|
3
|
+
include HTTParty
|
4
|
+
include Enumerable
|
5
|
+
|
6
|
+
attr_reader :result, :query
|
7
|
+
|
8
|
+
def initialize(q=nil)
|
9
|
+
clear
|
10
|
+
containing(q) if q && q.strip != ''
|
11
|
+
end
|
12
|
+
|
13
|
+
def from(user)
|
14
|
+
@query[:q] << "from:#{user}"
|
15
|
+
self
|
16
|
+
end
|
17
|
+
|
18
|
+
def to(user)
|
19
|
+
@query[:q] << "to:#{user}"
|
20
|
+
self
|
21
|
+
end
|
22
|
+
|
23
|
+
def referencing(user)
|
24
|
+
@query[:q] << "@#{user}"
|
25
|
+
self
|
26
|
+
end
|
27
|
+
alias :references :referencing
|
28
|
+
alias :ref :referencing
|
29
|
+
|
30
|
+
def containing(word)
|
31
|
+
@query[:q] << "#{word}"
|
32
|
+
self
|
33
|
+
end
|
34
|
+
alias :contains :containing
|
35
|
+
|
36
|
+
# adds filtering based on hash tag ie: #twitter
|
37
|
+
def hashed(tag)
|
38
|
+
@query[:q] << "##{tag}"
|
39
|
+
self
|
40
|
+
end
|
41
|
+
|
42
|
+
# lang must be ISO 639-1 code ie: en, fr, de, ja, etc.
|
43
|
+
#
|
44
|
+
# when I tried en it limited my results a lot and took
|
45
|
+
# out several tweets that were english so i'd avoid
|
46
|
+
# this unless you really want it
|
47
|
+
def lang(lang)
|
48
|
+
@query[:lang] = lang
|
49
|
+
self
|
50
|
+
end
|
51
|
+
|
52
|
+
# Limits the number of results per page
|
53
|
+
def per_page(num)
|
54
|
+
@query[:rpp] = num
|
55
|
+
self
|
56
|
+
end
|
57
|
+
|
58
|
+
# Which page of results to fetch
|
59
|
+
def page(num)
|
60
|
+
@query[:page] = num
|
61
|
+
self
|
62
|
+
end
|
63
|
+
|
64
|
+
# Only searches tweets since a given id.
|
65
|
+
# Recommended to use this when possible.
|
66
|
+
def since(since_id)
|
67
|
+
@query[:since_id] = since_id
|
68
|
+
self
|
69
|
+
end
|
70
|
+
|
71
|
+
# Search tweets by longitude, latitude and a given range.
|
72
|
+
# Ranges like 25km and 50mi work.
|
73
|
+
def geocode(long, lat, range)
|
74
|
+
@query[:geocode] = [long, lat, range].join(',')
|
75
|
+
self
|
76
|
+
end
|
77
|
+
|
78
|
+
def max(id)
|
79
|
+
@query[:max_id] = id
|
80
|
+
self
|
81
|
+
end
|
82
|
+
|
83
|
+
# Clears all the query filters to make a new search
|
84
|
+
def clear
|
85
|
+
@fetch = nil
|
86
|
+
@query = {}
|
87
|
+
@query[:q] = []
|
88
|
+
self
|
89
|
+
end
|
90
|
+
|
91
|
+
def fetch(force=false)
|
92
|
+
if @fetch.nil? || force
|
93
|
+
query = @query.dup
|
94
|
+
query[:q] = query[:q].join(' ')
|
95
|
+
response = self.class.get('http://search.twitter.com/search.json', :query => query, :format => :json)
|
96
|
+
@fetch = Mhash.new(response)
|
97
|
+
end
|
98
|
+
|
99
|
+
@fetch
|
100
|
+
end
|
101
|
+
|
102
|
+
def each
|
103
|
+
fetch()['results'].each { |r| yield r }
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Twitter
|
2
|
+
class Trends
|
3
|
+
include HTTParty
|
4
|
+
base_uri 'search.twitter.com/trends'
|
5
|
+
format :json
|
6
|
+
|
7
|
+
# :exclude => 'hashtags' to exclude hashtags
|
8
|
+
def self.current(options={})
|
9
|
+
mashup(get('/current.json', :query => options))
|
10
|
+
end
|
11
|
+
|
12
|
+
# :exclude => 'hashtags' to exclude hashtags
|
13
|
+
# :date => yyyy-mm-dd for specific date
|
14
|
+
def self.daily(options={})
|
15
|
+
mashup(get('/daily.json', :query => options))
|
16
|
+
end
|
17
|
+
|
18
|
+
# :exclude => 'hashtags' to exclude hashtags
|
19
|
+
# :date => yyyy-mm-dd for specific date
|
20
|
+
def self.weekly(options={})
|
21
|
+
mashup(get('/weekly.json', :query => options))
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
def self.mashup(response)
|
26
|
+
response['trends'].values.flatten.map { |t| Mhash.new(t) }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/twitter.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
require 'rubygems'
|
3
|
+
|
4
|
+
gem 'oauth', '0.3.4'
|
5
|
+
require 'oauth'
|
6
|
+
|
7
|
+
gem 'peterpunk-mhash', '0.0.8'
|
8
|
+
require 'mhash'
|
9
|
+
|
10
|
+
gem 'httparty', '0.4.3'
|
11
|
+
require 'httparty'
|
12
|
+
|
13
|
+
module Twitter
|
14
|
+
class TwitterError < StandardError
|
15
|
+
attr_reader :data
|
16
|
+
|
17
|
+
def initialize(data)
|
18
|
+
@data = data
|
19
|
+
super
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class RateLimitExceeded < TwitterError; end
|
24
|
+
class Unauthorized < TwitterError; end
|
25
|
+
class General < TwitterError; end
|
26
|
+
|
27
|
+
class Unavailable < StandardError; end
|
28
|
+
class InformTwitter < StandardError; end
|
29
|
+
class NotFound < StandardError; end
|
30
|
+
|
31
|
+
|
32
|
+
def self.firehose
|
33
|
+
response = HTTParty.get('http://twitter.com/statuses/public_timeline.json', :format => :json)
|
34
|
+
response.map { |tweet| Mhash.new(tweet) }
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.user(id)
|
38
|
+
response = HTTParty.get("http://twitter.com/users/show/#{id}.json", :format => :json)
|
39
|
+
Mhash.new(response)
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.status(id)
|
43
|
+
response = HTTParty.get("http://twitter.com/statuses/show/#{id}.json", :format => :json)
|
44
|
+
Mhash.new(response)
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.friend_ids(id)
|
48
|
+
HTTParty.get("http://twitter.com/friends/ids/#{id}.json", :format => :json)
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.follower_ids(id)
|
52
|
+
HTTParty.get("http://twitter.com/followers/ids/#{id}.json", :format => :json)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
directory = File.expand_path(File.dirname(__FILE__))
|
57
|
+
|
58
|
+
require File.join(directory, 'twitter', 'oauth')
|
59
|
+
require File.join(directory, 'twitter', 'httpauth')
|
60
|
+
require File.join(directory, 'twitter', 'request')
|
61
|
+
require File.join(directory, 'twitter', 'base')
|
62
|
+
require File.join(directory, 'twitter', 'search')
|
63
|
+
require File.join(directory, 'twitter', 'trends')
|
@@ -0,0 +1 @@
|
|
1
|
+
[{"user":{"followers_count":74,"description":"This is a p2p torrent feed from various online torrent sources.","url":"","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Earth","screen_name":"P2P_Torrents","name":"P2P Torrents","id":27694960},"text":"#torrents Ultimativer Flirt Guide - In 10 Minuten jede Frau erobern: Ultimativer Flirt Guide - In 10 Mi.. http:\/\/tinyurl.com\/d3okh4","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:28 +0000 2009","source":"<a href=\"http:\/\/twitterfeed.com\">twitterfeed<\/a>","in_reply_to_status_id":null,"id":1447485843},{"user":{"followers_count":136860,"description":"I'm MO-RIS. Freestyle,Freeride,Freelife. MountainBike and BMX rider. My favorite Music is Jazz, Funk and Hip-Hop. Sorry, I use Japanese only.","url":"http:\/\/iddy.jp\/profile\/mo-ris\/","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Okazaki, Aichi, Japan","screen_name":"moooris","name":"MO-RiS \/ もーりす","id":14523894},"text":"@moccai はい、がんばってくださいねっ! [at Home]","truncated":false,"favorited":false,"in_reply_to_user_id":7796422,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"<a href=\"http:\/\/d.hatena.ne.jp\/Kiri_Feather\/20071121\">Tween<\/a>","in_reply_to_status_id":1447479571,"id":1447485827},{"user":{"followers_count":69,"description":"","url":"http:\/\/frosh.tumblr.com","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Mexico","screen_name":"fer_sure","name":"fer","id":13189472},"text":"Terminando de comer en casa de @isaak182","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485826},{"user":{"followers_count":296,"description":"Kevin Yarr, Web Journalist","url":"http:\/\/www.cbc.ca\/pei\/","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Charlottetown","screen_name":"CBCPEI","name":"CBC P.E.I.","id":18999995},"text":"UPDATE coming. Two of three deputies to return PNP money","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485825},{"user":{"followers_count":129,"description":"Heyy :)","url":"http:\/\/www.myspace.com\/smegzx","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"England","screen_name":"Megzx","name":"Megan.","id":23615322},"text":"\"I Will Break.., Into Your Thoughts.., With Whats Written On Myy Heart..\" (8) =)","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485823},{"user":{"followers_count":2,"description":"","url":"","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"","screen_name":"fatherearth2011","name":"burt m","id":24932539},"text":"Has found his research for his PhD in plant biology. Evolution of floral color, watch out Cambridge.","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:29 +0000 2009","source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>","in_reply_to_status_id":null,"id":1447485820},{"user":{"followers_count":148,"description":"Director of Public Affairs, Minnesota House Republican Caucus","url":"http:\/\/www.mnhousegop.com","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"","screen_name":"kwatt","name":"Kevin Watterson","id":9082192},"text":"It's all garbage to me. http:\/\/twitpic.com\/2rz8v","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:28 +0000 2009","source":"<a href=\"http:\/\/twitterfon.net\/\">TwitterFon<\/a>","in_reply_to_status_id":null,"id":1447485819},{"user":{"followers_count":1307,"description":"Wife, homeschool mom & Arbonne Rep #15970532. I specialize in Arbonne's weightloss program. I can help you lose weight! Blog address: http:\/\/bit.ly\/zQnHH","url":"http:\/\/www.peggyalvarado.myarbonne.com","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"","screen_name":"peggyalvarado","name":"Peggy Alvarado","id":21317064},"text":"Follow Friday! @thoughtcoach #followfriday","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485817},{"user":{"followers_count":24,"description":"I'm me.","url":"","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"","screen_name":"Crazier_Me","name":"lisamaries.","id":24554902},"text":"@RiRi_Twin Wow. Once. Okay, whatever. Why can't you just calm down and get over it?? Or you wanna fight?!","truncated":false,"favorited":false,"in_reply_to_user_id":24706147,"created_at":"Fri Apr 03 20:13:29 +0000 2009","source":"web","in_reply_to_status_id":1447471539,"id":1447485815},{"user":{"followers_count":24,"description":"I'm Steve. I like scary things, viddya games, and being a ninja. And Notorious Fluffy T","url":"http:\/\/www.myspace.com\/psychodboy","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Elkridge MD","screen_name":"ShinobiSteve","name":"Steve Hinz","id":20456870},"text":"@laylakayleigh I get my mom books or dvds or sweets usually. She's not open on things she wants when I ask.","truncated":false,"favorited":false,"in_reply_to_user_id":17349900,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"<a href=\"http:\/\/www.twhirl.org\/\">twhirl<\/a>","in_reply_to_status_id":1447448955,"id":1447485813},{"user":{"followers_count":49,"description":"i AM UNiQUE iN MY OWN WAY!! i AM A liVING WALKiNG BARBi3..i SET MORE THAN TRENDS.i iNSPiRE...","url":"","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"cottage grove, mn","screen_name":"AD3OLA","name":"Adeola Gbadebo","id":26118515},"text":"i don't see myself as concided..i am just confident and i carry myself high.. i mean is that concided..damnnn there is a difference there..","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:29 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485811},{"user":{"followers_count":659,"description":"An advertising\/social media\/interactive junkie who lives on the 'net","url":"http:\/\/www.brentter.com","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Atlanta, GA","screen_name":"brentter","name":"Brent Terrazas","id":6426682},"text":"@stuntdubl http:\/\/seopro.com.au\/free-seo-tools\/new\/link-checker\/ and http:\/\/seoanalytic.com\/tools\/internal_pagerank_checker\/","truncated":false,"favorited":false,"in_reply_to_user_id":1359731,"created_at":"Fri Apr 03 20:13:29 +0000 2009","source":"web","in_reply_to_status_id":1447477924,"id":1447485810},{"user":{"followers_count":10,"description":"Match Results from The Blue Alliance. More at @thebluealliance and http:\/\/www.thebluealliance.net","url":"http:\/\/www.thebluealliance.net","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"","screen_name":"TBAMatchResults","name":"TBA Match Results","id":27573276},"text":"2518, 2052, 3082 lost to 2498, 2529, 2574 [46 to 73] in Qualifications 44 at Minnesota 10000 Lakes Regional","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485809},{"user":{"followers_count":431,"description":"I am living well and learning every day. I am a marketer who founded Ciena's community initiative and I help them find success with all their web initiatives.","url":"http:\/\/www.ciena.com","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Massachusetts","screen_name":"NaomiMarr","name":"Naomi Marr","id":14419908},"text":"RT @coryereed: Check out video from visit earlier this week at @Ciena Innovation Lab. http:\/\/bit.ly\/84DJ5 (Sorry, no @britneyspears cameos)","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:29 +0000 2009","source":"<a href=\"http:\/\/www.tweetdeck.com\/\">TweetDeck<\/a>","in_reply_to_status_id":null,"id":1447485808},{"user":{"followers_count":34,"description":"","url":"","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"","screen_name":"Lilwildgirlrawr","name":"Lizzie is da name","id":20962388},"text":"Dis qurl is sinqle iqht here! Ohh yeah man...Flirtinq is qonna start toniqht at da partay<3","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485807},{"user":{"followers_count":0,"description":null,"url":null,"profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":null,"screen_name":"elliethomasbubz","name":"ellie thomas","id":28426326},"text":"waitinf for the video :)","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:29 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485806},{"user":{"followers_count":427,"description":"Restaurant Recruiter \/ Industry Blogger \/ LifeChurch.tv partner","url":"http:\/\/www.restaurantmanagerresources.blogspot.com","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Oklahoma City, OK","screen_name":"headhunterbrian","name":"Brian Bruce","id":15346984},"text":"@sunnythomas Dave Ramsey rocks! We're debt free but for the house thanks in large part to him.","truncated":false,"favorited":false,"in_reply_to_user_id":14160713,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":1447461266,"id":1447485805},{"user":{"followers_count":469,"description":"Christian. Student. Filmmaker. Daydreamer. Real dude. OBSESSED w\/ EVERYTHING 80'S-90'S!!! Allergic to fake.","url":"http:\/\/www.myspace.com\/itsboywonder","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"Orange County, Cali","screen_name":"Hollywood_Trey","name":"Trumaine Smith","id":23739806},"text":"@jenskiii About what?","truncated":false,"favorited":false,"in_reply_to_user_id":18823582,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":1447473524,"id":1447485804},{"user":{"followers_count":220,"description":"Azz Monkey Clothing is a premium clothing brand offering the very best in urban lifestyle, skateboard, and snowboard apparel.","url":"http:\/\/www.azzmonkey.com","profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":"SnowDirtWaterSidewalkStreets","screen_name":"azzmonkey","name":"Azz Monkey Clothing","id":17183594},"text":"How are enjoying the new digs?","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:29 +0000 2009","source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>","in_reply_to_status_id":null,"id":1447485803},{"user":{"followers_count":13,"description":null,"url":null,"profile_image_url":"http:\/\/static.twitter.com\/images\/default_profile_normal.png","protected":false,"location":null,"screen_name":"ljross","name":"Liam Ross","id":20691904},"text":"Don't understand the need for suicidal thoughts to include murder, too. For instance, in Binghamton. http:\/\/tinyurl.com\/crrg3c","truncated":false,"favorited":false,"in_reply_to_user_id":null,"created_at":"Fri Apr 03 20:13:27 +0000 2009","source":"web","in_reply_to_status_id":null,"id":1447485799}]
|
@@ -0,0 +1 @@
|
|
1
|
+
[613,12796,12938,5765,13518,15323,8906,453593,598503,629603,628623,713263,697893,646123,720583,754990,755264,702653,611823,792399,12606,1226011,969631,3038211,2396591,5594932,5891052,5493662,768288,6247142,6609302,6833532,5104571,3672651,19413,7174582,6991162,6806472,6426602,10718,7430672,8396042,1182631,8597622,6845342,8883422,6816462,702613,1156261,9241962,9264222,6738932,9292132,8882412,5784962,79283,9767172,6996312,654653,9864902,8140482,9907312,6469542,874,9885102,1993721,6466022,8616122,7671872,10477902,723873,7821622,9874262,10845072,763224,5803002,12543,10452452,11094492,10560,12661,12741,75413,1714531,779169,13229,3560241,11485452,9733422,9573202,9870612,7152562,3576061,7574002,7808572,12081432,13346,10904502,9861982,482253,12235182,12223582,12515312,12251592,8407962,9255062,12728492,6141442,12750862,12488072,9291992,9390942,12084572,13156282,5790592,12412462,13510782,627303,1254261,616673,6368162,13706912,13782402,99723,12219102,56813,14070811,13826102,8766242,14090477,14094961,14096589,7019942,14099976,8293102,14119520,1328941,14051749,7508082,8095722,10193732,1307011,12707,12156682,6123982,14178038,10824762,11040972,13908992,14199456,10486382,13726052,11562312,6556972,14166387,14227633,3148,4513781,9548262,5840792,14257836,14055920,14262452,659933,10767782,14287223,14288480,652313,637763,66983,7462822,4448101,14332039,12579382,14332997,14287820,8033832,127583,14122477,816954,2477051,14302268,14206126,14378107,7879442,14328574,3628081,14398763,14162251,14377330,14010712,9468052,14221051,14409089,13955252,12681842,937561,14427863,14466143,14062005,14470429,14450143,13499872,14076758,14527633,14234012,960021,14380090,14073831,780561,14563161,14563260,9462972,14590521,1140261,12906952,6836402,1019951,5977,14361042,14588083,10967052,14169810,5462572,14687070,2898661,11946,14676814,14220413,11380312,14655491,7163912,38353,15403,14776551,14789853,14900453,5531452,14250972,5167141,14712637,14886813,14423603,14771453,12982472,14946593,14777840,8494682,1175831,14936183,14415989,2058881,6474562,14984654,13722,14169869,12478292,5467712,586803,10085192,14345945,6651022,8748292,14999286,9929452,1104891,785975,14706300,15033995,9100012,6221832,14140936,14942738,15094584,12350092,15114739,14351457,14798512,15126780,3283321,14073810,9764082,14259623,10733192,1152571,14899320,14367500,14128132,14911154,9371582,8922,15273534,14156043,1768041,15242061,14009722,13108342,75603,15264105,14740219,7758072,15028397,819302,15348010,752673,14543058,1274141,3185531,6306542,13108322,12686592,15375222,15430874,14424415,15352422,14317036,2019081,15491618,15024280,15464324,14168885,808074,15465686,12892292,10037622,15104784,15638865,12093512,14412322,14292165,10572372,12591,14803076,1243511,13971202,5504782,14649039,645353,5743852,13357,15095182,14469207,1585,7606742,790038,2006261,755028,10089142,12885682,15809772,15796373,15845499,15527007,15468368,14802005,15432802,5483162,8409072,1705591,15142405,4670021,14689610,9572062,12601,1000841,14713941,16002464,7219322,14292285,13353212,16143088,16152707,9866922,14205289,16199846,16233822,13602072,15657520,754747,7475362,15040976,50213,12500052,7152,16200523,9741672,16455427,9980812,14590839,14946654,15151626,16381951,16590772,1566201,16568594,16605678,7372912,638323,5715642,16103569,4632211,6446182,15820948,6778152,16661360,14366390,11889272,8070462,65273,14994463,16692958,627033,3732061,10633482,14380132,14943451,12468852,16828265,14402895,5099921,16885851,14675469,16697903,2900941,14451461,1496591,6164712,15778099,14191988,14431413,14182540,15783687,13856062,3791401,15424241,5206801,8905562,10073922,785340,756264,17009966,9723312,17058191,15768409,1676,15770176,14246143,16664183,823615,16987638,15754496,17100288,16011929,5576742,16876792,5815992,7605802,17134532,16033573,15518671,17200223,16918853,6082492,845611,16220947,16734204,6967822,5748162,5812572,16941853,10527202,1004071,10293122,3123671,17188350,17127839,813198,15690398,15377515,14402837,15353105,9492192,15839304,11589532,14816455,17331141,10879162,14116750,11088,15615165,15827231,16493323,6144652,17489546,14541533,17502272,728893,14365840,17503660,15239784,6525062,6148812,9887162,40863,16950740,14642335,14575376,14100886,17477873,14404318,16981333,14957975,10261302,17655861,17365218,3175171,15747123,6915102,7356622,16604035,17428418,14651825,15896029,16577001,1372651,15005954,14265787,14879573,15386336,17816690,16425887,17834170,16684812,149083,17862753,792632,14193132,6051562,17904110,9380652,14381877,2983251,5643432,16205983,14189032,389153,16211186,8126672,15085140,15585336,14223716,14071467,17870682,14409240,17987541,18001148,17985989,15442984,9695352,7939892,18050862,17481197,7617722,14198590,7935042,17037553,6817252,17378007,17938529,14339150,18149901,1684601,6279162,15846853,35953,14384158,9523302,18173702,10319902,14582075,16531891,12357582,18210267,18043449,4584551,774234,16893238,18222267,18222794,15848007,7858242,15948895,18227971,18128544,16472254,17823286,8233892,12581032,799194,33493,785875,12087292,16064905,15012307,14212434,17146581,670653,13999762,17034483,7948072,9700282,766652,16271041,9237312,15454740,6309042,9532132,15701745,14810774,10456332,808549,6154882,12241342,14486918,14606633,11603,9439332,17052841,14512472,14848368,16826149,16831553,13332232,9407382,49873,11115922,14099654,7776092,15868801,12669172,14046670,15196200,15395778,16739253,1663751,2355631,1277191,3659691,18333815,16112732,18353799,16039614,18250230,18073179,18332874,18214919,4628831,16547430,17586908,18413162,7278032,10832,17725290,1388321,1761301,14768495,17136292,14914403,15595306,6466912,2531521,14422605,828881,10255262,735053,57753,17232987,16798806,11923112,17988073,18044614,12436422,13439,17905573,18483916,17537056,15797213,18470553,18529984,643463,18571972,18575796,18594356,18607270,5218641,13560862,14974634,14464047,17999470,625943,14474670,18526656,14273725,14579367,14803587,18173533,17643364,10415882,809693,15558320,18674931,7018532,9360872,16481323,10286,6258202,10075872,893111,14093286,5533332,2550611,17009251,14281860,14641005,6730622,16452903,2738011,7839552,18597832,18700008,15905871,5933482,16840273,16736196,12321122,12270222,18833825,18834036,18332117,2883681,15697354,18852714,722103,16859405,18669941,668523,2049071,18879392,18631418,814580,16751180,18927092,17236341,18936955,18936577,10423432,17005083,18483113,15776217,15683541,14952014,18913504,6087472,1505961,18016189,18598615,14335551,17658632,18658388,14234004,2778231,8910282,15609931,14247987,649823,18883909,14281405,10324882,9675652,15320102,17498367,18390929,15315836,12474212,9988852,19158240,16419355,183813,15257407,14297166,19113783,16440108,12743592,18664783,9453872,16204699,15020118,14345587,780429,5969702,7219042,14948485,17620522,14671169,16680410,19353133,17994112,17429908,14908912,19600123,18170649,14748148,14571331,17229194,5457352,48773,19679367,9397012,15382766,16343513,14911144,17395851,15533248,17076389,9358602,16406528,18099640,17767547,19670419,18096662,17822704,14293292,6893792,53533,19795241,18110885,19810631,19827904,17558167,5117751,15638508,14926752,14149756,19634908,4468761,14567574,19948841,19954092,11835742,19938151,18423380,15904774,17560204,15074377,19231436,14165452,14469692,19036617,18807589,19788955,4080231,12920142,15399430,19578455,19482274,16996285,16259172,17667997,15203555,18214599,18781842,16621912,15479835,2202971,14410783,19736005,15135447,20163695,900601,6823692,292343,20131136,16808303,19978953,19547434,1089691,15871043,18809171,20609277,3560581,17432169,19691213,18098007,15417592,17833536,15177003,14381339,14194819,15407324,16731023,17149004,18491112,13972462,12370632,20067154,19073088,14127807,20553221,15107495,19851613,19870989,20420301,20681696,2148071,20100721,14633348,5573992,20705043,635793,10785892,20402565,14565733,20098787,20021607,15874552,20729126,21181647,18180272,14978802,18323749,7140702,18178441,21310249,15751895,5447882,19711370,18478757,2819,21278339,15442621,16301737,15070016,21320738,8348382,18600952,13770172,1649221,18360116,18276818,19900631,21379159,19935253,18737620,15195247,14658472,364,6813682,13074,1623,15000151,16912019,15235415,14101380,16599558,19037300,12687402,16889733,857501,19821374,1092621,21683201,20758237,12981172,19781549,20222971,15389148,12226202,14875570,17892372,5502392,843551,21804545,15723434,18391040,19292759,3286561,774060,14796100,12099752,18787589,13959242,10275892,629743,18234697,2230561,22072861,18670512,18820221,22300190,22340666,18216320,22400526,22431378,20899175,6330782,16883585,15935078,1364461,6179812,20589092,22508751,16933064,13183022,9808812,21062351,18381622,17183132,19018761,15899431,16188278,5661552,173813,15533585,22744648,22068050,22780485,20782318,60173,65583,22251010,21407715,5847082,18577007,15213923,22648234,18891726,15348242,2221741,19762959,17073317,22391658,19507837,17938747,5490442,22602883,20118508,13015632,19587710,15408479,23344603,17151343,14675249,15503518,22568737,18430448,18427032,23545306,23573979,7876602,11844,23221906,19193268,21311227,21634137,15458901,14714195,17788144,16927093,17450808,23713422,16467378,18642131,717233,10936152,23482614,19608005,23783966,19041419,13649,21328766,21203364,24187338,21884359,17192822,22128553,24257748,22132860,8868052,17879103,22593469,24204485,14660636,20857214,23501805,24347906,24567825,22294133,20089217,14262730,20987428,18588717,9922002,21980551,11905432,15492087,17067434,24851973,24677391,16822505,15917082,22224252,23923379,19288013,18402842,8274972,25121859,24833951,24888158,25241640,22232760,18893301,15644361,2633481,22660688,24562858,18755300,23567427,25566300,25569710,14464510,25745097,23751200,25817409,25259149,24622977,16401257,14882304,25771412,19388022,21922054,25542506,25599456,25782929,24801749,25538391,16651984,17834535,26040534,753973,26297795,15605658,16823020,19956062,16794261,13422802,26779699,21743486,14319649,25535757,26931958,26579479,7124752,25059528,3054021,25692022,8328752,17911850,15441990,6660852,17012066,27389560,25564238,22783131,27494001,27458253,7362512,21980433,14397705,18152191,14737211,44883,27809050,12125972,15558717,27838986,27117081,16651813,21723920,27862035,14452237,27406847,18630290,15344521,24496939,22762300,14879654,25107835,7888382,1011261,15518890,17487435,14131856,28279311,12384042,21721761,12480492,28532385,21380989,28468396,28504645,15919836,28793082,28816818,5857812,19498371,28912805,28956077,26423794,22239593,18425965,25147645,26723451,1087421,14212679,29380265,29398462,770952,22916479,20017276,19534762,10316422,936161,25097218,5538522,16344576,2819741,30440861,30514010,29775532,2071301,27839741,28711633,28210955,29374100,31023933,14798962,24529511,28983323,31438725,22543443,3636011,15376537]
|
@@ -0,0 +1 @@
|
|
1
|
+
[15323,12796,18713,697893,598503,13518,12938,10718,616163,8906,713263,792399,246,780561,658343,3038211,790205,46413,7124752,3672651,1182631,8883422,9264222,6738932,9907312,9885102,717233,5784962,12661,75413,779169,12543,9241962,12741,6186692,12707,38353,5502392,1714531,3560241,11485452,761613,10193732,482253,12235182,6141442,8028152,627303,13782402,13826102,14094961,14096589,14119520,20,14257836,14262452,8616122,14288480,1768041,14763,12196,14122477,1140261,6707392,654653,937561,33493,9929452,5877822,14246143,14561327,3191321,6927562,12591,615403,9941002,12047992,15403,676573,8494682,9887162,2058881,5444392,127583,14973933,15033995,14351457,14740219,613,819302,752673,25993,808074,14482752,11132462,13108342,2006261,16143088,9572062,14398763,10486382,56813,12081432,13108322,13722,6474562,2049071,4037,9980812,14080083,14372143,8033832,16623244,16623407,13560862,12081692,65273,624683,16828397,16893238,14380132,784171,54793,6082492,6556972,17058191,11294,15005954,6967822,845611,13856062,14994463,15432802,1104891,7846,5812572,17311462,6446182,792632,14365840,18222794,18227971,14345587,15948437,657863,17889970,17667997,18660239,17461978,3286561,5391882,19058681,11718,22391658,14522546,17919972,25745097,19483147,13334762,16373523,20017276]
|
@@ -0,0 +1 @@
|
|
1
|
+
[{"in_reply_to_screen_name":null,"user":{"profile_sidebar_border_color":"181A1E","description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"friends_count":161,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"notifications":false,"profile_background_color":"1A1B1F","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","profile_background_tile":false,"profile_text_color":"666666","followers_count":1231,"protected":false,"favourites_count":73,"created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_link_color":"2FC2EF","statuses_count":4664,"profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif"},"text":"Rob Dyrdek is the funniest man alive. That is all.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Thu Apr 02 22:57:00 +0000 2009","favorited":false,"id":1441588944,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"favorited":false,"user":{"profile_sidebar_fill_color":"252429","description":"Loves his wife, ruby, notre dame football and iu basketball","utc_offset":-18000,"profile_sidebar_border_color":"181A1E","followers_count":1228,"following":true,"notifications":false,"profile_background_tile":false,"friends_count":161,"time_zone":"Indiana (East)","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","favourites_count":73,"profile_background_color":"1A1B1F","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","screen_name":"jnunemaker","statuses_count":4663,"profile_link_color":"2FC2EF","location":"Mishawaka, Indiana","id":4243,"created_at":"Sun Aug 13 22:56:06 +0000 2006"},"text":"Dang, forgot about CAN http:\/\/calendaraboutnothing.com\/~jnunemaker yesterday and broke my streak of 5 days in a row.","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1438916463,"in_reply_to_user_id":null,"source":"web","created_at":"Thu Apr 02 15:24:17 +0000 2009"},{"in_reply_to_screen_name":null,"user":{"friends_count":161,"profile_background_color":"1A1B1F","description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"favourites_count":72,"profile_text_color":"666666","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_link_color":"2FC2EF","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","protected":false,"statuses_count":4660,"profile_sidebar_fill_color":"252429","notifications":false,"created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_border_color":"181A1E","followers_count":1228,"profile_background_tile":false,"location":"Mishawaka, Indiana","id":4243},"text":"@kebabsylan yes. I'll be there at noon.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Thu Apr 02 14:38:03 +0000 2009","favorited":false,"id":1438637063,"source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>"},{"in_reply_to_screen_name":null,"user":{"notifications":false,"profile_background_tile":false,"friends_count":161,"description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"favourites_count":72,"profile_background_color":"1A1B1F","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","statuses_count":4659,"protected":false,"profile_link_color":"2FC2EF","created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"profile_sidebar_border_color":"181A1E","followers_count":1228},"text":"http:\/\/twitpic.com\/2pwjy - The books I'm reading right now. Wish I had more time.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Thu Apr 02 14:34:10 +0000 2009","favorited":false,"id":1438613754,"source":"<a href=\"http:\/\/twitpic.com\/\">TwitPic<\/a>"},{"favorited":false,"user":{"statuses_count":4658,"profile_background_color":"1A1B1F","description":"Loves his wife, ruby, notre dame football and iu basketball","utc_offset":-18000,"followers_count":1226,"profile_text_color":"666666","following":true,"favourites_count":72,"time_zone":"Indiana (East)","profile_link_color":"2FC2EF","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","notifications":false,"profile_sidebar_fill_color":"252429","friends_count":161,"screen_name":"jnunemaker","profile_sidebar_border_color":"181A1E","profile_background_tile":false,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","location":"Mishawaka, Indiana","id":4243,"created_at":"Sun Aug 13 22:56:06 +0000 2006"},"text":"Reading a couple hokey named books of late, but really enjoying them. \"I Will Teach You To Be Rich\" and \"Get Anyone To Do Anything\".","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1436286949,"in_reply_to_user_id":null,"source":"web","created_at":"Thu Apr 02 03:52:02 +0000 2009"},{"favorited":false,"user":{"profile_link_color":"2FC2EF","description":"Loves his wife, ruby, notre dame football and iu basketball","utc_offset":-18000,"profile_sidebar_fill_color":"252429","followers_count":1226,"following":true,"time_zone":"Indiana (East)","profile_sidebar_border_color":"181A1E","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","notifications":false,"profile_background_tile":false,"friends_count":161,"protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","favourites_count":72,"profile_background_color":"1A1B1F","screen_name":"jnunemaker","statuses_count":4657,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","location":"Mishawaka, Indiana","id":4243,"created_at":"Sun Aug 13 22:56:06 +0000 2006"},"text":"Megan Joy turned into a train wreck tonight.","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1435963959,"in_reply_to_user_id":null,"source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>","created_at":"Thu Apr 02 02:51:01 +0000 2009"},{"in_reply_to_screen_name":null,"user":{"notifications":false,"profile_background_tile":false,"friends_count":161,"description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"favourites_count":72,"profile_background_color":"1A1B1F","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","statuses_count":4656,"protected":false,"profile_link_color":"2FC2EF","created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"profile_sidebar_border_color":"181A1E","followers_count":1226},"text":"Watching latest House. Cool idea.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Thu Apr 02 01:25:46 +0000 2009","favorited":false,"id":1435502494,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"in_reply_to_screen_name":null,"user":{"notifications":false,"profile_background_tile":false,"friends_count":179,"description":"Loves his wife, ruby, notre dame football and iu basketball","time_zone":"Indiana (East)","utc_offset":-18000,"favourites_count":72,"profile_background_color":"1A1B1F","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","following":true,"profile_background_image_url":"http:\/\/static.twitter.com\/images\/themes\/theme9\/bg.gif","profile_text_color":"666666","url":"http:\/\/railstips.org\/about","screen_name":"jnunemaker","name":"John Nunemaker","statuses_count":4650,"protected":false,"profile_link_color":"2FC2EF","created_at":"Sun Aug 13 22:56:06 +0000 2006","profile_sidebar_fill_color":"252429","location":"Mishawaka, Indiana","id":4243,"profile_sidebar_border_color":"181A1E","followers_count":1226},"text":"Sat on a fat bob today. Want! http:\/\/tr.im\/i7ha Love the flat black. Wish I could get a used one for less money, but they are too new.","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"created_at":"Wed Apr 01 23:16:13 +0000 2009","favorited":false,"id":1434842036,"source":"web"},{"truncated":false,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","location":"Mishawaka, Indiana","id":4243,"followers_count":1226,"screen_name":"jnunemaker"},"in_reply_to_status_id":null,"text":"Just test drove an Escape with @nunieswife and visited the Harley Store. Johnny want a Harley...BAD!","in_reply_to_user_id":null,"favorited":false,"created_at":"Wed Apr 01 22:31:04 +0000 2009","in_reply_to_screen_name":null,"id":1434591491,"source":"web"},{"in_reply_to_user_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","protected":false,"followers_count":1222,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"text":"I hope the Bears go after Jay Cutler.","favorited":false,"created_at":"Wed Apr 01 12:35:28 +0000 2009","in_reply_to_screen_name":null,"truncated":false,"id":1431011290,"in_reply_to_status_id":null,"source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>"},{"in_reply_to_user_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","protected":false,"followers_count":1216,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"text":"Bundled up HTTParty's JSON and XML parsers (ganked from Merb and Rails) into a separate gem for all to enjoy. http:\/\/tr.im\/i4rc","favorited":false,"created_at":"Wed Apr 01 04:30:10 +0000 2009","in_reply_to_screen_name":null,"truncated":false,"id":1429401587,"in_reply_to_status_id":null,"source":"web"},{"truncated":false,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","location":"Mishawaka, Indiana","id":4243,"followers_count":1215,"screen_name":"jnunemaker"},"in_reply_to_status_id":null,"text":"Opened an ING savings account tonight. First step towards automating more of my finances.","in_reply_to_user_id":null,"favorited":false,"created_at":"Wed Apr 01 01:13:13 +0000 2009","in_reply_to_screen_name":null,"id":1428332783,"source":"<a href=\"http:\/\/loungeapp.com\">Lounge<\/a>"},{"in_reply_to_status_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","followers_count":1214,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"in_reply_to_user_id":null,"text":"Working from the ND bookstore.","created_at":"Tue Mar 31 19:19:44 +0000 2009","favorited":false,"in_reply_to_screen_name":null,"truncated":false,"id":1426346076,"source":"web"},{"in_reply_to_status_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","protected":false,"profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","followers_count":1214,"location":"Mishawaka, Indiana","id":4243,"screen_name":"jnunemaker"},"text":"Wishes the slide screen on the iPhone had an api so he could put weather and ego app stats there.","in_reply_to_user_id":null,"favorited":false,"created_at":"Tue Mar 31 14:46:14 +0000 2009","in_reply_to_screen_name":null,"id":1424683964,"truncated":false,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"in_reply_to_user_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","protected":false,"followers_count":1214,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"favorited":false,"text":"En route to @ebrackley's. We're going to a fondue murder mystery tonight. Who killed the fondue!","created_at":"Sun Mar 29 17:44:43 +0000 2009","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1413049459,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"favorited":false,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","followers_count":1214,"url":"http:\/\/railstips.org\/about","name":"John Nunemaker","screen_name":"jnunemaker","protected":false,"location":"Mishawaka, Indiana","id":4243},"in_reply_to_screen_name":null,"text":"Added a sexy bar graph of the RailsTips archives in the footer. http:\/\/tr.im\/hWt5","created_at":"Sun Mar 29 06:09:54 +0000 2009","truncated":false,"in_reply_to_status_id":null,"in_reply_to_user_id":null,"id":1411056131,"source":"web"},{"in_reply_to_user_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","protected":false,"followers_count":1214,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"favorited":false,"text":"Corn!!!","created_at":"Sun Mar 29 03:34:49 +0000 2009","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1410528666,"source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>"},{"in_reply_to_user_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","protected":false,"followers_count":1214,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"favorited":false,"text":"Famous Dave's was so tasty tonight. Had fun with @nunieswife, @orderedlist, @carrie, @oaknd1, @lizsmc1 and @catbrad. Dang lots of tweeps.","created_at":"Sun Mar 29 00:26:09 +0000 2009","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1409709416,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"},{"in_reply_to_user_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","protected":false,"followers_count":1214,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"favorited":false,"text":"We told him he was making a big mistake and that he obviously didn't know who we are.","created_at":"Sat Mar 28 22:30:04 +0000 2009","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1409188633,"source":"<a href=\"http:\/\/help.twitter.com\/index.php?pg=kb.page&id=75\">txt<\/a>"},{"in_reply_to_user_id":null,"user":{"description":"Loves his wife, ruby, notre dame football and iu basketball","url":"http:\/\/railstips.org\/about","name":"John Nunemaker","profile_image_url":"http:\/\/s3.amazonaws.com\/twitter_production\/profile_images\/61024905\/black250_normal.jpg","protected":false,"followers_count":1214,"screen_name":"jnunemaker","location":"Mishawaka, Indiana","id":4243},"favorited":false,"text":"Just brainstormed next addition to @harmonyapp with @orderedlist. It is going to be awesome.","created_at":"Sat Mar 28 21:15:34 +0000 2009","in_reply_to_screen_name":null,"truncated":false,"in_reply_to_status_id":null,"id":1408861206,"source":"<a href=\"http:\/\/www.atebits.com\/software\/tweetie\/\">Tweetie<\/a>"}]
|