Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/bryzgaloff/vk

Python VK API light wrapper
https://github.com/bryzgaloff/vk

python python2 python3 vk vk-api vkapi vkontakte vkontakte-api

Last synced: about 1 month ago
JSON representation

Python VK API light wrapper

Awesome Lists containing this project

README

        

Простая обертка для [API ВКонтакте](https://vk.com/dev/manuals) (далее — Обертка) для Python 2&3, основано на [dimka665/vk](https://github.com/dimka665/vk).

# Требования
* [requests](https://pypi.org/project/requests/)

# Пример использования
```bash
$ git clone https://github.com/bryzgaloff/vk.git

$ pip install requests

$ python
```
```python
>>> from vk import API

# если у вас есть access token:
>>> access_token = ''
>>> api = API(access_token)

# если у вас нет access token'а, но есть APP ID
>>> api = API(
... email='[email protected]',
... password='your_password',
... app_id='your_app_id',
... )

# если нет ни того, ни другого, смотрите раздел FAQ

>>> api.users.get(user_ids=1)
[{'id': 1, 'first_name': 'Павел', 'last_name': 'Дуров'}]
```

# FAQ
## Можно ли использовать API без токена?
Нет, нельзя, [начиная с апреля 2017 года](https://vk.com/dev/service_token?f=2.%20%D0%A7%D1%82%D0%BE%20%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%81%D1%8F).

## Как получить токен или APP ID?
1. [Авторизуйтесь](https://vk.com/login) ВКонтакте.
2. [Создайте новое приложение](https://vk.com/editapp?act=create).
1. Введите желаемое название.
2. Выберите опцию «Standalone-приложение»
3. Нажмите «Подключить приложение».
4. Введите код, полученный в СМС-сообщении.
3. В новом созданном приложении откройте пункт «Настройки» в меню слева.

APP ID — семизначное число, записанное в поле «ID приложения».

В качестве токена вы можете использовать сервисный ключ доступа, однако в таком случае доступ у API будет такой же, как у неавторизованного пользователя. Чтобы доступ у API соответствовал доступу авторизованного пользователя, необходимо получить соответствующий токен — и Обертка получит его самостоятельно, если вы укажите в качестве аргументов конструктора `API` e-mail (`email`), пароль (`password`) и APP ID (`app_id`).

Можно одновременно указать `access_token` и аргументы для авторизации — в таком случае `access_token` будет перезапрошен Оберткой при первом неуспешном вызове метода API. Максимальное число перезапросов токенов регулируется аргументом `max_token_requests`.

## Существуют ли у Обертки какие-то ограничения?
1. В приложении можно использовать инстанс API только для одного APP ID / access token'а (т.к. класс `API` является [Singleton](https://tproger.ru/translations/design-patterns-simple-words-1/#16)'ом).
2. Существуют также [частотные и количественные ограничения](https://vk.com/dev/api_requests?f=3.%20%D0%9E%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B8%20%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D0%B0%D1%86%D0%B8%D0%B8) самого API ВКонтакте. Частотные ограничения Обертка контролирует сама — ограничение на максимальное число запросов в секунду контролируется аргументом `max_token_requests` конструктора `API`.
3. Не поддерживаются аккаунты с 2-факторной авторизацией (см. [«Подтверждение входа»](https://vk.com/settings?act=security)).

## Какая версия API используется?
По умолчанию — 5.68. Вы можете указать версию самостоятельно через аргумент `v` конструктора `API`.

# Документация

Параметры конструктора `API`:

| Имя | Назначение | Значение по умолчанию |
| --- | --- | --- |
| access_token | access token | `None` |
| email | E-mail пользователя для авторизации | `None` |
| password | Пароль пользователя для авторизации | `None` |
| app_id | APP ID | `None` |
| scope | Битовая маска [настроек доступа приложения](https://vk.com/dev/permissions) | `'offline'` |
| timeout | Таймаут для запросов в секудах | `30` |
| max_requests_per_seconds | Максимально допустимое число запросов в секунду | `3` |
| max_token_requests | Максимальное число попыток для перезапроса токена | `2` |
| **method_default_args | kwargs для запросов к API по умолчанию | |

Дальнейшее взаимодействие с `API` сводится к формированию запросов к API согласно [документации](https://vk.com/dev/methods).