{"id":15133673,"url":"https://github.com/severecloud/vk-streaming","last_synced_at":"2025-09-29T02:32:59.188Z","repository":{"id":57477517,"uuid":"96368122","full_name":"SevereCloud/vk-streaming","owner":"SevereCloud","description":"VK Streaming API for python","archived":true,"fork":false,"pushed_at":"2019-03-10T20:37:21.000Z","size":14,"stargazers_count":13,"open_issues_count":0,"forks_count":6,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-01-16T22:15:36.874Z","etag":null,"topics":["streaming-api","vk","vk-api"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SevereCloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-07-05T23:07:21.000Z","updated_at":"2023-06-13T23:55:31.000Z","dependencies_parsed_at":"2022-08-30T17:11:42.750Z","dependency_job_id":null,"html_url":"https://github.com/SevereCloud/vk-streaming","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SevereCloud%2Fvk-streaming","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SevereCloud%2Fvk-streaming/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SevereCloud%2Fvk-streaming/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SevereCloud%2Fvk-streaming/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SevereCloud","download_url":"https://codeload.github.com/SevereCloud/vk-streaming/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234583683,"owners_count":18856280,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["streaming-api","vk","vk-api"],"created_at":"2024-09-26T05:01:28.987Z","updated_at":"2025-09-29T02:32:58.860Z","avatar_url":"https://github.com/SevereCloud.png","language":"Python","readme":"# Vk streaming api \n\nStreaming API — это инструмент для получения публичных данных из ВКонтакте по заданным ключевым словам. \n\n\u003e**Обратите внимание, Streaming API доступен в режиме бета-тестирования. Документация может изменяться и дополняться по мере развития инструмента.**\n\nРабота со Streaming API выглядит так — Вы проходите авторизацию, добавляете нужные Вам правила и затем получаете данные, которые подходят под эти правила, в едином потоке.\n\nС помощью Streaming API Вы можете получить не более 1% всех публичных данных, удовлетворяющих заданным правилам. Чтобы получить доступ к расширенной версии Streaming API, включающей 100% данных, пожалуйста, свяжитесь с vk по этому адресу e-mail: [api@vk.com](mailto:api@vk.com), указав в качестве темы «Streaming API». Обратите внимание, что документация соответствует базовой версии Streaming API, и некоторые возможности расширенной версии здесь не описаны.\n\n### UPD\n\n\u003e Streaming API — больше, лучше, удобнее. Обо всём по порядку: \n\u003e1. Теперь учитывается не только текст записи/комментария, но и названия вложений — найдётся всё, что Вам нужно. \n\u003e2. Вы можете получать 100% выборки данных по фильтрам вплоть до ~1800000 событий в месяц. Для подключения этой возможности напишите в Поддержку: vk.com/support?act=new_api, указав API_ID Вашего приложения. \n\u003e3. Появилась возможность добавлять минус-слова — запросы, которые должны быть исключены из выборки. \n\u003e4. Количество ключевых слов и правил увеличено до 100 и 300 соответственно. \n\u003e5. Добавлен метод https://vk.com/dev/streaming.getStats для получения статистики по доставке событий. \n\u003e6. В объектах событий добавлены вложения. \n\n![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)\n[![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)\n\n## Установка\n\n```bash\npip install vkstreaming\n```\n\nОбновить\n\n```bash\npip install --upgrade vkstreaming\n```\n\n## Пример\n\n```python\nfrom vkstreaming import Streaming\n\napi = Streaming(\"streaming.vk.com\", \"\u003ckey\u003e\")\n\napi.del_all_rules()\napi.add_rules(\"Котики\", \"кот\")\n\nrules = api.get_rules()\nfor rule in rules:\n    print((\"{tag:15}:{value}\").format(**rule))\n\n@api.stream\ndef my_func(event):\n    print(\"[{}]: {}\".format(event['author']['id'], event['text']))\n\napi.start()\n```\n\n## Ссылки\n\n* [Документация на vk.com/dev](https://vk.com/dev/streaming_api_docs)\n* [Получить ключ](https://vk.com/dev/streaming.getServerUrl)\n* [Примеры использования](./examples)\n\n# Документация\n\n## Авторизация\n\nЧтобы получить учётные данные, необходимые для начала работы, используйте страницу API [streaming.getServerUrl](https://vk.com/dev/streaming.getServerUrl). В качестве результата метод возвращает URL для дальнейших запросов в поле `endpoint` и ключ доступа в поле `key` (string). \n\n```python\nresponse = getServerUrl(access_token)\n\napi = Streaming(response[\"endpoint\"], response[\"key\"])\n```\n\n## Прокси\n\n```python\nresponse = getServerUrl(access_token, proxy_host, proxy_port)\napi = Streaming(response[\"endpoint\"], response[\"key\"], proxy_host, proxy_port)\n```\n\n## Формат правил\n\nПравило — это набор ключевых слов, наличие которых в тексте объекта означает, что объект попадёт в поток.\n* Если слова указаны без двойных кавычек, поиск ведётся с упрощением (все словоформы, без учёта регистра).\n* Для поиска по точному вхождению (с учётом регистра, словоформы и т.п.) каждое слово должно быть указано в двойных кавычках.\n* Минус (-) перед ключевым словом исключит из выборки тексты, содержащие это слово. Правило не может состоять только из ключевых слов с минусом.\n\n\u003eНапример, правилу кот будут соответствовать объекты с текстом \"кот\", \"кОт\", \"Котик\".  \nПравилу \"кот\" из вышеперечисленных будет соответствовать только объект с текстом \"кот\".  \nПравилу -\"кот\" будут соответствовать объекты, которые не содержат точную словоформу «кот».  \nПравилу -собака будут соответствовать объекты, которые не содержат слово «собака» в любой форме.\n\nУ каждого правила есть значение (**value**) — собственно содержание правила, и метка (**tag**). Вместе с каждым объектом Вы будете получать список его меток, чтобы понимать, какому правилу этот объект соответствует. \n\n### Ограничения\n* максимальное количество правил — 300;\n* максимальное количество ключевых слов в правиле — 100;\n* максимальный размер правила в байтах — 4096;\n* максимальный размер метки правила (tag) в байтах — 256;\n\n\n## Методы для работы с правилами\n\n### `get_rules()`\n\nВозвращает правила в виде списка\n\n```python\n\u003e\u003e\u003e api.get_rules()\n[{\"tag\":\"1\",\"value\":\"коты\"}, {\"tag\":\"2\",\"value\":\"и\"}]\n```\n\n### `add_rules(tag, value)`\n\nДобавляет правило `value` с меткой `tag`\n\n```python\napi.add_rules(\"Навальный\", \"навальн\")\n```\n\n### `del_rules(tag)`\n\nУдаляет правило с меткой `tag`\n\n### `del_all_rules()`\n\nУдаляет все правила\n\n### `update_rules(list)`\n\nУдаляет все правила и добавляет правила из списка `list`\n\n```python\nlist = [{\"tag\":\"1\",\"value\":\"коты\"}, {\"tag\":\"2\",\"value\":\"и\"}]\napi.update_rules(list)\n```\n\n## Стриминг\n\n### `@api.stream`\n\nДекоратор. Во время стриминга вызывает метод с событием.\n\nПример:\n```python\n@api.stream\ndef func(event):\n    pass\n```\n\n### `start()`\n\nЗапустить стриминг\n\n### `stop()`\n\nОстановить стриминг. Запускать в декорируемой функции\n\n## Обработка исключений\n\n```python\ntry:\n    ...\nexcept VkError as e:\n    print(e.error_code) #Код ошибки\n    print(e.message) #Сообщение\n```\n\n[Список ошибок](https://vk.com/dev/streaming_api_docs_2?f=8.%20Сообщения%20об%20ошибках)\n\n| error_code | message                                | Описание                                                                |\n|------------|----------------------------------------|-------------------------------------------------------------------------|\n| 1000       | Upgrade to websocket expected          | Неверно переданы параметры для обновления соединения до WebSocket       |\n| 1001       | Wrong http method                      | Неподдерживаемый HTTP-метод                                             |\n| 1002       | Wrong content type                     | Ключ “Content-type” либо отсутствует, либо не равен ожидаемому значению |\n| 1003       | Missing key                            | Отсутствует параметр \"key\"                                              |\n| 1004       | Bad key                                | Неправильное значение параметра \"key\"                                   |\n| 1005       | Bad stream id                          | Недопустимое значение параметра \"stream_id\" (для расширенной версии)    |\n| 1006       | Connection already established         | Такое соединение уже установлено                                        |\n| 2000       | Can't parse json                       | Не удалось распарсить JSON в теле запроса                               |\n| 2001       | Tag already exist                      | Правило с таким tag уже присутствует в этом потоке                      |\n| 2002       | Tag not exist                          | Правило с таким tag отсутствует в этом потоке                           |\n| 2003       | Can't parse rule                       | Не удалось распарсить содержимое rule                                   |\n| 2004       | Too many filters                       | Слишком много фильтров в одном правиле                                  |\n| 2005       | Unbalanced quotes                      | Непарные кавычки                                                        |\n| 2006       | Too many rules                         | Слишком много правил в этом потоке                                      |\n| 2008\t     | At least one positive filter should be | Должно быть хотя бы одно ключевое слово без минуса                      |\n\n\n## License\n[![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)","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseverecloud%2Fvk-streaming","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseverecloud%2Fvk-streaming","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseverecloud%2Fvk-streaming/lists"}