Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/severecloud/vk-streaming
VK Streaming API for python
https://github.com/severecloud/vk-streaming
streaming-api vk vk-api
Last synced: 3 months ago
JSON representation
VK Streaming API for python
- Host: GitHub
- URL: https://github.com/severecloud/vk-streaming
- Owner: SevereCloud
- License: mit
- Archived: true
- Created: 2017-07-05T23:07:21.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-03-10T20:37:21.000Z (almost 6 years ago)
- Last Synced: 2024-09-26T05:01:48.880Z (3 months ago)
- Topics: streaming-api, vk, vk-api
- Language: Python
- Homepage:
- Size: 13.7 KB
- Stars: 13
- Watchers: 6
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Vk streaming api
Streaming API — это инструмент для получения публичных данных из ВКонтакте по заданным ключевым словам.
>**Обратите внимание, Streaming API доступен в режиме бета-тестирования. Документация может изменяться и дополняться по мере развития инструмента.**
Работа со Streaming API выглядит так — Вы проходите авторизацию, добавляете нужные Вам правила и затем получаете данные, которые подходят под эти правила, в едином потоке.
С помощью Streaming API Вы можете получить не более 1% всех публичных данных, удовлетворяющих заданным правилам. Чтобы получить доступ к расширенной версии Streaming API, включающей 100% данных, пожалуйста, свяжитесь с vk по этому адресу e-mail: [[email protected]](mailto:[email protected]), указав в качестве темы «Streaming API». Обратите внимание, что документация соответствует базовой версии Streaming API, и некоторые возможности расширенной версии здесь не описаны.
### UPD
> Streaming API — больше, лучше, удобнее. Обо всём по порядку:
>1. Теперь учитывается не только текст записи/комментария, но и названия вложений — найдётся всё, что Вам нужно.
>2. Вы можете получать 100% выборки данных по фильтрам вплоть до ~1800000 событий в месяц. Для подключения этой возможности напишите в Поддержку: vk.com/support?act=new_api, указав API_ID Вашего приложения.
>3. Появилась возможность добавлять минус-слова — запросы, которые должны быть исключены из выборки.
>4. Количество ключевых слов и правил увеличено до 100 и 300 соответственно.
>5. Добавлен метод https://vk.com/dev/streaming.getStats для получения статистики по доставке событий.
>6. В объектах событий добавлены вложения.![Python 2, 3](https://img.shields.io/pypi/pyversions/vkstreaming.svg?style=flat-square) ![v0.4](https://img.shields.io/pypi/v/vkstreaming.svg?style=flat-square)
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FSevereCloud%2Fvk-streaming.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2FSevereCloud%2Fvk-streaming?ref=badge_shield)## Установка
```bash
pip install vkstreaming
```Обновить
```bash
pip install --upgrade vkstreaming
```## Пример
```python
from vkstreaming import Streamingapi = Streaming("streaming.vk.com", "")
api.del_all_rules()
api.add_rules("Котики", "кот")rules = api.get_rules()
for rule in rules:
print(("{tag:15}:{value}").format(**rule))@api.stream
def my_func(event):
print("[{}]: {}".format(event['author']['id'], event['text']))api.start()
```## Ссылки
* [Документация на vk.com/dev](https://vk.com/dev/streaming_api_docs)
* [Получить ключ](https://vk.com/dev/streaming.getServerUrl)
* [Примеры использования](./examples)# Документация
## Авторизация
Чтобы получить учётные данные, необходимые для начала работы, используйте страницу API [streaming.getServerUrl](https://vk.com/dev/streaming.getServerUrl). В качестве результата метод возвращает URL для дальнейших запросов в поле `endpoint` и ключ доступа в поле `key` (string).
```python
response = getServerUrl(access_token)api = Streaming(response["endpoint"], response["key"])
```## Прокси
```python
response = getServerUrl(access_token, proxy_host, proxy_port)
api = Streaming(response["endpoint"], response["key"], proxy_host, proxy_port)
```## Формат правил
Правило — это набор ключевых слов, наличие которых в тексте объекта означает, что объект попадёт в поток.
* Если слова указаны без двойных кавычек, поиск ведётся с упрощением (все словоформы, без учёта регистра).
* Для поиска по точному вхождению (с учётом регистра, словоформы и т.п.) каждое слово должно быть указано в двойных кавычках.
* Минус (-) перед ключевым словом исключит из выборки тексты, содержащие это слово. Правило не может состоять только из ключевых слов с минусом.>Например, правилу кот будут соответствовать объекты с текстом "кот", "кОт", "Котик".
Правилу "кот" из вышеперечисленных будет соответствовать только объект с текстом "кот".
Правилу -"кот" будут соответствовать объекты, которые не содержат точную словоформу «кот».
Правилу -собака будут соответствовать объекты, которые не содержат слово «собака» в любой форме.У каждого правила есть значение (**value**) — собственно содержание правила, и метка (**tag**). Вместе с каждым объектом Вы будете получать список его меток, чтобы понимать, какому правилу этот объект соответствует.
### Ограничения
* максимальное количество правил — 300;
* максимальное количество ключевых слов в правиле — 100;
* максимальный размер правила в байтах — 4096;
* максимальный размер метки правила (tag) в байтах — 256;## Методы для работы с правилами
### `get_rules()`
Возвращает правила в виде списка
```python
>>> api.get_rules()
[{"tag":"1","value":"коты"}, {"tag":"2","value":"и"}]
```### `add_rules(tag, value)`
Добавляет правило `value` с меткой `tag`
```python
api.add_rules("Навальный", "навальн")
```### `del_rules(tag)`
Удаляет правило с меткой `tag`
### `del_all_rules()`
Удаляет все правила
### `update_rules(list)`
Удаляет все правила и добавляет правила из списка `list`
```python
list = [{"tag":"1","value":"коты"}, {"tag":"2","value":"и"}]
api.update_rules(list)
```## Стриминг
### `@api.stream`
Декоратор. Во время стриминга вызывает метод с событием.
Пример:
```python
@api.stream
def func(event):
pass
```### `start()`
Запустить стриминг
### `stop()`
Остановить стриминг. Запускать в декорируемой функции
## Обработка исключений
```python
try:
...
except VkError as e:
print(e.error_code) #Код ошибки
print(e.message) #Сообщение
```[Список ошибок](https://vk.com/dev/streaming_api_docs_2?f=8.%20Сообщения%20об%20ошибках)
| error_code | message | Описание |
|------------|----------------------------------------|-------------------------------------------------------------------------|
| 1000 | Upgrade to websocket expected | Неверно переданы параметры для обновления соединения до WebSocket |
| 1001 | Wrong http method | Неподдерживаемый HTTP-метод |
| 1002 | Wrong content type | Ключ “Content-type” либо отсутствует, либо не равен ожидаемому значению |
| 1003 | Missing key | Отсутствует параметр "key" |
| 1004 | Bad key | Неправильное значение параметра "key" |
| 1005 | Bad stream id | Недопустимое значение параметра "stream_id" (для расширенной версии) |
| 1006 | Connection already established | Такое соединение уже установлено |
| 2000 | Can't parse json | Не удалось распарсить JSON в теле запроса |
| 2001 | Tag already exist | Правило с таким tag уже присутствует в этом потоке |
| 2002 | Tag not exist | Правило с таким tag отсутствует в этом потоке |
| 2003 | Can't parse rule | Не удалось распарсить содержимое rule |
| 2004 | Too many filters | Слишком много фильтров в одном правиле |
| 2005 | Unbalanced quotes | Непарные кавычки |
| 2006 | Too many rules | Слишком много правил в этом потоке |
| 2008 | At least one positive filter should be | Должно быть хотя бы одно ключевое слово без минуса |## License
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FSevereCloud%2Fvk-streaming.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2FSevereCloud%2Fvk-streaming?ref=badge_large)