Еще одна библиотека для работы с VK API.
Для установки нужно написать в консоль pip install svkapi
, а затем импортировать:
from sVKAPI.core import *
Для начала нужно создать объект для работы с api: apiObj = API()
,
после чего необходимо СРАЗУ пройти аутентификацию. Сделать это можно тремя способами:
apiObj.authenticate(username = "...", password = "...")
- идентификация через логин и пароль https запросами. После успешной авторизации будет сохранена сессия и токен.apiObj.authenticate(token = "...")
илиapiObj.setToken("...")
- прямая передача токена в обьект. Важно! Если вы проходите авторизацию не в первый раз (т.е существуют файлы токена/сессии), то любые параметры, переданные вauthenticate(...)
будут проигнорированны.apiObj.authenticate()
- загрузка автоматически сохраненного токена из файла.
Обратите внимание: Объект apiObj
персистентный, т.е сохраняет данные авторизации (токен или сессия)
в файл после выхода из программы (в зашифрованном виде). Таким образом пройдя авторизацию один раз, все последующие можно проходить
3-им способом.
Важно! Используя 1-ый метод, либо 3-ий посредством 1-го, вам будет недоступна секция Messages, и, следовательно, Long Poll.
Для стандартного запроса необходимо вызвать apiObj.call(_)
, в который
передать название метода, и необходимые для него параметры (кроме токена и версии API), например:
apiObj.call("friends.get", user_id = 175486984, fields = "city")
.
В качестве ответа мы получим словарь из всех друзей пользователя id175486984, содержащий информацию о городе.
Со всеми методами VK API можно ознакомиться тут.
Метод apiObj.longPoll()
посылает запрос на сервер и ждет, пока сервер не вернет какие-либо события. Отправленные сервером данные
мы получаем в виде словаря (подробнее), который можем обработать.
Пример использования:
from sVKAPI.core import *
apiObj = API()
apiObj.authenticate(token = "...")
while True:
updates = apiObj.longPoll()
print(updates)
# Ответ
#
# [[4, 747386, 17, 175486984, 1589673104, 'Hello', {'title': ' ... '}, {}, 2100133870]]
#
# означает, что в 1589673104 (timestamp) нам пришло сообщение с ID 747386 и флагами 17 от 175486984,
# в котором содержится Hello
Для заметок
Если проблемы с авторизацией, попробуйте удалить файлы .enc