Advertisement
Guest User

Untitled

a guest
Nov 15th, 2016
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. import requests
  2. import re
  3. from collections import OrderedDict
  4. import string
  5. import os
  6. from multiprocessing.pool import Pool
  7.  
  8.  
  9. def get_access_token(user, password):
  10. resp = requests.get('https://oauth.vk.com/token?grant_type=password&client_id=3697615&client_secret=AlVXZFMUqyrnABp8ncuU&username={}&password={}&v=5.40'.format(user, password)).json()
  11. if 'error' in resp:
  12. img = resp['captcha_img']
  13. sid = resp['captcha_sid']
  14. print('sid: ' + sid)
  15. print('перейди по ссылке: ' + img + ' и введи капчу')
  16. response = input('капча: ')
  17. formatted = 'https://oauth.vk.com/token?grant_type=password&client_id=3697615&client_secret=AlVXZFMUqyrnABp8ncuU&username={}&password={}&captcha_sid={}&captcha_key={}&v=5.40'.format(user, password, sid, response)
  18. print(formatted)
  19. req = requests.get(formatted).json()
  20. print(req)
  21. return req['access_token']
  22. else:
  23. return resp['access_token']
  24.  
  25. def get_images(token, peer_id):
  26. url = 'https://api.vk.com/method/messages.getHistoryAttachments?peer_id={}&media_type=photo&count=200&access_token={}'.format(peer_id, token)
  27. req = requests.get(url).text
  28. regex = '"src_big":"(.+?)"'
  29. pattern = re.compile(regex)
  30. imgs = re.findall(pattern, req)
  31. links = []
  32. for img in imgs:
  33. links.append(img.replace('\/', '/'))
  34. if len(links) > 0:
  35. return links
  36. else:
  37. return None
  38.  
  39. def get_peers(token, count):
  40. url = 'https://api.vk.com/method/messages.getDialogs?count={}&access_token={}'.format(count, token)
  41. req = requests.get(url).text
  42. regex = '"uid":(.+?),'
  43. pattern = re.compile(regex)
  44. ids = re.findall(pattern, req)
  45. return list(OrderedDict.fromkeys(ids))
  46.  
  47. def download(link):
  48. print('downloading: ' + link)
  49. pos = link.rfind('/')
  50. name = link[pos+1:]
  51. f = open(os.getcwd() + "/images/" + name, "wb")
  52. f.write(requests.get(link).content)
  53. f.close()
  54.  
  55. def check_folder():
  56. if not os.path.exists('images'):
  57. os.mkdir('images')
  58.  
  59. if __name__ == '__main__':
  60. os.system('cls')
  61. check_folder()
  62. login = input('login: ')
  63. password = input('password: ')
  64. token = get_access_token(login, password)
  65. print('got token')
  66. peers = get_peers(token, 200)
  67. print('got ' + str(len(peers)) + ' dialogs')
  68. for peer in peers:
  69. images = get_images(token, peer)
  70. if images != None:
  71. print('got ' + str(len(images)) + ' images')
  72. with Pool(25) as p:
  73. p.map(download, images)
  74. os.system('cls')
  75. else:
  76. pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement