Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- import re
- from collections import OrderedDict
- import string
- import os
- from multiprocessing.pool import Pool
- def get_access_token(user, password):
- 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()
- if 'error' in resp:
- img = resp['captcha_img']
- sid = resp['captcha_sid']
- print('sid: ' + sid)
- print('перейди по ссылке: ' + img + ' и введи капчу')
- response = input('капча: ')
- 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)
- print(formatted)
- req = requests.get(formatted).json()
- print(req)
- return req['access_token']
- else:
- return resp['access_token']
- def get_images(token, peer_id):
- url = 'https://api.vk.com/method/messages.getHistoryAttachments?peer_id={}&media_type=photo&count=200&access_token={}'.format(peer_id, token)
- req = requests.get(url).text
- regex = '"src_big":"(.+?)"'
- pattern = re.compile(regex)
- imgs = re.findall(pattern, req)
- links = []
- for img in imgs:
- links.append(img.replace('\/', '/'))
- if len(links) > 0:
- return links
- else:
- return None
- def get_peers(token, count):
- url = 'https://api.vk.com/method/messages.getDialogs?count={}&access_token={}'.format(count, token)
- req = requests.get(url).text
- regex = '"uid":(.+?),'
- pattern = re.compile(regex)
- ids = re.findall(pattern, req)
- return list(OrderedDict.fromkeys(ids))
- def download(link):
- print('downloading: ' + link)
- pos = link.rfind('/')
- name = link[pos+1:]
- f = open(os.getcwd() + "/images/" + name, "wb")
- f.write(requests.get(link).content)
- f.close()
- def check_folder():
- if not os.path.exists('images'):
- os.mkdir('images')
- if __name__ == '__main__':
- os.system('cls')
- check_folder()
- login = input('login: ')
- password = input('password: ')
- token = get_access_token(login, password)
- print('got token')
- peers = get_peers(token, 200)
- print('got ' + str(len(peers)) + ' dialogs')
- for peer in peers:
- images = get_images(token, peer)
- if images != None:
- print('got ' + str(len(images)) + ' images')
- with Pool(25) as p:
- p.map(download, images)
- os.system('cls')
- else:
- pass
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement