Module: Insta::Feed
- Defined in:
- lib/insta/feed.rb
Class Method Summary collapse
- .user_followers(user, data, limit) ⇒ Object
- .user_followers_graphql(user, data, limit) ⇒ Object
- .user_followers_graphql_next_page(user, user_id, data, proxies) ⇒ Object
- .user_followers_next_page(user, user_id, data, proxies) ⇒ Object
- .user_media(user, data) ⇒ Object
- .user_media_graphql(user, data) ⇒ Object
Class Method Details
.user_followers(user, data, limit) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/insta/feed.rb', line 35 def self.user_followers(user, data, limit) has_next_page = true followers = [] user_id = (!data[:id].nil? ? data[:id] : user.data[:id]) proxies = Insta::ProxyManager.new data[:proxies] unless data[:proxies].nil? data[:rank_token] = Insta::API.generate_rank_token user.session.scan(/ds_user_id=([\d]+);/)[0][0] while has_next_page && limit > followers.size response = user_followers_next_page(user, user_id, data, proxies) has_next_page = !response['next_max_id'].nil? data[:max_id] = response['next_max_id'] followers += response['users'] end limit.infinite? ? followers : followers[0...limit] end |
.user_followers_graphql(user, data, limit) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/insta/feed.rb', line 50 def self.user_followers_graphql(user, data, limit) has_next_page = true followers = [] user_id = (!data[:id].nil? ? data[:id] : user.data[:id]) proxies = Insta::ProxyManager.new data[:proxies] unless data[:proxies].nil? while has_next_page && limit > followers.size response = user_followers_graphql_next_page(user, user_id, data, proxies) has_next_page = response['data']['user']['edge_followed_by']['page_info']['has_next_page'] data[:end_cursor] = response['data']['user']['edge_followed_by']['page_info']['end_cursor'] followers += response['data']['user']['edge_followed_by']['edges'] end limit.infinite? ? followers : followers[0...limit] end |
.user_followers_graphql_next_page(user, user_id, data, proxies) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/insta/feed.rb', line 64 def self.user_followers_graphql_next_page(user, user_id, data, proxies) endpoint = "https://www.instagram.com/graphql/query/?query_id=17851374694183129&id=#{user_id}&first=5000" param = (!data[:end_cursor].nil? ? "&after=#{data[:end_cursor]}" : '') result = Insta::API.http( url: endpoint + param, method: 'GET', user: user, proxy: proxies&.next ) JSON.parse result.body end |
.user_followers_next_page(user, user_id, data, proxies) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/insta/feed.rb', line 76 def self.user_followers_next_page(user, user_id, data, proxies) endpoint = "https://i.instagram.com/api/v1/friendships/#{user_id}/followers/" param = "?rank_token=#{data[:rank_token]}" + (!data[:max_id].nil? ? '&max_id=' + data[:max_id] : '') result = Insta::API.http( url: endpoint + param, method: 'GET', user: user, proxy: proxies&.next ) JSON.parse result.body end |
.user_media(user, data) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/insta/feed.rb', line 3 def self.user_media(user, data) user_id = (!data[:id].nil? ? data[:id] : user.data[:id]) rank_token = Insta::API.generate_rank_token user.session.scan(/ds_user_id=([\d]+);/)[0][0] endpoint = "https://i.instagram.com/api/v1/feed/user/#{user_id}/" proxies = Insta::ProxyManager.new data[:proxies] unless data[:proxies].nil? param = "?rank_token=#{rank_token}" + (!data[:max_id].nil? ? '&max_id=' + data[:max_id] : '') result = Insta::API.http( url: endpoint + param, method: 'GET', user: user, proxy: proxies&.next ) JSON.parse result.body end |
.user_media_graphql(user, data) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/insta/feed.rb', line 20 def self.user_media_graphql(user, data) user_id = (!data[:id].nil? ? data[:id] : user.data[:id]) endpoint = "https://www.instagram.com/graphql/query/?query_id=17880160963012870&id=#{user_id}&first=80&after=" proxies = Insta::ProxyManager.new data[:proxies] unless data[:proxies].nil? result = Insta::API.http( url: endpoint, method: 'GET', user: user, proxy: proxies&.next, desktop: true ) JSON.parse result.body end |