Мне потребовалось найти VK-группы в заданном городе по нескольким ключевым словам, чтобы запустить на них рекламу. Эти группы нужно было где-то сохранить, чтобы не искать каждый раз по новой.
По каждой группе мне важна следующая информация:
- id — чтобы использовать в рекламе;
- name — чтобы оценить подходит группа или нет (Например, для ключевого слова «ремонт» может быть ремонт квартир или ремонт машин);
- members_count — чтобы оценить размер группы;
- contacts — чтобы получить список id пользователей, на которых не следует давать рекламу;
- группы должны быть отсортированы по отношению дневной посещаемости к количеству пользователей — чтобы не использовать группы, которые никто не посещает.
Сначала, я начал искать группы используя стандартный поиск. Но это оказалось очень не быстро. На пятой группе я призадумался о более быстром способе.
VK API #1 Receiving access token (standalone app)
Установка Python 3.7.3 на Windows.
Установка не занимает много времени и умений. Переходим на официальный сайт
Установка PyCharm и его настройка.
Переходим на сайт
Создание проекта и установка библиотеки VK_API
В Pycharm выбираем: File -> New Project и создаем новый проект, выбрав необходимые настройки:
Теперь создаем новый файл, назовем его
, так как Python использует расширение
(английскими буквами, не путайте) расширение указывать не обязательно.
Пишем наш первый самый простой код:
print(«Привет :)»)
И нажав правой кнопкой мыши по файлу, выбираем: Run ‘new’
Все работает. Теперь нам нужно установить библиотеку vk_api, для этого открываем терминал прямо в PyCharm и пишем команду:
pip install vk_api
Installing collected packages: urllib3, chardet, idna, certifi, requests, enum34, six, vk-apiRunning setup.py install for vk-api … doneSuccessfully installed certifi-2022.6.16 chardet-3.0.4 enum34-1.1.6 idna-2.8 requests-2.22.0 six-1.12.0 urllib3-1.25.3 vk-api-11.4.0
Если в конце видите такой текст, библиотека успешно установлена, можно импортировать ее в проект и писать первый код:
Запуск скрипта используя LongPoll VK.
Для начала настроим наше сообщество.
Копируем ключ и вставляем его в наш скрипт:
‘ указываем ключ сообщества
‘ указываем ID нашего сообщества
Теперь переходим во вкладку Long Poll APIи включаем его
Далее, обязательно включаем тип событий, это частая ошибка при создании ботов, забыв включить события, бот не будет работать! Выбираем все что есть.
Давайте покинем сообщество и снова вступим в него:
В консоли мы сразу увидели последние события. Немного добавим строк в наш код, и научим отвечать наше сообщество сообщением в ЛС на одно из событий:
Импортируем:
from vk_api.utils import get_random_id
Разница между CallBack API и LongPoll
И все же в чем разница между CallBack API и Long Poll API? А разница есть и она большая.
Когда Вы используете CallBack API, ВК сам отправляет Вам происходящее событие на сервер, нам остается только получить его и обработать, у Long Poll API все наоборот, ВК ничего не отправляет, а хранит все события у себя на серверах, Вам нужно самому их получать и обрабатывать, Long Poll API подходит для высоко нагруженных проектов, в идеале советуем использовать оба типа получения событий.
Похожее: Мегафон Саратов и Саратовская область — тарифы, лк, горячая линия
Разработка ботов на заказ, любой сложности, обращаться:
Android (java)
Еще одна официальная библиотека, на этот раз — для Android. Написана на Java и позволяет сильно упростить работу с API ВКонтакте из этого языка.
Пример отправки запроса:
Golang
Как ни странно, была написана обёртка для VK API и на языке Go. Так же, как и остальные, она доступна на Github. Hello World на ней выглядит так:
Ios (objective c)
Официальная библиотека от ВКонтакте, предназначенная для написания приложений под iOS. Написана на Objective-C.
Пример кода с отправкой запроса:
Node.js
Node-vkapi — современная библиотека для JavaScript, основанная на промисах. Она доступна так же в npm:
npm install node-vkapi —only=prod —save
Вот пример кода, который публикует текст на стену пользователя с помощью node-vkapi:
Python и longpoll vk, или как запустить скрипт вк и настроить python, для новичков
Это новый вид статьи, в котором мы не будем говорить про PHP, многим python превосходит php, а для начинающих он покажется проще. Данная статья будет содержать в себе следующие шаги:
1. Установка Python 3.7.3 на Windows.2. Установка PyCharm и его настройка.3. Создание проекта и установка библиотеки VK_API4. Запуск скрипта используя LongPoll VK.5. Разница между CallBack API и LongPoll
Windows phone (c#)
Последняя в этом списке официальная разработка: написанная на C# базовая библиотека для разработки на WP, похожая по функциональности на свои аналоги под Android и iOS.
Отправка запроса на список друзей:
Авторизация
vk_session = vk_api.VkApi(token=’#ВСТАВЬ СЮДА ТОКЕН ГРУППЫ СО ВСЕМИ РАЗРЕШЕНИЯМИ’)
Авторизовались как группа. Важно создать такой токен, который будет разрешать отправку, прием, обработку сообщений и, в принципе, все что нам захочется.
Внимание
необходимо заполнить. Эти переменные нужны для установки связи с сервером VK. Чтобы узнать эти переменные, а они у всех свои, нужно
перейти на сайт
и во вкладке «Пример запроса» ввести ID своей группы.
Похожее: настройка ntlm kerio control
random_id — это случайный id сообщения, который в новых версиях VK_API теперь обязателен.
chat_id — это идентификатор беседы, из которой пришел event или иначе говоря сообщение.
if ‘Клавиатура’ in str(event):
Графический или web интерфейс
Если будет такой запрос, то можно добавить графический или веб интерфейс и обработку ошибок. Для своих внутренних нужд, я вряд ли буду это делать. Но, если будет такой запрос, то почему бы и нет.
Пишите в комментариях, какое ещё развитие программы вы хотели бы видеть.
Как использовать vk api в python
Реализация описанного выше алгоритма на Python-е оказалась проще, чем я ожидал. От начала программирования до рабочей версии программы прошло около 40 минут. Получается, если бы я сразу начал программировать, то всё получилось бы быстрее часа на два.
Для реализации взял первую попавшуюся библиотеку для работы с VK в Python-е. Установил её следующей командой:
Как использовать vk api через браузер
Для работы с VK API через браузер, прежде всего, необходимо получить так называемый access_token.
Делается это очень просто. Нужно просто указанный ниже код вставить в адресную строку браузера.
Как оно работает?
Всё очень просто, в vk api есть такая штука, называется
работает она так:
Long Polling — это технология, которая позволяет получать данные о новых событиях с помощью «длинных запросов». Сервер получает запрос, но отправляет ответ на него не сразу, а лишь тогда, когда произойдёт какое-либо событие (например, придёт новое сообщение), либо истечёт заданное время ожидания.
Говоря русским языком, мы отправляем на сервер запрос, а он в свою очередь тыкает вконтакте если там произойдёт что либо, например, нам придёт сообщение он бежит и говорит об этом нам. От этого и будем плясать.
Классическое консольное приложение
Задавать параметры в коде программы вполне приемлемый способ для программиста. Однако, для простого пользователя — это слишком. Не мудрено ненароком испортить программу. Поэтому лучше реализовать передачу параметров через командную строку, как в классическом консольном приложении.
Кнопки
Теперь объявим пару функций для кнопок, которые наш бот в будущем будет выдавать по требованию. К ним мы обратимся вскоре ещё раз.
keyboard = VkKeyboard(one_time=True) keyboard.add_button(‘Привет’, color=VkKeyboardColor.NEGATIVE) keyboard.add_button(‘Клавиатура’, color=VkKeyboardColor.POSITIVE) keyboard.add_line() keyboard.add_location_button() keyboard.add_line() keyboard.add_vkpay_button(hash=»action=transfer-to-group)
Контакты в отдельный файл
Контакты групп часто нужны, чтобы не показывать на них рекламу. Для этого нужно собрать id всех пользователей из контактов в отдельный файл.
В текущей реализации это придётся делать вручную. Между тем добавить такой функционал совсем несложно и займёт минут 15.
Похожее: Порядок учета основных средств: законодательство
Метод database.getcities
Этот метод я использовал, чтобы получить код (id) города, в котором искать нужные мне группы. Привожу для примера свой запрос. Вам нужно будет поменять ключ доступа access_token и город q на свой.
Метод groups.getbyid
Этот метод я использовал, чтобы получить список групп города соответствующих запросу со всеми необходимыми по условию данными. Пример запроса ниже.
Метод groups.search
Этот метод я использовал, чтобы получить id групп соответствующих запросу по ключевому слову. В нижеприведённом примере нужно будет заменить аргументы access_token, city_id и q на соответствующие ваши.
Нюансы
Дело в том, что в одной программе нельзя одновременно запустить бота для ответов на ЛС и для работы в беседе, поскольку для этого используются два разных модуля longpool и как только запускается прослушивание longpool-ом на канале «ЛС»(Личные Сообщения) прослушивание другого канала, т.е. чата недоступно, пока не завершится первый процесс прослушивания. Проще говоря задачи могут выполняться исключительно последовательно, а не параллельно. Поэтому в целом коде я деактивирую часть с ЛС, заключив ее в ”’ кавычки.
Теперь импортируем то же самое, но для ЛС.
Lslongpoll = VkLongPoll(vk_session) Lsvk = vk_session.get_api()
Прием-отправка сообщений из беседы
А теперь будем слушать longpool на предмет новых сообщений.
— переменная в которой будет храниться само сообщение и некоторые данные о нем.
Пути развития программы
Программа полностью выполняет свою задачу. Но это не значить, что её нельзя сделать лучше. Я здесь вижу несколько направлений развития.
Расширение функционала
По мере необходимости можно расширять функционал программы. Например, добавить возможность извлекать пользователей — членов групп и делать их пересечение. Строить списки пользователей, которые состоят в 2-х группах и тому подобное. Пока такой необходимости не было, но если понадобится, то дописать код будет гораздо быстрее, чем делать всё вручную.
С чего начать?
. Естественно открываем cmd.exe ( в некоторых случаях может понадобиться запустить от имени администратора) и прописываем туда следующее:
pip install vkpip install vk_api
PHP Исходник [PHP] Send VK / Telegram notifications
rraggerr
проверенный какой-то
Автор темы
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
function sendVkNotify($message, $vk_id) < if (!empty($message) !empty($vk_id)) < $p_text = str_replace(‘n’, ‘
‘, $message); // замена новых строчек $rand = rand(-2147483648,2147483647); $token = «токен еб@#%ь»; $request_params_VK = array( ‘message’ => $p_text, ‘user_id’ => $vk_id, // если беседа -> chat_id , айди бесед начинаются с 1 ‘random_id’ => rand(-22147483648, 2147483647), ‘access_token’ => $token, ‘v’ => ‘5.95’ ); $get_params_VK = http_build_query($request_params_VK); file_get_contents(«https://api.vk.com/method/messages.send?».$get_params_VK); > > function sendTgNotify($message, $tg_name) < if (!empty($message) !empty($tg_name)) < $tgapi = «токен бота еб@#%ь»; $json = json_decode(file_get_contents($tgapi.»/getUpdates»), true); for ($i = 0; $i $chat_id, ‘text’ => $message ); $get_params_TG = http_build_query($request_params_TG); $output = file_get_contents($tgapi.»/sendMessage?».$get_params_TG); break; > > > >
В Вк — месседж и айди в вк, все понятно думаю
В телеге — пишите логин юзера в второй аргумент( без е🤬ли с chat_id ), юзеру всего лишь нужно активировать бота и передать вам его логин в телеге(или вам посмотреть его через апи или еще как то)
Источник: www.blast.hk
Modulenotfounderror no module named vk api
Вы авторизуетесь по ключу сообщества, поэтому должны использовать модуль vk_api.bot_longpoll .
- Вы не передаёте параметр group_id при подключении к longPoll серверу.
- Вы пытаетесь вызвать несуществующий метод API — messeg.send .
Скорее всего, Вы опечатались и имели в виду messages.send .
Пример:
Не забудьте заменить [token] и [group_id] на свои значения! Данный код отвечает на сообщение привет в любом регистре аналогичным Привет! .
Хотелось бы отметить то, что я использую peer_id для отправки сообщений. Это универсальный идентификатор, который позволяет отвечать как в беседах, так и в ЛС.
Костыль random_id() я заменил аналогичной функцией vk_api.utils.get_random_id .
Также данный код, в отличие от Вашего, следует стандартам PEP-8 .
Пытаюсь написать бота для ВКонтакте на Python 3. ОС — Windows 7. Скачал библиотеку vk_api, установил при помощи pip install. Однако при любой попытке вызвать код из командной строки вылезает вот это:
Долго искал ответ, нашел даже аналогичные вопросы на данном сайте, но советы оттуда не помогли. Добавил в path и папку с Python, и папку Scripts, где находятся pip и соответственно файл с кодом. Сама папка с Python находится в корне диска C:. Библиотека явно установлена, потому что при вызове pip list или pip3 list ее выдает вместе со всеми остальными:
Так почему Python ее все равно не видит? Может, это связано с названием? Мол, библиотека называется «vk-api», а я импортирую в коде «vk_api» (подчеркивание вместо дефиса). Но если писать дефис, будет выдавать синтаксическую ошибку. Или, может, что-то связанное с версиями Python? Но я вроде бы читал, что vk_api должна работать и для Python 3. Так что я без понятия, что не так.
Что с этим можно сделать?
Вот основной код:
закачал на хостинг pythonanywhere
При запуске программы выдает ModuleNotFoundError: No module named ‘schedule’
В отдельном Bash консоле вводил команды и скачал
В чем может быть проблема? У меня на компе все хорошо работает. Вводил в компе те же команды что и выше.
Ответы (1)
не совпадала версия pip и python. Нужно было написать pip3 install —user schedule .
Источник: planshet-info.ru