jnunemaker-twitter 0.2.8 → 0.3.1
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.txt +6 -0
- data/Manifest.txt +2 -0
- data/TODO.txt +3 -0
- data/lib/twitter/base.rb +1 -1
- data/lib/twitter/cli/helpers.rb +25 -0
- data/lib/twitter/cli.rb +36 -24
- data/lib/twitter/version.rb +1 -1
- data/spec/cli/helper_spec.rb +35 -0
- data/twitter.gemspec +3 -3
- metadata +4 -2
data/History.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
0.3.1 - July 23, 2008
|
2
|
+
* added open to CLI twitter open jnunemaker would open default browser to http://twitter.com/jnunemaker
|
3
|
+
* added -f to timeline and replies which ignores the since_id and shows all results
|
4
|
+
* added clear_config to remove all cached since id's and such
|
5
|
+
* Majorly pimped the output of timelines and replies.
|
6
|
+
|
1
7
|
0.3.0 - July 22, 2008
|
2
8
|
* complete rewrite of CLI. Now supports multiple accounts and changing between them.
|
3
9
|
* added source, truncated, in_reply_to_status_id, in_reply_to_user_id, and favorited to Twitter::Status
|
data/Manifest.txt
CHANGED
@@ -3,6 +3,7 @@ License.txt
|
|
3
3
|
Manifest.txt
|
4
4
|
README.txt
|
5
5
|
Rakefile
|
6
|
+
TODO.txt
|
6
7
|
bin/twitter
|
7
8
|
config/hoe.rb
|
8
9
|
config/requirements.rb
|
@@ -40,6 +41,7 @@ script/generate
|
|
40
41
|
script/txt2html
|
41
42
|
setup.rb
|
42
43
|
spec/base_spec.rb
|
44
|
+
spec/cli/helper_spec.rb
|
43
45
|
spec/direct_message_spec.rb
|
44
46
|
spec/fixtures/followers.xml
|
45
47
|
spec/fixtures/friends.xml
|
data/TODO.txt
ADDED
@@ -0,0 +1,3 @@
|
|
1
|
+
* format the tweets in a more readable fashion (limit words per line so more scannable)
|
2
|
+
* add timeout so it doesn't hang forever like it does now if twitter is down
|
3
|
+
* add progress indicator for timeline and replies as posting has for more visual indication that work is happening
|
data/lib/twitter/base.rb
CHANGED
data/lib/twitter/cli/helpers.rb
CHANGED
@@ -1,6 +1,31 @@
|
|
1
1
|
module Twitter
|
2
2
|
module CLI
|
3
3
|
module Helpers
|
4
|
+
def output_tweets(collection, options={})
|
5
|
+
options.reverse_merge!({
|
6
|
+
:cache => false,
|
7
|
+
:since_prefix => '',
|
8
|
+
:empty_msg => 'Nothing new since your last check.'
|
9
|
+
})
|
10
|
+
if collection.size > 0
|
11
|
+
justify = collection.collect { |s| s.user.screen_name }.max { |a,b| a.length <=> b.length }.length rescue 0
|
12
|
+
indention = ' ' * (justify + 3)
|
13
|
+
say("\n#{indention}#{collection.size} new tweet(s) found.\n\n")
|
14
|
+
collection.each do |s|
|
15
|
+
Tweet.create_from_tweet(current_account, s) if options[:cache]
|
16
|
+
occurred_at = Time.parse(s.created_at).strftime('On %b %d at %l:%M%P')
|
17
|
+
formatted_time = '-' * occurred_at.length + "\n#{indention}#{occurred_at}"
|
18
|
+
formatted_name = s.user.screen_name.rjust(justify + 1)
|
19
|
+
formatted_msg = ''
|
20
|
+
s.text.split(' ').in_groups_of(6, false) { |row| formatted_msg += row.join(' ') + "\n#{indention}" }
|
21
|
+
say "#{CGI::unescapeHTML(formatted_name)}: #{CGI::unescapeHTML(formatted_msg)}#{formatted_time}\n\n"
|
22
|
+
end
|
23
|
+
Configuration["#{options[:since_prefix]}_since_id"] = collection.first.id
|
24
|
+
else
|
25
|
+
say(options[:empty_msg])
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
4
29
|
def base(username=current_account.username, password=current_account.password)
|
5
30
|
@base ||= Twitter::Base.new(username, password)
|
6
31
|
end
|
data/lib/twitter/cli.rb
CHANGED
@@ -253,45 +253,57 @@ Main {
|
|
253
253
|
description 'the timeline you wish to see (friends, public, me)'
|
254
254
|
default 'friends'
|
255
255
|
}
|
256
|
+
option('force', 'f') {
|
257
|
+
description "Ignore since_id and show first page of results even if there aren't new ones"
|
258
|
+
}
|
256
259
|
|
257
260
|
def run
|
258
261
|
do_work do
|
259
262
|
timeline = params['timeline'].value == 'me' ? 'user' : params['timeline'].value
|
260
|
-
options, since_id = {}, Configuration["#{timeline}
|
261
|
-
options[:since_id] = since_id
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
statuses.each do |s|
|
266
|
-
Tweet.create_from_tweet(current_account, s) if timeline != :public
|
267
|
-
say "#{CGI::unescapeHTML(s.user.screen_name.ljust(username_length+1))}: #{CGI::unescapeHTML(s.text)} on #{Time.parse(s.created_at).strftime('%b %d at %l:%M%P')}"
|
268
|
-
end
|
269
|
-
Configuration["#{timeline}_last_id"] = statuses.first.id
|
270
|
-
else
|
271
|
-
say 'Nothing new since your last check'
|
272
|
-
end
|
263
|
+
options, since_id = {}, Configuration["#{timeline}_since_id"]
|
264
|
+
options[:since_id] = since_id if !since_id.blank? && !params['force'].given?
|
265
|
+
cache = [:friends, :user].include?(timeline)
|
266
|
+
collection = base.timeline(timeline.to_sym, options)
|
267
|
+
output_tweets(collection, {:cache => cache, :since_prefix => timeline})
|
273
268
|
end
|
274
269
|
end
|
275
270
|
end
|
276
271
|
|
277
272
|
mode 'replies' do
|
278
273
|
description 'Allows you to view all @replies at you'
|
274
|
+
option('force', 'f') {
|
275
|
+
description "Ignore since_id and show first page of replies even if there aren't new ones"
|
276
|
+
}
|
279
277
|
|
280
278
|
def run
|
281
279
|
do_work do
|
282
280
|
options, since_id = {}, Configuration["replies_since_id"]
|
283
|
-
options[:since_id] = since_id if !since_id.blank?
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
281
|
+
options[:since_id] = since_id if !since_id.blank? && !params['force'].given?
|
282
|
+
collection = base.replies(options)
|
283
|
+
output_tweets(collection, {:since_prefix => 'replies'})
|
284
|
+
end
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
mode 'clear_config' do
|
289
|
+
def run
|
290
|
+
do_work do
|
291
|
+
count = Configuration.count
|
292
|
+
Configuration.destroy_all
|
293
|
+
say("#{count} configuration entries cleared.")
|
294
294
|
end
|
295
295
|
end
|
296
296
|
end
|
297
|
+
|
298
|
+
mode 'open' do
|
299
|
+
description 'Opens the given twitter user in a browser window'
|
300
|
+
argument('username') {
|
301
|
+
required
|
302
|
+
description "username or id of twitterrer who's page you would like to see"
|
303
|
+
}
|
304
|
+
|
305
|
+
def run
|
306
|
+
`open http://twitter.com/#{params['username'].value}`
|
307
|
+
end
|
308
|
+
end
|
297
309
|
}
|
data/lib/twitter/version.rb
CHANGED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
3
|
+
require File.dirname(__FILE__) + '/../../lib/twitter/cli/helpers'
|
4
|
+
|
5
|
+
class Configuration; end
|
6
|
+
|
7
|
+
def say(str)
|
8
|
+
puts str
|
9
|
+
end
|
10
|
+
|
11
|
+
describe Twitter::CLI::Helpers do
|
12
|
+
include Twitter::CLI::Helpers
|
13
|
+
|
14
|
+
describe "outputting tweets" do
|
15
|
+
before do
|
16
|
+
Configuration.stub!(:[]=).and_return(true)
|
17
|
+
@collection = [
|
18
|
+
OpenStruct.new(
|
19
|
+
:text => 'This is my long message that I want to see formatted ooooh so pretty with a few words on each line so it is easy to scan.',
|
20
|
+
:created_at => Time.mktime(2008, 5, 1, 10, 15, 00).strftime('%Y-%m-%d %H:%M:%S'),
|
21
|
+
:user => OpenStruct.new(:screen_name => 'jnunemaker')
|
22
|
+
),
|
23
|
+
OpenStruct.new(
|
24
|
+
:text => 'This is my long message that I want to see formatted ooooh so pretty with a.',
|
25
|
+
:created_at => Time.mktime(2008, 4, 1, 10, 15, 00).strftime('%Y-%m-%d %H:%M:%S'),
|
26
|
+
:user => OpenStruct.new(:screen_name => 'danielmorrison')
|
27
|
+
)
|
28
|
+
]
|
29
|
+
end
|
30
|
+
|
31
|
+
specify "should properly format" do
|
32
|
+
output_tweets(@collection)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/twitter.gemspec
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = %q{twitter}
|
3
|
-
s.version = "0.
|
3
|
+
s.version = "0.3.1"
|
4
4
|
s.specification_version = 2 if s.respond_to? :specification_version=
|
5
5
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
6
6
|
s.authors = ["John Nunemaker"]
|
7
|
-
s.date = %q{2008-07-
|
7
|
+
s.date = %q{2008-07-23}
|
8
8
|
s.default_executable = %q{twitter}
|
9
9
|
s.description = %q{a command line interface for twitter, also a library which wraps the twitter api}
|
10
10
|
s.email = %q{nunemaker@gmail.com}
|
11
11
|
s.executables = ["twitter"]
|
12
12
|
s.extra_rdoc_files = ["History.txt", "License.txt", "Manifest.txt", "README.txt"]
|
13
|
-
s.files = ["History.txt", "License.txt", "Manifest.txt", "README.txt", "Rakefile", "bin/twitter", "config/hoe.rb", "config/requirements.rb", "examples/blocks.rb", "examples/direct_messages.rb", "examples/favorites.rb", "examples/friends_followers.rb", "examples/friendships.rb", "examples/location.rb", "examples/replies.rb", "examples/sent_messages.rb", "examples/timeline.rb", "examples/twitter.rb", "examples/verify_credentials.rb", "lib/twitter.rb", "lib/twitter/base.rb", "lib/twitter/cli.rb", "lib/twitter/cli/config.rb", "lib/twitter/cli/helpers.rb", "lib/twitter/cli/migrations/20080722194500_create_accounts.rb", "lib/twitter/cli/migrations/20080722194508_create_tweets.rb", "lib/twitter/cli/migrations/20080722214605_add_account_id_to_tweets.rb", "lib/twitter/cli/migrations/20080722214606_create_configurations.rb", "lib/twitter/cli/models/account.rb", "lib/twitter/cli/models/configuration.rb", "lib/twitter/cli/models/tweet.rb", "lib/twitter/direct_message.rb", "lib/twitter/easy_class_maker.rb", "lib/twitter/rate_limit_status.rb", "lib/twitter/status.rb", "lib/twitter/user.rb", "lib/twitter/version.rb", "script/destroy", "script/generate", "script/txt2html", "setup.rb", "spec/base_spec.rb", "spec/direct_message_spec.rb", "spec/fixtures/followers.xml", "spec/fixtures/friends.xml", "spec/fixtures/friends_for.xml", "spec/fixtures/friends_lite.xml", "spec/fixtures/friends_timeline.xml", "spec/fixtures/public_timeline.xml", "spec/fixtures/rate_limit_status.xml", "spec/fixtures/status.xml", "spec/fixtures/user.xml", "spec/fixtures/user_timeline.xml", "spec/spec.opts", "spec/spec_helper.rb", "spec/status_spec.rb", "spec/user_spec.rb", "tasks/deployment.rake", "tasks/environment.rake", "tasks/website.rake", "twitter.gemspec", "website/css/common.css", "website/index.html"]
|
13
|
+
s.files = ["History.txt", "License.txt", "Manifest.txt", "README.txt", "Rakefile", "TODO.txt", "bin/twitter", "config/hoe.rb", "config/requirements.rb", "examples/blocks.rb", "examples/direct_messages.rb", "examples/favorites.rb", "examples/friends_followers.rb", "examples/friendships.rb", "examples/location.rb", "examples/replies.rb", "examples/sent_messages.rb", "examples/timeline.rb", "examples/twitter.rb", "examples/verify_credentials.rb", "lib/twitter.rb", "lib/twitter/base.rb", "lib/twitter/cli.rb", "lib/twitter/cli/config.rb", "lib/twitter/cli/helpers.rb", "lib/twitter/cli/migrations/20080722194500_create_accounts.rb", "lib/twitter/cli/migrations/20080722194508_create_tweets.rb", "lib/twitter/cli/migrations/20080722214605_add_account_id_to_tweets.rb", "lib/twitter/cli/migrations/20080722214606_create_configurations.rb", "lib/twitter/cli/models/account.rb", "lib/twitter/cli/models/configuration.rb", "lib/twitter/cli/models/tweet.rb", "lib/twitter/direct_message.rb", "lib/twitter/easy_class_maker.rb", "lib/twitter/rate_limit_status.rb", "lib/twitter/status.rb", "lib/twitter/user.rb", "lib/twitter/version.rb", "script/destroy", "script/generate", "script/txt2html", "setup.rb", "spec/base_spec.rb", "spec/cli/helper_spec.rb", "spec/direct_message_spec.rb", "spec/fixtures/followers.xml", "spec/fixtures/friends.xml", "spec/fixtures/friends_for.xml", "spec/fixtures/friends_lite.xml", "spec/fixtures/friends_timeline.xml", "spec/fixtures/public_timeline.xml", "spec/fixtures/rate_limit_status.xml", "spec/fixtures/status.xml", "spec/fixtures/user.xml", "spec/fixtures/user_timeline.xml", "spec/spec.opts", "spec/spec_helper.rb", "spec/status_spec.rb", "spec/user_spec.rb", "tasks/deployment.rake", "tasks/environment.rake", "tasks/website.rake", "twitter.gemspec", "website/css/common.css", "website/index.html"]
|
14
14
|
s.has_rdoc = true
|
15
15
|
s.homepage = %q{http://twitter.rubyforge.org}
|
16
16
|
s.rdoc_options = ["--main", "README.txt"]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jnunemaker-twitter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Nunemaker
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-07-
|
12
|
+
date: 2008-07-23 00:00:00 -07:00
|
13
13
|
default_executable: twitter
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -47,6 +47,7 @@ files:
|
|
47
47
|
- Manifest.txt
|
48
48
|
- README.txt
|
49
49
|
- Rakefile
|
50
|
+
- TODO.txt
|
50
51
|
- bin/twitter
|
51
52
|
- config/hoe.rb
|
52
53
|
- config/requirements.rb
|
@@ -84,6 +85,7 @@ files:
|
|
84
85
|
- script/txt2html
|
85
86
|
- setup.rb
|
86
87
|
- spec/base_spec.rb
|
88
|
+
- spec/cli/helper_spec.rb
|
87
89
|
- spec/direct_message_spec.rb
|
88
90
|
- spec/fixtures/followers.xml
|
89
91
|
- spec/fixtures/friends.xml
|