Задачи
- Отправление заявок в друзья пользователям сайта VK.COM.
- Создание базы для хранения фото друзей.
Создание приложения
- Заходим на сайт vk.com/dev и открываем «Мои приложения».
- Нажимаем «Создать приложение», создаем название и выбираем платформу «Standalone-приложение».
- Заходим в настройки приложения и находим его ID.
Получение ключа безопасности
Формулируем запрос вида:
#https://oauth.vk.com/authorize?client_id=ПолученныйID&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=friends,photos&response_type=token&v=5.52
friends, photos — пример получения прав доступа. Прочие права можно найти здесь.
- Помещаем в строку браузера и переходим по ссылке.
- В адресной строке получим новую ссылку: #https://oauth.vk.com/blank.html#access_token=??????????????????????????????????????????????&expires_in=?????&user_id=????????
??? — тут будут находиться ваши личные данные.
access_token — необходимый нам параметр для отправки заявок друзьям. Но он устаревает каждые 24 часа и нужно получать новый.
Импорт
import requests — выполнение HTTP-запросов
import os — взаимодействие с операционной системой
from multiprocessing import Pool — параллельные вычисления
import time — работа со временем
Код
Главная процедура
Запуск процедурыtoken='345hbfgd1dff4d7746...' #приравниваем переменной access_token if __name__ == '__main__': friends_id = [] get_id(friends_id) s = input("Отправить заявки в друзья - '1'\nПолучить фото друзей - '2'\n") if s == '1': app_counter = 0 for ID in friends_id: get_new_friends(ID, app_counter) elif s == '2': with Pool(5) as p: p.map(get_photos, friends_id)
Теперь необходимо получить полный список ID друзей.
ID друзейdef get_id(friends_id): r = requests.get('https://api.vk.com/method/friends.get?user_id=ВАШ_ID_СТРАНИЦЫ&fields=list_id&v=5.62') #не забудьте заменить ID for ID in r.json()['response']['items']: friends_id+=[{'first_name':ID['first_name'], 'last_name':ID['last_name'], 'id':ID['id']}] return friends_id
Отправка заявок
Отправлять заявки будем друзьям друзей.
Формулирование запросов строится по типу: requests.get{https://api.vk.com/method/НазваниеМетода, params = {НеобходимыеПараметры}}. Список методов можно получить здесь.
Новые друзьяdef get_new_friends(ID, app_counter): r = requests.get('https://api.vk.com/method/friends.get?user_id='+str(ID['id'])+'&fields=list_id&v=5.62') for i in r.json()['response']['items']: req = requests.get('https://api.vk.com/method/friends.add', params={'user_id':i['id'], 'access_token':token}) try: if req.json()['response'] == 1: app_counter+=1 print('Заявок отправлено: '+str(app_counter)) time.sleep(10) return app_counter except: time.sleep(10)
Скачивание фото
Создадим папку D:/Photos, программа станет заполнять ее новыми папками с именами друзей. Будем брать только те фото, что стояли на аватарке (работа с фотографиями).
Получение фотографийdef get_photos(ID): counter = 0 try: for i in requests.get('https://api.vk.com/method/photos.get', params = {'owner_id':ID['id'], 'album_id':'profile', 'access_token':token}).json()['response']: if counter == 0: os.mkdir('D:/Photos/'+ID['first_name']+'_'+ID['last_name']) else: p = requests.get(i['src_big']) out = open('D:/Photos/'+ID['first_name']+'_'+ID['last_name']+'/'+str(counter)+'.jpg', "wb") out.write(p.content) out.close() counter+=1 except: None
Приведенная программа расширяет пользовательские возможности социальной сети vk.
Поделиться с друзьями
vpiskunov
Извините, но действиельно очень жаль, что статьи такого уровня идут у main Хабр-а.