twat 0.4.2 → 0.4.3

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/TODO CHANGED
@@ -1,33 +1,17 @@
1
- twat -l -> <newsfeed>
2
- twat -l [count] -> <count entries from newsfeed>
3
- # Include who tweeted...
4
-
5
1
  catch invalid options and return opts
6
2
 
7
-
8
- CONFIG FILE
9
- ===========
10
-
11
- This really does need to change, but I'm not sure where on the "Can piss off a userbase" scale I am, (ie, do I have one)
12
-
13
- For now I'm going to leave it, and if it gets to 1.0 I'll fix it then.
14
-
15
3
  COLORS!
16
4
  =======
17
5
 
18
- twat -l should dump colors to terminal (This should be configurable tho)
19
-
20
6
  Refactor tweet printing code, unify throughout
21
7
 
22
- MIGRATIONS
23
- ==========
24
-
25
- Shouldn't run if config is up to date
26
8
 
27
9
  TODO
28
10
  ====
29
11
 
30
- Finish the config stuff (change --set-default <acct> to --set
31
- DEFAULT=<acct>)
32
- implement twat -f that just ticks by (have some option to ring a bell or
33
- some shit)
12
+ Configurable polling interval
13
+ (which carries with it warnings if it's too short.. which means a warn
14
+ method.. which means abstracting it's output..)
15
+
16
+ On the upside, it'll make unit testing similar.
17
+ (Add unit tests)
data/doc/twat.1 CHANGED
@@ -22,6 +22,9 @@ account.
22
22
  Delete speficied account.
23
23
  .IP -h
24
24
  Display a short summary of twat's options.
25
+ .IP -f
26
+ Watch your newsfeed in a similar manner to tail -f, updating as your feed does
27
+ (polling interval 60 seconds)
25
28
  .IP -u USER
26
29
  Retrieve a list of USER's recent tweets. Note this will retrieve all of their
27
30
  tweets as opposed to just what would have appeared in your feed.
@@ -39,7 +39,7 @@ end
39
39
  module Twat
40
40
  VERSION_MAJOR = 0
41
41
  VERSION_MINOR = 4
42
- VERSION_PATCH = 2
42
+ VERSION_PATCH = 3
43
43
 
44
44
  VERSION = "#{VERSION_MAJOR}.#{VERSION_MINOR}.#{VERSION_PATCH}"
45
45
  class Twat
@@ -66,12 +66,51 @@ module Twat
66
66
  end
67
67
  end
68
68
 
69
+ private
70
+
71
+ # @return last_id
72
+ def process_followed(tweets)
73
+ last_id = nil
74
+ tweets.reverse.each do |tweet|
75
+ format(tweet)
76
+ last_id = tweet.id
77
+ end
78
+
79
+ return last_id
80
+ end
81
+
82
+ public
83
+
84
+ def follow
85
+ # I can't see any way to poll the server for updates, so in the meantime
86
+ # we will have to retrieve a few tweets from the timeline, and then poll
87
+ # occasionally :/
88
+ twitter_auth
89
+
90
+ # Get 5 tweets
91
+ tweets = Twitter.home_timeline(:count => 5)
92
+ begin
93
+ while true do
94
+ last_id = process_followed(tweets) if tweets.any?
95
+ # Sleep 15 seconds between requests
96
+ # If left running at all times, that's 240 requests per hour, well
97
+ # under the limit
98
+ # sleep 15
99
+ # Disregard that, once per 60 seconds is plenty
100
+ sleep 60
101
+ tweets = Twitter.home_timeline(:since_id => last_id)
102
+ end
103
+ rescue Interrupt
104
+ end
105
+ end
106
+
69
107
  def user_feed
70
108
  twitter_auth
71
109
 
72
110
  begin
73
- Twitter.user_timeline(opts[:user]).first.tap do |tweet|
111
+ Twitter.user_timeline(opts[:user]).each_with_index do |tweet, idx|
74
112
  puts "#{tweet.user.screen_name.bold.cyan}: #{tweet.text}"
113
+ break if idx == opts[:count]
75
114
  end
76
115
  rescue Twitter::NotFound
77
116
  puts "#{opts[:user].bold.red} doesn't appear to be a valid user"
@@ -14,8 +14,9 @@ module Twat
14
14
 
15
15
  def getopts
16
16
  options = Hash.new
17
+ options[:action] = :tweet
18
+ options[:count] = 1
17
19
  @optparser = OptionParser.new do |opts|
18
- options[:action] = :tweet
19
20
  opts.banner = "Usage: twat <tweet>"
20
21
 
21
22
  opts.on('-n', '--account ACCOUNT', 'Use ACCOUNT (or default)') do |acct| #{{{ --account ACCOUNT
@@ -37,6 +38,9 @@ module Twat
37
38
  options[:count] = count || 10
38
39
  options[:action] = :show
39
40
  end #}}}
41
+ opts.on('-f', '--follow', 'Display tweets from your newsfeed indefinitely') do #{{{ --follow
42
+ options[:action] = :follow
43
+ end #}}}
40
44
  opts.on('-v', '--version', 'Display version info') do #{{{ --version
41
45
  options[:action] = :version
42
46
  end #}}}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-10-07 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: twitter
16
- requirement: &20971900 !ruby/object:Gem::Requirement
16
+ requirement: &14528640 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *20971900
24
+ version_requirements: *14528640
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: oauth
27
- requirement: &20971320 !ruby/object:Gem::Requirement
27
+ requirement: &14528080 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *20971320
35
+ version_requirements: *14528080
36
36
  description: Command line tool for tweeting and whatnot
37
37
  email:
38
38
  - richo@psych0tik.net