Class: T::CLI::Unfollow
Constant Summary
Constants included
from Requestable
Requestable::DEFAULT_HOST, Requestable::DEFAULT_PROTOCOL
Instance Method Summary
collapse
#base_url, #client, #host, included, #protocol
#collect_with_cursor
Constructor Details
Returns a new instance of Unfollow.
17
18
19
20
|
# File 'lib/t/cli/unfollow.rb', line 17
def initialize(*)
super
@rcfile = RCFile.instance
end
|
Instance Method Details
#followers ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/t/cli/unfollow.rb', line 41
def followers
follower_ids = collect_with_cursor do |cursor|
client.follower_ids(:cursor => cursor)
end
friend_ids = collect_with_cursor do |cursor|
friends = client.friend_ids(:cursor => cursor)
end
follow_ids = (follower_ids - friend_ids)
number = follow_ids.length
return say "@#{@rcfile.default_profile[0]} is already not following any followers." if number.zero?
return unless yes? "Are you sure you want to unfollow #{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.unfollow(follow_id, :include_entities => false)
end
end
say "@#{@rcfile.default_profile[0]} is no longer following #{number} #{number == 1 ? 'user' : 'users'}."
say
say "Run `#{File.basename($0)} follow all followers` to stop."
end
|
#friends ⇒ Object
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/t/cli/unfollow.rb', line 63
def friends
friend_ids = collect_with_cursor do |cursor|
client.friend_ids(:cursor => cursor)
end
number = friend_ids.length
return say "@#{@rcfile.default_profile[0]} is already not following anyone." if number.zero?
return unless yes? "Are you sure you want to unfollow #{number} #{number == 1 ? 'user' : 'users'}?"
screen_names = friend_ids.threaded_map do |friend_id|
retryable(:tries => 3, :on => Twitter::Error::ServerError, :sleep => 0) do
user = client.unfollow(friend_id, :include_entities => false)
user.screen_name
end
end
say "@#{@rcfile.default_profile[0]} is no longer following #{number} #{number == 1 ? 'user' : 'users'}."
say
say "Run `#{File.basename($0)} follow users #{screen_names.join(' ')}` to follow again."
end
|
#listed(list_name) ⇒ Object
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/t/cli/unfollow.rb', line 23
def listed(list_name)
list_member_collection = collect_with_cursor do |cursor|
client.list_members(list_name, :cursor => cursor, :include_entities => false, :skip_status => true)
end
number = list_member_collection.length
return say "@#{@rcfile.default_profile[0]} is already not following any list members." if number.zero?
return unless yes? "Are you sure you want to unfollow #{number} #{number == 1 ? 'user' : 'users'}?"
list_member_collection.threaded_map do |list_member|
retryable(:tries => 3, :on => Twitter::Error::ServerError, :sleep => 0) do
client.unfollow(list_member.id, :include_entities => false)
end
end
say "@#{@rcfile.default_profile[0]} is no longer following #{number} #{number == 1 ? 'user' : 'users'}."
say
say "Run `#{File.basename($0)} follow all listed #{list_name}` to follow again."
end
|
#nonfollowers ⇒ Object
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/t/cli/unfollow.rb', line 83
def nonfollowers
friend_ids = collect_with_cursor do |cursor|
client.friend_ids(:cursor => cursor)
end
follower_ids = collect_with_cursor do |cursor|
client.follower_ids(:cursor => cursor)
end
unfollow_ids = (friend_ids - follower_ids)
number = unfollow_ids.length
return say "@#{@rcfile.default_profile[0]} is already not following any non-followers." if number.zero?
return unless yes? "Are you sure you want to unfollow #{number} #{number == 1 ? 'user' : 'users'}?"
screen_names = unfollow_ids.threaded_map do |unfollow_id|
retryable(:tries => 3, :on => Twitter::Error::ServerError, :sleep => 0) do
user = client.unfollow(unfollow_id, :include_entities => false)
user.screen_name
end
end
say "@#{@rcfile.default_profile[0]} is no longer following #{number} #{number == 1 ? 'user' : 'users'}."
say
say "Run `#{File.basename($0)} follow users #{screen_names.join(' ')}` to follow again."
end
|
#users(screen_name, *screen_names) ⇒ Object
106
107
108
109
110
111
112
113
114
115
116
117
|
# File 'lib/t/cli/unfollow.rb', line 106
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.unfollow(screen_name, :include_entities => false)
end
end
number = screen_names.length
say "@#{@rcfile.default_profile[0]} is no longer following #{number} #{number == 1 ? 'user' : 'users'}."
say
say "Run `#{File.basename($0)} follow users #{screen_names.join(' ')}` to follow again."
end
|