twitter_with_auto_pagination 0.9.2 → 0.9.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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e6d62667d58aad44e53e4899aa19aefcfc9bd52
|
4
|
+
data.tar.gz: 30e641dc1fbae06370e82aae2194a350b9220f0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3834eb85fb20cb6967f82036605b7272d1f550d8d3f0399baa88fe361a487c3d3d7e1fea296fe3955fc8af8319cfe98b35bd1e2bf394c1a9f5ca38bbf1a4de93
|
7
|
+
data.tar.gz: 509bc8bfac522574b4fde7399970306bbc7124718973093400ee29dc563f867ca6d895f5b0236f796890a1b51f53f0104c3a3272c03590ffd2f2da206422e554
|
@@ -15,11 +15,30 @@ module TwitterWithAutoPagination
|
|
15
15
|
end
|
16
16
|
|
17
17
|
class Arguments < Array
|
18
|
-
%i(
|
18
|
+
%i(
|
19
|
+
users
|
20
|
+
friend_ids
|
21
|
+
follower_ids
|
22
|
+
friends
|
23
|
+
followers
|
24
|
+
home_timeline
|
25
|
+
user_timeline
|
26
|
+
mentions_timeline
|
27
|
+
search
|
28
|
+
favorites
|
29
|
+
).each do |name|
|
19
30
|
define_method(name) do |*args|
|
20
31
|
send(:<< , [name, *args])
|
21
32
|
end
|
22
33
|
end
|
23
34
|
end
|
35
|
+
|
36
|
+
# Deprecated
|
37
|
+
# [{method: :friends, args: ['ts_3156', ...], {...}]
|
38
|
+
def fetch_parallelly(signatures)
|
39
|
+
::Parallel.map_with_index(signatures, in_threads: signatures.size) do |signature, i|
|
40
|
+
{i: i, result: send(signature[:method], *signature[:args])}
|
41
|
+
end.sort_by { |q| q[:i] }.map { |q| q[:result] }
|
42
|
+
end
|
24
43
|
end
|
25
|
-
end
|
44
|
+
end
|
@@ -5,9 +5,8 @@ require 'twitter_with_auto_pagination/rest/search'
|
|
5
5
|
require 'twitter_with_auto_pagination/rest/timelines'
|
6
6
|
require 'twitter_with_auto_pagination/rest/users'
|
7
7
|
|
8
|
-
|
8
|
+
require 'twitter_with_auto_pagination/rest/extension/clusters'
|
9
9
|
# require 'twitter_with_auto_pagination/rest/extension/favoriting'
|
10
|
-
# require 'twitter_with_auto_pagination/rest/extension/friends_and_followers'
|
11
10
|
# require 'twitter_with_auto_pagination/rest/extension/replying'
|
12
11
|
# require 'twitter_with_auto_pagination/rest/extension/unfollowing'
|
13
12
|
# require 'twitter_with_auto_pagination/rest/extension/users'
|
@@ -24,9 +23,8 @@ module TwitterWithAutoPagination
|
|
24
23
|
include TwitterWithAutoPagination::REST::Timelines
|
25
24
|
include TwitterWithAutoPagination::REST::Users
|
26
25
|
|
27
|
-
|
26
|
+
include TwitterWithAutoPagination::REST::Extension::Clusters
|
28
27
|
# include TwitterWithAutoPagination::REST::Extension::Favoriting
|
29
|
-
# include TwitterWithAutoPagination::REST::Extension::FriendsAndFollowers
|
30
28
|
# include TwitterWithAutoPagination::REST::Extension::Replying
|
31
29
|
# include TwitterWithAutoPagination::REST::Extension::Unfollowing
|
32
30
|
# include TwitterWithAutoPagination::REST::Extension::Users
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twitter_with_auto_pagination
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shinohara Teruki
|
@@ -90,7 +90,6 @@ files:
|
|
90
90
|
- lib/twitter_with_auto_pagination/rest/api.rb
|
91
91
|
- lib/twitter_with_auto_pagination/rest/extension/clusters.rb
|
92
92
|
- lib/twitter_with_auto_pagination/rest/extension/favoriting.rb
|
93
|
-
- lib/twitter_with_auto_pagination/rest/extension/friends_and_followers.rb
|
94
93
|
- lib/twitter_with_auto_pagination/rest/extension/replying.rb
|
95
94
|
- lib/twitter_with_auto_pagination/rest/extension/unfollowing.rb
|
96
95
|
- lib/twitter_with_auto_pagination/rest/extension/users.rb
|
@@ -1,124 +0,0 @@
|
|
1
|
-
require 'twitter_with_auto_pagination/rest/utils'
|
2
|
-
require 'parallel'
|
3
|
-
|
4
|
-
module TwitterWithAutoPagination
|
5
|
-
module REST
|
6
|
-
module Extension
|
7
|
-
module FriendsAndFollowers
|
8
|
-
include TwitterWithAutoPagination::REST::Utils
|
9
|
-
|
10
|
-
def _fetch_parallelly(signatures) # [{method: :friends, args: ['ts_3156', ...], {...}]
|
11
|
-
result = Array.new(signatures.size)
|
12
|
-
|
13
|
-
Parallel.each_with_index(signatures, in_threads: result.size) do |signature, i|
|
14
|
-
result[i] = send(signature[:method], *signature[:args])
|
15
|
-
end
|
16
|
-
|
17
|
-
result
|
18
|
-
end
|
19
|
-
|
20
|
-
def friends_followers_and_statuses(*args)
|
21
|
-
_fetch_parallelly(
|
22
|
-
[
|
23
|
-
{method: :friends, args: args},
|
24
|
-
{method: :followers, args: args},
|
25
|
-
{method: :user_timeline, args: args}])
|
26
|
-
end
|
27
|
-
|
28
|
-
def _retrieve_friends_and_followers(*args)
|
29
|
-
obj = args[0]
|
30
|
-
if obj.nil?
|
31
|
-
friends_and_followers
|
32
|
-
elsif uid_or_screen_name?(obj)
|
33
|
-
friends_and_followers(obj)
|
34
|
-
elsif obj.respond_to?(:friends) && obj.respond_to?(:followers)
|
35
|
-
[obj.friends, obj.followers]
|
36
|
-
else
|
37
|
-
raise ArgumentError, args.inspect
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def one_sided_friends(me = nil)
|
42
|
-
instrument(__method__, nil) do
|
43
|
-
_friends, _followers = _retrieve_friends_and_followers(me)
|
44
|
-
_friends.to_a - _followers.to_a
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def one_sided_followers(me = nil)
|
49
|
-
instrument(__method__, nil) do
|
50
|
-
_friends, _followers = _retrieve_friends_and_followers(me)
|
51
|
-
_followers.to_a - _friends.to_a
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def mutual_friends(me = nil)
|
56
|
-
instrument(__method__, nil) do
|
57
|
-
_friends, _followers = _retrieve_friends_and_followers(me)
|
58
|
-
_friends.to_a & _followers.to_a
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def _retrieve_friends(*args)
|
63
|
-
if args.size == 1
|
64
|
-
args[0].nil? ? friends : friends(args[0])
|
65
|
-
elsif args.all? { |obj| uid_or_screen_name?(obj) }
|
66
|
-
_fetch_parallelly(args.map { |obj| {method: :friends, args: [obj]} })
|
67
|
-
elsif args.all? { |obj| obj.respond_to?(:friends) }
|
68
|
-
args.map { |obj| obj.friends }
|
69
|
-
else
|
70
|
-
raise ArgumentError, args.inspect
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
def common_friends(me, you)
|
75
|
-
instrument(__method__, nil) do
|
76
|
-
my_friends, your_friends = _retrieve_friends(me, you)
|
77
|
-
my_friends.to_a & your_friends.to_a
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def _retrieve_followers(*args)
|
82
|
-
if args.size == 1
|
83
|
-
args[0].nil? ? followers : followers(args[0])
|
84
|
-
elsif args.all? { |obj| uid_or_screen_name?(obj) }
|
85
|
-
_fetch_parallelly(args.map { |obj| {method: :followers, args: [obj]} })
|
86
|
-
elsif args.all? { |obj| obj.respond_to?(:followers) }
|
87
|
-
args.map { |obj| obj.followers }
|
88
|
-
else
|
89
|
-
raise ArgumentError, args.inspect
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
def common_followers(me, you)
|
94
|
-
instrument(__method__, nil) do
|
95
|
-
my_followers, your_followers = _retrieve_followers(me, you)
|
96
|
-
my_followers.to_a & your_followers.to_a
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def _extract_inactive_users(users)
|
101
|
-
two_weeks_ago = 2.weeks.ago.to_i
|
102
|
-
users.select do |u|
|
103
|
-
(Time.parse(u.status.created_at).to_i < two_weeks_ago) rescue false
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
def inactive_friends(user = nil)
|
108
|
-
instrument(__method__, nil) do
|
109
|
-
_friends = _retrieve_friends(user)
|
110
|
-
_extract_inactive_users(_friends)
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
def inactive_followers(user = nil)
|
115
|
-
instrument(__method__, nil) do
|
116
|
-
_followers = _retrieve_followers(user)
|
117
|
-
_extract_inactive_users(_followers)
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|