- Usage
- vk.API
- vk.UserAPI
- vk.DirectUserAPI
- vk.CommunityAPI
- Библиотека vk для работы с VK API на Python
- vk_api
- История выпусков Уведомления о выпусках | Лента RSS
- Загрузка файлов
- Source Distribution
- Built Distribution
- Хеши для vk_api-11.9.9.tar.gz
- Хеши для vk_api-11.9.9-py3-none-any.whl
- Помощь
- О PyPI
- Внесение вклада в PyPI
- Использование PyPI
Usage
Several types of APIs are implemented in this module. Each of them is needed for certain purposes, but they are all united by the way of accessing the VK API. After initializing the class, you can call any method. Let’s try to figure out what’s going on here:
>>> import vk >>> api = vk.API(access_token='. ', v='5.131') >>> print(api.users.get(user_ids=1)) []
It gets user info with user id equal to 1. vk.api.APINamespace object is used to create API request and send it via original vk.session.API class object (or another), which in turn, manages access token, sends API request, gets JSON response, parses and returns it.
vk.API
The simplest VK API implementation. Can process any API method that can be called from the server
- access_token (Optional[str]) – Access token for API requests obtained by any means (see documentation ). Optional when using InteractiveMixin
- **kwargs (any) – Additional parameters, which will be passed to each request. The most useful is v — API version and lang — language of responses (see documentation )
>>> import vk >>> api = vk.API(access_token='. ', v='5.131') >>> print(api.users.get(user_ids=1)) []
vk.UserAPI
Subclass of vk.session.API . It differs only in that it can get access token using user credentials (Implicit flow authorization).
This implementation uses the web version of VK to log in and receive cookies, and then obtains an access token through Implicit flow authorization. In the future, VK may change the approach to authorization (for example, replace it with VK ID) and maintaining operability will become quite a difficult task, and most likely it will be deprecated. Use vk.session.DirectUserAPI instead
- user_login (Optional[str]) – User login, optional when using InteractiveMixin
- user_password (Optional[str]) – User password, optional when using InteractiveMixin
- client_id (Optional[int]) – ID of the application to authorize with, defaults to “VK Admin” app ID
- scope (Optional[Union[str,int]]) – Access rights you need. Can be passed comma-separated list of scopes, or bitmask sum all of them (see official documentation). Defaults to ‘offline’
- **kwargs (any) – Additional parameters, which will be passed to each request. The most useful is v — API version and lang — language of responses (see documentation )
>>> import vk >>> api = vk.UserAPI( . user_login='. ', . user_password='. ', . scope='offline,wall', . v='5.131' . ) >>> print(api.users.get(user_ids=1)) []
Callback to retrieve authentication check code (if account supports 2FA). Default behavior is to raise exception, redefine in a subclass
The authentication check code can be obtained in the sent SMS, using Google Authenticator (or another authenticator), or it can be one of ten backup codes
vk.DirectUserAPI
Subclass of vk.session.UserAPI . Can get access token using user credentials (through Direct authorization).
Necessary data (client_id and client_secret) from other official applications
- user_login (Optional[str]) – User login, optional when using InteractiveMixin
- user_password (Optional[str]) – User password, optional when using InteractiveMixin
- client_id (Optional[int]) – ID of the official application, defaults to “VK for Android” app ID
- client_secret (Optional[str]) – Client secret of the official application, defaults to client secret of “VK for Android” app
- scope (Optional[Union[str,int]]) – Access rights you need. Can be passed comma-separated list of scopes, or bitmask sum all of them (see official documentation). Defaults to ‘offline’
- **kwargs (any) – Additional parameters, which will be passed to each request. The most useful is v — API version and lang — language of responses (see documentation )
>>> import vk >>> api = vk.DirectUserAPI( . user_login='. ', . user_password='. ', . scope='offline,wall', . v='5.131' . ) >>> print(api.users.get(user_ids=1)) []
vk.CommunityAPI
Subclass of vk.session.UserAPI . Can get community access token using user credentials (Implicit flow authorization for communities). To select a community on behalf of which to make request to the API method, you can pass the group_id param (defaults to the first community from the passed list)
This implementation uses the web version of VK to log in and receive cookies, and then obtains an access tokens through Implicit flow authorization for communities. In the future, VK may change the approach to authorization (for example, replace it with VK ID) and maintaining operability will become quite a difficult task, and most likely it will be deprecated.
You can create a group token on the management page: Community -> Management -> Working with API -> Access Tokens -> Create a token (bonus — the token has no expiration date)
- user_login (Optional[str]) – User login, optional when using InteractiveMixin
- user_password (Optional[str]) – User password, optional when using InteractiveMixin
- group_ids (List[int]) – List of community IDs to be authorized
- client_id (Optional[int]) – ID of the application to authorize with, defaults to “VK Admin” app ID
- scope (Optional[Union[str,int]]) – Access rights you need. Can be passed comma-separated list of scopes, or bitmask sum all of them (see official documentation). Defaults to None . Be careful, only manage, messages, photos, docs, wall and stories are available for communities
- **kwargs (any) – Additional parameters, which will be passed to each request. The most useful is v — API version and lang — language of responses (see documentation )
>>> import vk >>> api = vk.CommunityAPI( . user_login='. ', . user_password='. ', . group_ids=[123456, 654321], . scope='messages', . v='5.131' . ) >>> print(api.users.get(user_ids=1)) [] >>> print(api.users.get(group_id=654321, user_ids=1)) []
© Copyright 2015, Dmitry Voronin. Revision c3cfe06e .
Библиотека vk для работы с VK API на Python
Привет, Хабр! Данная статья предназначена для тех, кто хочет разобраться с основами VK API на Python, так как статей по этому поводу нет (на Хабре есть одна статья, но она уже не совсем актуальна, так как некоторые методы не работают), а на других ресурсах мне удалось найти только вопросы пользователей, но никаких гайдов и прочего.
Для работы с VK API в Python есть две популярные библиотеки: vk и vk_api. Какая из библиотек лучше я судить не возьмусь, но скажу одно: у vk документация слишком мала (поэтому разбирался практически методом тыка) и на английском языке, а у vk_api документация более развернута (поэтому писать о данной библиотеке смысла не вижу) и на русском. Для меня не главное на каком языке документация, но для некоторых пользователей это играет большое значение при выборе.
Как вы уже поняли, в данной статье рассматривается работа с библиотекой vk.
Устанавливается данная библиотека следующей стандартной командой:
После того, как модуль будет установлен, нам необходимо создать приложение на сайте соц.сети. Я думаю, что большинство пользователей умеет это делать, поэтому информацию по этому шагу пропускаю. Если кто не умеет, то гуглим, не стесняемся.
После регистрации приложения нам нужен будет только его ID.
Начнем с авторизации. В принципе, некоторую информацию можно получить и без ввода личных данных, что конечно же хорошо, например:
import vk session = vk.Session() vk_api = vk.API(session) vk_api.users.get(user_id=1)
Таким образом мы получим фамилию, имя и id пользователя с user_id = 1. Если вам нужно получить еще какую-то информацию о пользователе, то в вызове метода нужно указать дополнительные поля, информация о которых должна быть возвращена:
vk_api.users.get(user_id=1, fields=’online, last_seen’)
Т.е. в данном случае мы получим не только информацию об имени и фамилии пользователя с но и информацию о том, находится ли пользователь сейчас на сайте (fields=’online’) и время последнего посещения, а также тип устройства (fields=’ last_seen’).
Действия без авторизации не предоставляют нам возможность использования VK API на полную мощь, поэтому рассмотрим авторизацию с вводом личных данных. Есть два способа: ввод логина и пароля, ввод токена. Чтобы авторизоваться с помощью токена нужно немного дополнить первый пример, а именно вот эту строку:
session = vk.Session(access_token='tocken')
Дальше все остается так же, как и было раньше, без каких-либо изменений.
Следующий способ авторизации – ввод логина и пароля. В данном случае тоже все довольно просто и понятно:
session = vk.AuthSession('id_app', 'login', 'pass') vk_api = vk.API(session)
Как видите, ничего сложного и все настолько просто и понятно, что даже не нуждается в дополнительных комментариях.
При такой авторизации нужно указывать не только логин, пароль и ID приложения, но то, к чему мы хотим получить доступ.
Например, у нас сейчас не указан доступ к стене пользователя, поэтому при попытке добавить запись на стену мы получим ошибку:
vk_api.wall.post(message="hello") Ошибка: vk.exceptions.VkAPIError: 15.
Для того чтобы данный код сработал корректно, при авторизации нужно указать дополнительно аргумент с названием scope и перечислить через запятую те методы, доступ к которым мы хотим получить.
session = vk.AuthSession('id_app', 'login', 'pass', scope=’wall, messages’) vk_api = vk.API(session) vk_api.wall.post(message="hello")
В данном примере я запрашиваю доступ к стене и сообщениям. Выполнение программы завершается корректно, а на стене появляется запись с текстом ‘hello’. Названия методов, к которым возможно получить доступ можно посмотреть на этой странице документации.
Вот и все. Вызов методов происходит по одному шаблону:
vk_api.метод.название(параметры=значения) Например: vk_api.messages.send(users_id=0, messages=’hello’)
Таким образом мы отправляем сообщение hello пользователю с (т.е. самому себе). Названия параметров, которые нужно передавать при вызове какого-либо метода можно найти в документации, в описании самого метода.
Для более наглядной работы библиотеки я реализовал небольшую программку, которая следит когда пользователь зашел в ВК, а когда из него вышел (слабо верится, но может будет кому интересна). Код программы ниже и на GitHub.
import datetime from time import sleep import vk def get_status(current_status, vk_api, id): profiles = vk_api.users.get(user_id=id, fields='online, last_seen') if (not current_status) and (profiles[0]['online']): # если появился в сети, то выводим время now = datetime.datetime.now() print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') print('Появился в сети в: ', now.strftime("%d-%m-%Y %H:%M")) return True if (current_status) and (not profiles[0]['online']): # если был онлайн, но уже вышел, то выводим время выхода print('Вышел из сети: ', datetime.datetime.fromtimestamp(profiles[0]['last_seen']['time']).strftime('%d-%m-%Y %H:%M')) print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') return False return current_status if __name__ == '__main__': пользователя: ") session = vk.Session() vk_api = vk.API(session) current_status = False while(True): current_status = get_status(current_status, vk_api, id) sleep(60)
Данная статья предназначалась лишь для понимания основ работы с VK API на Python с использованием библиотеки VK.
vk_api
История выпусков Уведомления о выпусках | Лента RSS
Загрузка файлов
Загрузите файл для вашей платформы. Если вы не уверены, какой выбрать, узнайте больше об установке пакетов.
Source Distribution
Uploaded 25 июн. 2022 г. source
Built Distribution
Uploaded 25 июн. 2022 г. py3
Хеши для vk_api-11.9.9.tar.gz
Алгоритм | Хеш-дайджест | |
---|---|---|
SHA256 | c7741e40bc05980c91ed94c84542e1e7e7370e101b5eaa74222958d4130fe3c2 | Копировать |
MD5 | da25cd23b3315480aa6eb40e246b8411 | Копировать |
BLAKE2b-256 | fc6cb696dcc8f10136f0c1afc98e37a267e46b63301e7f48ab5fc13065f0755f | Копировать |
Хеши для vk_api-11.9.9-py3-none-any.whl
Алгоритм | Хеш-дайджест | |
---|---|---|
SHA256 | c71021506449afe5b9bbb1c4acb0d86b35a007ddc21678478e46fbbeabd1f3ef | Копировать |
MD5 | 453fc6600135f7e8a88d4e8ee7b7f236 | Копировать |
BLAKE2b-256 | 55ff2298f424d7a7ef994e295a31911d47f23a6afdb9e880f10b2dc7a9998a8a | Копировать |
Помощь
О PyPI
Внесение вклада в PyPI
Использование PyPI
Разработано и поддерживается сообществом Python’а для сообщества Python’а.
Пожертвуйте сегодня!
PyPI», «Python Package Index» и логотипы блоков являются зарегистрированными товарными знаками Python Software Foundation.