tweetline 0.0.1 → 0.0.2
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/bin/tl +3 -131
- metadata +21 -5
data/bin/tl
CHANGED
@@ -1,135 +1,7 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
|
-
require '
|
5
|
-
require '
|
4
|
+
require 'lib/tweetline'
|
5
|
+
require 'lib/tweetline/cli'
|
6
6
|
|
7
|
-
|
8
|
-
File.open(File.expand_path('~/.tweetlinerc')) do |yaml|
|
9
|
-
options = YAML.load(yaml)
|
10
|
-
config.consumer_key = options[:consumer_key]
|
11
|
-
config.consumer_secret = options[:consumer_secret]
|
12
|
-
config.oauth_token = options[:oauth_token]
|
13
|
-
config.oauth_token_secret = options[:oauth_token_secret]
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
STDOUT.sync = true
|
18
|
-
|
19
|
-
@is_piped_to_tweetline = `ps -ax -o pid,args | grep -E "^#{Process.pid+1}"` =~ /\/tl[^\/]*$/
|
20
|
-
|
21
|
-
def time_stamp(time)
|
22
|
-
time = Time.parse(time)
|
23
|
-
format = '%I:%M %p'
|
24
|
-
format = '%m/%d/%y ' + format unless time.yday == Time.now.yday
|
25
|
-
|
26
|
-
return time.strftime(format)
|
27
|
-
end
|
28
|
-
|
29
|
-
def cat_tweet(tweet_id, created_at, name, screen_name, text)
|
30
|
-
put_tweet(tweet_id, created_at, name, screen_name, text)
|
31
|
-
|
32
|
-
tweet = Twitter.status(tweet_id)
|
33
|
-
puts "Conversation:", "" if tweet.in_reply_to_status_id
|
34
|
-
while tweet.in_reply_to_status_id
|
35
|
-
tweet = Twitter.status(tweet.in_reply_to_status_id)
|
36
|
-
put_tweet(tweet.id, tweet.created_at, tweet.user.name, tweet.user.screen_name, tweet.text)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def say_tweet(tweet_id, created_at, name, screen_name, text)
|
41
|
-
tweet_text = text.strip.gsub(/http:.*?( |$)/, '').gsub(/^RT/, '').gsub(/@/, '').split(/ /).map{|s| s.gsub(/[^A-Za-z0-9.!?,']/, '')}.join(' ')
|
42
|
-
connector = text.strip =~ /^RT/ ? " retweets " : "says"
|
43
|
-
# puts name, " #{connector} #{tweet_text}", ""
|
44
|
-
put_tweet(tweet_id, created_at, name, screen_name, text)
|
45
|
-
`say #{name} #{connector} "#{tweet_text}"`
|
46
|
-
end
|
47
|
-
|
48
|
-
def put_tweet(tweet_id, created_at, name, screen_name, text)
|
49
|
-
if STDOUT.fcntl(Fcntl::F_GETFL, 0) == 1 and @is_piped_to_tweetline
|
50
|
-
puts({"id" => tweet_id, "created_at" => created_at, "name" => name, "screen_name" => screen_name, "text" => text}.to_json)
|
51
|
-
else
|
52
|
-
puts "#{name} (@#{screen_name}) [#{time_stamp(created_at)}]", " #{text} (#{tweet_id})", ""
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def each_tweet(options={:count => 10})
|
57
|
-
if STDIN.fcntl(Fcntl::F_GETFL, 0) == 0
|
58
|
-
STDIN.each do |line|
|
59
|
-
yield JSON.load(line)
|
60
|
-
end
|
61
|
-
else
|
62
|
-
if options[:screen_name]
|
63
|
-
screen_name = options.delete(:screen_name)
|
64
|
-
timeline = Twitter.user_timeline(screen_name, options)
|
65
|
-
else
|
66
|
-
timeline = Twitter.home_timeline(options)
|
67
|
-
end
|
68
|
-
timeline.each do |tweet|
|
69
|
-
yield({"id" => tweet.id, "created_at" => tweet.created_at, "name" => tweet.user.name, "screen_name" => tweet.user.screen_name, "text" => tweet.text})
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
if ARGV[0] == "say"
|
75
|
-
each_tweet(:count => 1) do |tweet|
|
76
|
-
say_tweet(tweet["id"], tweet["created_at"], tweet["name"], tweet["screen_name"], tweet["text"])
|
77
|
-
end
|
78
|
-
elsif ARGV[0] == "json"
|
79
|
-
each_tweet do |tweet|
|
80
|
-
puts tweet.to_json
|
81
|
-
end
|
82
|
-
elsif ARGV[0] == "yaml"
|
83
|
-
each_tweet do |tweet|
|
84
|
-
puts tweet.to_yaml
|
85
|
-
end
|
86
|
-
elsif ARGV[0] == "ls" or ARGV.length == 0
|
87
|
-
options = {:count => 10}
|
88
|
-
options[:screen_name] = ARGV[1] if ARGV[1]
|
89
|
-
each_tweet(options) do |tweet|
|
90
|
-
put_tweet(tweet["id"], tweet["created_at"], tweet["name"], tweet["screen_name"], tweet["text"])
|
91
|
-
end
|
92
|
-
elsif ARGV[0] == "retweet"
|
93
|
-
if ARGV[1]
|
94
|
-
Twitter.retweet(ARGV[1])
|
95
|
-
else
|
96
|
-
each_tweet do |tweet|
|
97
|
-
Twitter.retweet(tweet["id"])
|
98
|
-
puts "Retweeted:" unless @is_piped_to_tweetline
|
99
|
-
put_tweet(tweet["id"], tweet["created_at"], tweet["name"], tweet["screen_name"], tweet["text"])
|
100
|
-
end
|
101
|
-
end
|
102
|
-
elsif ARGV[0] == "cat"
|
103
|
-
if ARGV[1]
|
104
|
-
tweet = Twitter.status(ARGV[1])
|
105
|
-
cat_tweet(tweet.id, tweet.created_at, tweet.user.name, tweet.user.screen_name, tweet.text)
|
106
|
-
else
|
107
|
-
each_tweet do |tweet|
|
108
|
-
cat_tweet(tweet["id"], tweet["created_at"], tweet["name"], tweet["screen_name"], tweet["text"])
|
109
|
-
end
|
110
|
-
end
|
111
|
-
elsif ARGV[0] == "tail"
|
112
|
-
if ARGV[1] == "-f"
|
113
|
-
previous_id = "1"
|
114
|
-
count = 1
|
115
|
-
while true
|
116
|
-
begin
|
117
|
-
Twitter.home_timeline(:count => count, :since_id => previous_id).reverse_each do |tweet|
|
118
|
-
put_tweet(tweet.id, tweet.created_at, tweet.user.name, tweet.user.screen_name, tweet.text)
|
119
|
-
previous_id = tweet.id
|
120
|
-
end
|
121
|
-
rescue
|
122
|
-
put_tweet("", Time.now.to_s, "Tweetline", "tweetline", "Twitter is having issues.")
|
123
|
-
end
|
124
|
-
count = 5
|
125
|
-
sleep(30)
|
126
|
-
end
|
127
|
-
else
|
128
|
-
count = ARGV[1] == "-n" && ARGV[2].to_i > 0 ? ARGV[2].to_i : 10
|
129
|
-
Twitter.home_timeline(:count => count).reverse_each do |tweet|
|
130
|
-
put_tweet(tweet.id, tweet.created_at, tweet.user.name, tweet.user.screen_name, tweet.text)
|
131
|
-
end
|
132
|
-
end
|
133
|
-
elsif ARGV[0] == "update"
|
134
|
-
Twitter.update(ARGV[1..-1].join(' '))
|
135
|
-
end
|
7
|
+
Tweetline::CLI.start
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tweetline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Anthony Crumley
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-04-
|
18
|
+
date: 2011-04-09 00:00:00 -05:00
|
19
19
|
default_executable: tl
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -50,7 +50,23 @@ dependencies:
|
|
50
50
|
version: 1.5.1
|
51
51
|
type: :runtime
|
52
52
|
version_requirements: *id002
|
53
|
-
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: thor
|
55
|
+
prerelease: false
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
hash: 43
|
62
|
+
segments:
|
63
|
+
- 0
|
64
|
+
- 14
|
65
|
+
- 6
|
66
|
+
version: 0.14.6
|
67
|
+
type: :runtime
|
68
|
+
version_requirements: *id003
|
69
|
+
description: Tweetline is a command line Twitter client for those who can't imagine a better interface to anything than the command line. Also, some folks may find it useful for automating Twitter interactions.
|
54
70
|
email: anthony.crumley@gmail.com
|
55
71
|
executables:
|
56
72
|
- tl
|