Программирование в Vkontakte на Python

от автора

Задачи

  1. Отправление заявок в друзья пользователям сайта VK.COM.
  2. Создание базы для хранения фото друзей.

Создание приложения

  1. Заходим на сайт vk.com/dev и открываем «Мои приложения».
  2. Нажимаем «Создать приложение», создаем название и выбираем платформу «Standalone-приложение».
  3. Заходим в настройки приложения и находим его 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 — пример получения прав доступа. Прочие права можно найти здесь.

  1. Помещаем в строку браузера и переходим по ссылке.
  2. В адресной строке получим новую ссылку: #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.
ссылка на оригинал статьи https://habrahabr.ru/post/325620/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *