hayato1980-clitwitter 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/bin/clitwit-get +14 -24
- data/bin/clitwit-post +9 -7
- data/clitwitter.gemspec +6 -6
- data/lib/clitwitter/twit.rb +69 -26
- metadata +3 -3
data/Rakefile
CHANGED
@@ -13,7 +13,7 @@ begin
|
|
13
13
|
gem.add_development_dependency "rspec"
|
14
14
|
gem.add_development_dependency "pit"
|
15
15
|
gem.add_development_dependency "twitter"
|
16
|
-
gem.add_development_dependency "
|
16
|
+
gem.add_development_dependency "highline"
|
17
17
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
18
18
|
end
|
19
19
|
rescue LoadError
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/bin/clitwit-get
CHANGED
@@ -1,36 +1,26 @@
|
|
1
|
+
#!/bin/env ruby
|
1
2
|
require 'rubygems'
|
2
3
|
require 'clitwitter'
|
3
|
-
|
4
|
+
require 'highline'
|
4
5
|
require 'cgi'
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
HighLine.color_scheme = HighLine::ColorScheme.new do |cs|
|
8
|
+
cs[:username] = [ :red ]
|
9
|
+
cs[:close_friends] = [ :yellow ]
|
10
|
+
cs[:reply] = [:green]
|
9
11
|
end
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
-
class Color
|
14
|
-
class << self
|
15
|
-
include Term::ANSIColor
|
16
|
-
end
|
17
|
-
end
|
13
|
+
hl = HighLine.new
|
18
14
|
|
19
15
|
twit = ::Clitwitter::Twitter.new
|
20
16
|
loop do
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
timeline = []
|
29
|
-
end
|
30
|
-
timeline.each do |s|
|
31
|
-
username = s.user.name.red
|
32
|
-
username = s.user.name.yellow if twit.close_friends.include? s.user.screen_name
|
33
|
-
text = s.text.gsub(/(@[\w]+)/, Color.green { '\1' } )
|
17
|
+
twit.friends_timeline.each do |s|
|
18
|
+
if twit.close_friends.include? s.user.screen_name
|
19
|
+
username = hl.color(s.user.name , :close_friends )
|
20
|
+
else
|
21
|
+
username = hl.color(s.user.name , :username )
|
22
|
+
end
|
23
|
+
text = s.text.gsub(/(@[\w]+)/, hl.color('\1',:reply) )
|
34
24
|
text = CGI.unescapeHTML(text)
|
35
25
|
puts "-- #{username} : #{text}"
|
36
26
|
end
|
data/bin/clitwit-post
CHANGED
@@ -1,23 +1,25 @@
|
|
1
|
+
#!/bin/env ruby
|
2
|
+
|
1
3
|
require 'rubygems'
|
2
4
|
require 'clitwitter'
|
3
5
|
require 'optparse'
|
4
6
|
|
5
7
|
message = nil
|
6
|
-
OptionParser.new
|
7
|
-
opts.on("--mail")
|
8
|
+
OptionParser.new do |opts|
|
9
|
+
opts.on("--mail") do |v|
|
8
10
|
require 'tmail'
|
9
11
|
message = Proc.new do
|
10
12
|
stdin = STDIN.readlines.join
|
11
13
|
mail = TMail::Mail.parse stdin
|
12
14
|
mail.body
|
13
15
|
end
|
14
|
-
|
16
|
+
end
|
15
17
|
|
16
|
-
opts.on("--message MESSAGE")
|
18
|
+
opts.on("--message MESSAGE") do |v|
|
17
19
|
message = Proc.new { v }
|
18
|
-
|
20
|
+
end
|
19
21
|
opts.parse!(ARGV)
|
20
|
-
|
22
|
+
end
|
21
23
|
|
22
|
-
Clitwitter::Twit.new.post message.call
|
24
|
+
::Clitwitter::Twit.new.post message.call
|
23
25
|
|
data/clitwitter.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{clitwitter}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Hayato"]
|
12
|
-
s.date = %q{2009-08-
|
12
|
+
s.date = %q{2009-08-15}
|
13
13
|
s.description = %q{command line twitter client}
|
14
14
|
s.email = %q{haya10.ito+github@gmail.com}
|
15
15
|
s.executables = ["clitwit-get", "clitwit-post"]
|
@@ -37,7 +37,7 @@ Gem::Specification.new do |s|
|
|
37
37
|
s.homepage = %q{http://github.com/hayato1980/ruby-clitwitter}
|
38
38
|
s.rdoc_options = ["--charset=UTF-8"]
|
39
39
|
s.require_paths = ["lib"]
|
40
|
-
s.rubygems_version = %q{1.3.
|
40
|
+
s.rubygems_version = %q{1.3.5}
|
41
41
|
s.summary = %q{command line twitter client}
|
42
42
|
s.test_files = [
|
43
43
|
"spec/ruby-clitwitter_spec.rb",
|
@@ -52,17 +52,17 @@ Gem::Specification.new do |s|
|
|
52
52
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
53
53
|
s.add_development_dependency(%q<pit>, [">= 0"])
|
54
54
|
s.add_development_dependency(%q<twitter>, [">= 0"])
|
55
|
-
s.add_development_dependency(%q<
|
55
|
+
s.add_development_dependency(%q<highline>, [">= 0"])
|
56
56
|
else
|
57
57
|
s.add_dependency(%q<rspec>, [">= 0"])
|
58
58
|
s.add_dependency(%q<pit>, [">= 0"])
|
59
59
|
s.add_dependency(%q<twitter>, [">= 0"])
|
60
|
-
s.add_dependency(%q<
|
60
|
+
s.add_dependency(%q<highline>, [">= 0"])
|
61
61
|
end
|
62
62
|
else
|
63
63
|
s.add_dependency(%q<rspec>, [">= 0"])
|
64
64
|
s.add_dependency(%q<pit>, [">= 0"])
|
65
65
|
s.add_dependency(%q<twitter>, [">= 0"])
|
66
|
-
s.add_dependency(%q<
|
66
|
+
s.add_dependency(%q<highline>, [">= 0"])
|
67
67
|
end
|
68
68
|
end
|
data/lib/clitwitter/twit.rb
CHANGED
@@ -1,44 +1,87 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'twitter'
|
3
3
|
require 'pit'
|
4
|
+
require 'highline'
|
4
5
|
|
5
6
|
module Clitwitter
|
6
|
-
class Twitter
|
7
|
-
|
7
|
+
class Twitter
|
8
|
+
attr_accessor :message
|
8
9
|
|
9
|
-
|
10
|
-
|
10
|
+
def initialize
|
11
|
+
@tw = Pit.get("twitter.com")
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
if ENV.include?('HTTP_PROXY')
|
14
|
+
host,port= ENV['HTTP_PROXY'].sub(/^http:\/\//,"").split /:/
|
15
|
+
::Twitter::HTTPAuth.http_proxy( host, port)
|
16
|
+
end
|
17
|
+
|
18
|
+
authorize
|
15
19
|
end
|
16
20
|
|
17
|
-
|
18
|
-
|
19
|
-
|
21
|
+
def post message
|
22
|
+
begin
|
23
|
+
@twitter.update(message)
|
24
|
+
rescue ::Twitter::Unavailable
|
25
|
+
warn "Twitter Service Unavailable #{Time.now}"
|
26
|
+
retry
|
27
|
+
rescue ::Timeout::Error
|
28
|
+
warn "Twitter Timeout #{Time.now}"
|
29
|
+
retry
|
30
|
+
rescue ::Twitter::Unauthorized
|
31
|
+
reenterAuth
|
32
|
+
authorize
|
33
|
+
retry
|
34
|
+
end
|
35
|
+
end
|
20
36
|
|
21
|
-
|
22
|
-
|
23
|
-
end
|
37
|
+
def friends_timeline(query={})
|
38
|
+
query[:since_id] = @last_id if @last_id
|
24
39
|
|
25
|
-
|
26
|
-
|
27
|
-
|
40
|
+
begin
|
41
|
+
result = @twitter.friends_timeline(query).reverse
|
42
|
+
rescue ::Twitter::Unavailable
|
43
|
+
warn "Twitter Service Unavailable #{Time.now}"
|
44
|
+
result = []
|
45
|
+
rescue ::Timeout::Error
|
46
|
+
warn "Twitter Timeout #{Time.now}"
|
47
|
+
result = []
|
48
|
+
rescue ::Twitter::Unauthorized
|
49
|
+
reenterAuth
|
50
|
+
authorize
|
51
|
+
retry
|
52
|
+
end
|
28
53
|
|
29
|
-
|
54
|
+
@last_id = result.last.id unless result.empty?
|
30
55
|
|
31
|
-
|
32
|
-
|
56
|
+
result
|
57
|
+
end
|
33
58
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
59
|
+
def close_friends
|
60
|
+
if @tw["close_friends"]
|
61
|
+
@tw["close_friends"]
|
62
|
+
else
|
63
|
+
{}
|
64
|
+
end
|
39
65
|
end
|
40
|
-
end
|
41
66
|
|
42
|
-
|
67
|
+
private
|
68
|
+
|
69
|
+
def reenterAuth
|
70
|
+
::HighLine.track_eof = false
|
71
|
+
puts "Enter Twitter Account"
|
72
|
+
@tw["username"] = ::HighLine.new.ask('username:') do |q|
|
73
|
+
q.default = @tw["username"]
|
74
|
+
end
|
75
|
+
@tw["password"] = ::HighLine.new.ask('password:') do |q|
|
76
|
+
q.echo = '*'
|
77
|
+
end
|
78
|
+
Pit.set("twitter.com",:data => @tw)
|
79
|
+
end
|
80
|
+
|
81
|
+
def authorize
|
82
|
+
client = ::Twitter::HTTPAuth.new(@tw["username"], @tw["password"])
|
83
|
+
@twitter = ::Twitter::Base.new(client)
|
84
|
+
end
|
85
|
+
end
|
43
86
|
|
44
87
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hayato1980-clitwitter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hayato
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-08-
|
12
|
+
date: 2009-08-15 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: "0"
|
44
44
|
version:
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
|
-
name:
|
46
|
+
name: highline
|
47
47
|
type: :development
|
48
48
|
version_requirement:
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|