Весь контент, изложенный в этом репозитории, не является актуальным, автор прекращает поддержку работы и обновления функционала, а также более не несет ответственности за корректность работы приложения.
Интересная штука то получается. Вроде всех этих 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
(Все представленное здесь полностью описано в директории 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 Вконтакта либо слишком простые и засчёт этого мало чем отличаются от сырых
запросов, либо настолько накрученные, что рядовой юзер может потеряться во всем разнообразии вещей.
Я не поливаю их говном, это моё личное мнение. НО именно это мнение подтолкнуло сделать меня нечто подобное. 💻
Естественно, либа будет обновляться, улучшаться. На этом пока всё.