- PVSM.RU - https://www.pvsm.ru -
Здраствуйте, Хабровчане!
В последнее время мне часто приходится сталкиваться с API Вконтакте, благо для работы с ней есть замечательная библиотека, доступная для установки через PyPl с наименованием там vk. Но у неё есть один относительный недостаток: она не может получить за вас токен доступа к api (acess_token), без этого токена (набор символов, который Вконтакте выдает пользователю, если разрешает приложению доступ к его странице) работать с API нельзя. Проблемы, связанные с VK API, авторизацией и получением прав на python 3.x, а также небольшая инструкция и мини-FAQ по работе с VK API вы найдёте ниже.
Получить токен можно разными путями, наиболее удобный и практичный описан в публикации «Пишем модуль для авторизации в VK API» [1], но и он несовершенен, так как его можно использовать для Python 2.x, а мы люди прогрессивные и хотим 3.x, не так ли? Не буду томить, вот мой порт этого модуля под Python 3.x (никакие сторонние модули не нужны):
Итак, простой код для теста всё ли правильно установлено:
import vk,vk_auth_port_by_bulates1
vkapi = vk.API(app_id,login,password)
vkapi.access_token=vk_auth_port_by_bulates1.auth(login,password,app_id,'wall')
vkapi.wall.post(message="Test from python 3.4")
Здесь:
Получается он очень просто, заходите сюда [4] и создаёте собственное Standalone приложение, название значения не имеет. Далее жмёте редактировать приложение, заходите во вкладку настройки и видите строку ID приложения. То, что напротив неё, и есть app_id, посылаем его в виде строки.
Необходимые нам права указаны в официальной документации VK здесь [5]. Выбираете нужный метод и там сверху написано жирным шрифтом, какие права нужно иметь, выписываем все необходимые нам права и посылаем их в виде строки с разделителем '+', например, 'wall+friends+groups'.
Теперь наконец-то приступим к написанию первого самостоятельного приложения.
Для начала предлагаю написать простенький скрипт для скачивания фото на компьютер с использованием API.
import vk,vk_auth_port_by_bulates1,urllib.request
vkapi = vk.API(app_id,login,password)
vkapi.access_token=vk_auth_port_by_bulates1.auth(login,password,app_id,'photos')
albums=[x['id'] for x in vkapi.photos.getAlbums(owner_id=yid)['items']]
for album in albums:
photos=vkapi.photos.get(owner_id=yid,album_id=album)['items']
for photo in photos:
link=photo[sorted([x for x in photo.keys() if 'photo' in x],key=lambda x: int(x.split('_')[1]))[-1]]
urllib.request.urlretrieve(link,link.split('/')[-1])
Строка:
В данном случае yid — идентификатор того, чьи альбомы скачиваем, например ваш, разумеется у вас должен быть доступ к этим фото
Короче чем тут [1], не так ли? Правда, здесь без выбора альбома, но это неважно, главное, что через API быстрее, короче и удобнее.
Надеюсь, вам понравилась данная статья.
Автор: python_coder
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/73611
Ссылки в тексте:
[1] «Пишем модуль для авторизации в VK API»: http://habrahabr.ru/post/143972/
[2] это закинуть по пути python/Lib/site-packages/: https://yadi.sk/d/qOOj61p8cUpLD
[3] а это исходник, если кому-то нужно: https://yadi.sk/d/qUTGiB8icUpNy
[4] сюда: https://vk.com/editapp?act=create
[5] здесь: https://vk.com/dev/methods
[6] таком: https://vk.com/dev/photos.get
[7] Источник: http://habrahabr.ru/post/242365/
Нажмите здесь для печати.