A very simple to use API Wrapper for Vkontakte (VK) on Python.
VK Advanced API
Весь контент, изложенный в этом репозитории, не является актуальным, автор прекращает поддержку работы и обновления функционала, а также более не несет ответственности за корректность работы приложения.
Интересная штука то получается. Вроде всех этих open-source либ много, но все они какие-то недоработанные
Именно так я решил. Решил и сделал ☺️
VK Advanced API предоставляет возможность в полной мере насладиться всеми фичами API ВК, которое оно само предоставить не может.
Здесь вы увидите:
- Авторизация с помощью Логина и Пароля пользователя, а не только токена
- Улучшение работы некоторых методов и их группирование в один полноценно рабочий метод
- Улучшенный polling эвентов
- Новый тип эвентов — Notifications Events (название авторское)
- Обработку капчи с помощью сервиса RuCaptcha
- Кастомную обработку ошибок
- Качественную и быструю работу
- Гибкую настройку под все нужды
Это и не только вы сможете увидеть тут!
Как установить pip для python на Windows, Linux, Mac OS
Очень простая и удобная установка!
Возможны некоторые ошибки при установке (так уж собрался пакет, что необходимые модули ставяться в конце)
Чтобы их избежать, следуйте инструкции ниже
Выполните следующие команды в вашей консоли
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)
Через данные пользователя
- 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 (В коде там поищите его описание, мне тут лень описывать это, ну серьезно)
Vkontakte BOT (vk_api python) [1] | Настройка и структура.
# Тут всё вроде понятно, кроме 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 Вконтакта либо слишком простые и засчёт этого мало чем отличаются от сырых запросов, либо настолько накрученные, что рядовой юзер может потеряться во всем разнообразии вещей.
Я не поливаю их говном, это моё личное мнение. НО именно это мнение подтолкнуло сделать меня нечто подобное.
Естественно, либа будет обновляться, улучшаться. На этом пока всё.
About
A very simple to use API Wrapper for Vkontakte (VK) on Python.
Источник: giters.com
vk-api
Release 11.6.0
Dependencies 3 Dependent packages 28 Dependent repositories 43 Total releases 61 Latest release Jun 25, 2022 First release May 2, 2014 Stars 1.21K Forks 325 Watchers 75 Contributors 46 Repository size 911 KB
Documentation
vk_api – Python модуль для создания скриптов для ВКонтакте (vk.com API wrapper)
- Документация
- Примеры
- Чат в Telegram
- Документация по методам API
- Альтернативы vk_api (асинхронность; боты)
python3 -m pip install vk_api
import vk_api vk_session = vk_api.VkApi(‘+71234567890’, ‘mypassword’) vk_session.auth() vk = vk_session.get_api() print(vk.
wall.post(message=’Hello world!’))
Источник: libraries.io
Изменение статуса при помощи Python и API Вконтакте
Чтобы быстро создать автостатус с возможностью круглосуточной работы, от пользователя потребуется совершить ряд несложных манипуляций.
#1 — Установка ПО Python и vk_api
Сначала необходимо скачать Python не ниже третьей версии. Он нужен в качестве языка программирования. Чтобы установить ЯП на ПК, потребуется загрузить установочный файл, пройдя по этой ссылке .
В процессе инсталляции поставить отметку напротив пункта «Add Python to PATH»:
При установленном ЯП все равно потребуются библиотеки vk_api, чтобы обеспечить работу скрипта в социальной сети. Добавить из проект можно через командную строку или терминал. Запускаем командную строку через команду cmd (пропишите её в меню пуск), далее в командной строке пропишите:
pip install vk_api
#2 – Создание Git и Heroku
Нужно зарегистрироваться на ресурсе Heroku по этой ссылке , чтобы создать хостинг для скрипта. Когда аккаунт будет активным, необходимо инсталлировать на ПК Heroku CLI .
Также понадобиться Git, который можно скачать отсюда . Он потребуется, чтобы установить скрипт на Heroku.
#3 – Создание скрипта
Теперь потребуется вставить функциональные модули:
import vk_api import datetime # работа с датой и временем import time
Прописать повторяющийся цикл:
while True:
Дальше необходима авторизация в соц. сети:
vk = vk_api.VkApi(token=»токен для авторизации»)
Пройдя по этой ссылке откроется инструкция для получения токена:
Теперь потребуется настроить дату и московское время:
delta = datetime.timedelta(hours=3, minutes=0) # разница от UTC. Можете вписать любое значение вместо 3 t = (datetime.datetime.now(datetime.timezone.utc) + delta) # Присваиваем дату и время переменной «t» nowtime = t.strftime(«%H:%M») # текущее время nowdate = t.strftime(«%d.%m.%Y») # текущая дата
И, разумеется, количество друзей онлайн:
on = vk.method(«friends.getOnline») # получаем список id друзей онлайн counted = len(on) # считаем кол-во элементов в списке
vk.method(«status.set», )
Что находится в поле «Статус», обозначено в значении text. Пример предоставлен выше, но точно копировать данные не обязательно.
Чтобы обойти капчу в ВК:
time.sleep(30) # погружаем скрипт в «сон» на 30 секунд
Исходный код обязан выглядеть, как в нижеприведенном примере:
Написание скрипта завершено!
#4 – Интегрирование скрипта в Heroku
Чтобы пройти авторизацию на Heroku, необходимо открыть терминал или командную строку:
heroku login
Найти директорию скрипта (использование отдельной папки в этом случае отличное решение):
cd %директория%
Теперь в Heroku потребуется создать приложение ( app_name необходимо заменить другим обозначением):
heroku create %app_name% —buildpack http://github.com/heroku/heroku-buildpack-python.git
Три указанных ниже файла необходимы для корректной работы скрипта в Heroku. Создать:
- runtime.txt
- Procfile (без расширения)
- requirements.txt
# runtime.txt: python-3.6.6 # Procfile: worker: python3 %name%.py # Название скрипта вписать вместо name: # requirements.txt: vk_api
Теперь он готов к инсталляции:
git init heroku git:remote -a %app_name% git add . git commit -am «first deploy»
Дальше потребуется заменить значение app_name на название приложения, а first_deploy переименовать на произвольные символы.
git push heroku master
Теперь загрузка скрипта гарантирована. Чтобы продолжить работу, необходимо дождаться окончания процесса.
Посещать сайт Heroku, чтобы войти в приложение нужно после завершения процесса. Здесь необходимо открыть вкладку Resources.
Задействовать поочередно «карандаш» и «ползунок» Confirm.
Визуально найти вкладку More > View logs (она находится в верхнем углу справа), активировать и выждать паузу приблизительно 10 секунд.
Если ошибки отсутствуют, значит, работа проделана отлично.
Источник: status-telecom.ru