vk-advanced-api

Simple to use OpenSource Lib for API VK


Keywords
opensource, vk, api, wrappper, ar4ikov, vkadvancedapi, vk_advanced_api, bot, polling, python, rucaptcha, vk-api, vk-bot, vk-bot-python, vk-python, wrapper
License
MIT
Install
pip install vk-advanced-api==1.3.1.2

Documentation

VK Advanced API

Интересная штука то получается. Вроде всех этих open-source либ много, но все они какие-то недоработанные 😡

Именно так я решил. Решил и сделал ☺️

VK Advanced API предоставляет возможность в полной мере насладиться всеми фичами API ВК, которое оно само предоставить не может.

Здесь вы увидите:

  • Авторизация с помощью Логина и Пароля пользователя, а не только токена
  • Улучшение работы некоторых методов и их группирование в один полноценно рабочий метод
  • Улучшенный polling эвентов
  • Новый тип эвентов - Notifications Events (название авторское)
  • Обработку капчи с помощью сервиса RuCaptcha
  • Кастомную обработку ошибок
  • Качественную и быструю работу
  • Гибкую настройку под все нужды

Это и не только вы сможете увидеть тут!


Установка

Очень простая и удобная установка!

Возможны некоторые ошибки при установке (так уж собрался пакет, что необходимые модули ставяться в конце)

Чтобы их избежать, следуйте инструкции ниже

Выполните следующие команды в вашей консоли

pip install requests
pip install parsel
pip install captcha_solver
pip install pymitter
pip install lxml

И установите сам модуль

pip install vk_advanced_api

Если хотите установить определенную версию, используйте ==version, где version - желаемая версия

pip install vk_advanced_api==1.3.1

Чтобы обновить модуль, напишите параметр --upgrade, установится последнаяя стабильная версия

pip install --upgrade vk_advanced_api

Авторизация

(Все представленное здесь хорошо описано в директории examples)

Через данные пользователя

# Импорт модуля
import vk_advanced_api

# Экземпляр класса VKAPI
api = vk_advanced_api.VKAPI(
    app_id='your-app-id',
    login='help@ar4ikov.ru',
    password='qwerty',
    captcha_key='your-captcha-key',
    version=5.71,
    warn_level=1
)

где:

  • app_id - ID Вашего Standalone-приложения (тут прочтите)
  • login - Логин/Email/Телефон юзера
  • password - Пароль юзера
  • captcha_key - API Ключ к вашему аккаунту на RuCaptcha
  • version - Желаемая версия API VK
  • warn_level - Уровень лога ошибок, где 1 - вывод в консоль, 2 - вызов ошибок (raise)

При данном типе авторизации будет получен Access Token юзера, так что вы всегда сможете получить его

access_token = api.access_token

Через токен

# Импортируем модуль
import vk_advanced_api

# Создаем экземпляр класса VKAPI
api = vk_advanced_api.VKAPI(
    access_token='Your-Access-Token',
    captcha_key='your-captcha-key',
    version=5.71,
    warn_level=1
)

где:

  • access_token - Access Token юзера

Вызов методов

(Все представленное здесь хорошо описано в директории examples)

Всего в модифицированной версии есть пару методов, основную часть которых, конечно же, составляет само API Вконтактика.

Один из таких - sendMessage (В коде там поищите его описание, мне тут лень описывать это, ну серьезно)

# Тут всё вроде понятно, кроме attachments
# Он описан в examples/upload_media.py

api.sendMessage(
    user_id=1,
    message='Привет, Дуров',
    attachments=[]
    )

Чтобы получить класс API, обратимся к utils

>>> utils = api.utils

После попытаемся вызвать метод. Т.к. я постарался поиграться с "магией" Питона ( getattr и call ), то все методы можно получить просто как методы самой библиотеки. Те, кто знают, что может getattr и call поймут меня.

>>> utils.messages.send(user_id=1, message='Привет, Дуров!')

(а это типо ответ API на ваш запрос)

364582

За подобную идею хочу отблагодарить человека dimka665 и его проект vk


LongPolling и обработка эвентов

(Все представленное здесь полностью описано в директории examples Сказал же, что ПОЛНОСТЬЮ!)

Более подробно о технологии LongPolling VK читайте тут

Моя либа предоставляет возможность работать с обработанными эвентами, в частности направленные на помощь в создании чат-ботов

Например, вот вам эвент new_message

Ключ Что означает
type Тип сообщения (public или private)
message_id ID сообщения
date Дата события по UNIX
is_out Определяет, явзяется ли сообщение исходящим (True, если да)
args Аргументы (просто всё, что разделено пробелом), помогают при создании команд для чат-бота
is_command Определяет, является ли сообщение командой (True, если да)
peer_id ID диалога (диалогом может быть беседа или личный чат)
from_id (только для бесед, вернет None, если личное сообщение) - ID пользователя, который отправил сообщение
body Тело эвента в нетронутом виде, которое поступило при запросе на Polling сервер VK
is_acted (только для бесед, вернет False, если личное сообщение) - Позволяет определить, является ли этот эвент действием в беседе
attachments Вложения

Или вот вам описание ключа act в эвенте new_action

Ключ Что означает
act ID действия
act_mid ID юзера, над которым совершили действие
act_from ID юзера, который совершил действие
act_text Текст, который был передан в действии (обычно новое название беседы)

Также существует особый тип эвентов - Notifications Events.

По своей сути данный тип эвентов является тем самым случаем, когда обычный метод становится возможностью получать все более свежую информацию. Данная функция - уникальна и встречается только в данной библиотеке. (За идею спасибо ему)

Примечание

Данный функционал находится в тестировании и возможно нуждается в правках.

Ниже представлено описание ключей данного эвента -> new_notification

Ключ Что означает
user_id ID пользователя, который совершил действие. Параметр user_ids не передается, если был передан текущий
user_ids Список, содержащий ID пользователей, совершивших данное действие в один промежуток времени или там, где это необходимо. Параметр user_id в данном случае не передается
type Тип действия, подробнее на https://vk.com/dev/notifications.get
date Дата события по UNIX
body Тело события (Для разных типов событий содержатся разные поля)
parent_id ID материала, к которому появился ответ
parent Информация о материале, к которому появился ответ

(На самом деле я простот игрался с таблицами, красиво выглядят...)


Заключение

Не поймите меня неправильно, но я просто уже устал от того, что для многих понимания простота и удобство утратило свой смысл. Большинство существующих либ для работы с API Вконтакта либо слишком простые и засчёт этого мало чем отличаются от сырых запросов, либо настолько накрученные, что рядовой юзер может потеряться во всем разнообразии вещей.

Я не поливаю их говном, это моё личное мнение. НО именно это мнение подтолкнуло сделать меня нечто подобное. 💻

Естественно, либа будет обновляться, улучшаться. На этом пока всё.