Class: T::CLI::Follow
- Inherits:
-
Thor
- Object
- Thor
- T::CLI::Follow
- Includes:
- T::Collectable, Requestable
- Defined in:
- lib/t/cli/follow.rb
Constant Summary
Constants included from Requestable
Requestable::DEFAULT_HOST, Requestable::DEFAULT_PROTOCOL
Instance Method Summary collapse
- #followers ⇒ Object
-
#initialize ⇒ Follow
constructor
A new instance of Follow.
- #listed(list_name) ⇒ Object
- #users(screen_name, *screen_names) ⇒ Object
Methods included from Requestable
#base_url, #client, #host, included, #protocol
Methods included from T::Collectable
Constructor Details
Instance Method Details
#followers ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/t/cli/follow.rb', line 23 def followers follower_ids = collect_with_cursor do |cursor| client.follower_ids(:cursor => cursor) end friend_ids = collect_with_cursor do |cursor| client.friend_ids(:cursor => cursor) end follow_ids = (follower_ids - friend_ids) number = follow_ids.length return say "@#{@rcfile.default_profile[0]} is already following all followers." if number.zero? return unless yes? "Are you sure you want to follow #{number} #{number == 1 ? 'user' : 'users'}?" screen_names = follow_ids.threaded_map do |follow_id| retryable(:tries => 3, :on => Twitter::Error::ServerError, :sleep => 0) do client.follow(follow_id, :include_entities => false) end end say "@#{@rcfile.default_profile[0]} is now following #{number} more #{number == 1 ? 'user' : 'users'}." say say "Run `#{File.basename($0)} unfollow all followers` to stop." end |
#listed(list_name) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/t/cli/follow.rb', line 45 def listed(list_name) list_member_collection = collect_with_cursor do |cursor| client.list_members(list_name, :cursor => cursor, :skip_status => true, :include_entities => false) end number = list_member_collection.length return say "@#{@rcfile.default_profile[0]} is already following all list members." if number.zero? return unless yes? "Are you sure you want to follow #{number} #{number == 1 ? 'user' : 'users'}?" list_member_collection.threaded_map do |list_member| retryable(:tries => 3, :on => Twitter::Error::ServerError, :sleep => 0) do client.follow(list_member.id, :include_entities => false) end end say "@#{@rcfile.default_profile[0]} is now following #{number} more #{number == 1 ? 'user' : 'users'}." say say "Run `#{File.basename($0)} unfollow all listed #{list_name}` to stop." end |
#users(screen_name, *screen_names) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/t/cli/follow.rb', line 63 def users(screen_name, *screen_names) screen_names.unshift(screen_name) screen_names.threaded_map do |screen_name| retryable(:tries => 3, :on => Twitter::Error::ServerError, :sleep => 0) do client.follow(screen_name, :include_entities => false) end end number = screen_names.length say "@#{@rcfile.default_profile[0]} is now following #{number} more #{number == 1 ? 'user' : 'users'}." say say "Run `#{File.basename($0)} unfollow users #{screen_names.join(' ')}` to stop." end |