Advertisement
lamiastella

someone's code

Mar 2nd, 2017
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.94 KB | None | 0 0
  1.     def related_users(self, endpoint, user):
  2.         req = InstagramAuthRequest()
  3.         session = requests.Session()
  4.         url = 'https://www.instagram.com/%s/' % user.username
  5.         # response = req.authorized_request('get', url=url)
  6.         response = session.get(url=url)
  7.         csrf_token = req.get_csrf_token_from_content(response.content)
  8.         headers = {
  9.             'Referer': url,
  10.             'X-CSRFToken': csrf_token,
  11.             'Cookie': self.cookies.replace('CSRF_TOKEN', csrf_token),
  12.         }
  13.  
  14.         user_id = user.id
  15.         limit = 1000
  16.         method = 'first'
  17.         args = limit
  18.         next_page = True
  19.  
  20.         while next_page:
  21.             graphql = '''
  22. ig_user(%(user_id)s) {
  23.    %(endpoint)s.%(method)s(%(args)s) {
  24.        count, page_info { end_cursor, has_next_page },
  25.        nodes { id, is_verified, followed_by_viewer, requested_by_viewer, full_name, profile_pic_url, username }
  26.    }
  27. }''' % locals()
  28.  
  29.             # response = req.authorized_request('post', url=self.url, data={'q': graphql}, headers=headers)
  30.             response = session.post(url=self.url, data={'q': graphql}, headers=headers)
  31.             json_response = json.loads(response.content)
  32.  
  33.             if json_response['status'] == 'fail' \
  34.                     and json_response['message'] == 'Sorry, too many requests. Please try again later.':
  35.                 time.sleep(1)
  36.                 continue
  37.  
  38.             method = 'after'
  39.             try:
  40.                 args = '%s, %s' % (json_response[endpoint]['page_info']['end_cursor'], limit)
  41.                 next_page = json_response[endpoint]['page_info']['has_next_page']
  42.                 # print json_response[endpoint]['count'], len(json_response[endpoint]['nodes']), next_page
  43.                 yield json_response[endpoint]['nodes']
  44.             except KeyError:
  45.                 raise Exception('Unexpected response: "%s" of graphql request: "%s"' % (json_response, graphql))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement