Как сгенерировать несколько токенов vk api python
Перейти к содержимому

Как сгенерировать несколько токенов vk api python

  • автор:

VK API — Несколько токенов в execute методе

Как вы можете знать, существует замечательный метод в VK API под названием — execute.
Данный метод принимает алгоритмы в формате VKScript, документации по которому, к сожалению я так и не нашел. Частичное решение различных нюансов можно найти — здесь.

Задача: Выполнить одним запросом, несколько вложенных запросов на стороне сервера, что бы сократить время и общее количество запросов передаваемых серверам ВКонтакте.

Вопрос: Как сделать несколько обращений к какому либо методу используя несколько разных индивидуальных access_token. Дело в том, что если передавать данный access_token в GET параметрах вместе с code значением (наш передаваемый алгоритм), то все запросы к методам, внутри нашего алгоритма, будут исходить именно от этого access_token’a.

  • Вопрос задан более трёх лет назад
  • 4333 просмотра

VK API. Python. Как создать индивидуальную переменную для каждого пользователя с помощью словаря?

Я познакомился с основами Python. Решив применить знания на практике, я начал постепенно создавать простого бота для ВК с использованием VK API. Попрошу без нравоучений в роде «тебе не стоит пока сюда лезть, занимайся основами» или «сначала изучи все о API, потом что-то делай». К сути дела: Я хочу сделать одну единственную переменную для каждого пользователя — количество поинтов. На просторах интернета предлагают использовать базы данных, но не хочу с ними связываться из-за одной переменной. Я читал, что это возможно сделать с помощью словаря (ключ, значение). Хотелось бы, чтобы словарь был вида . Звучит достаточно просто. Как такового примера я не нашел ни тут, ни в YouTube. Прочитал на этом форуме предложение использовать dict.get, я попытался, но этот метод напрочь отказывается записывать ID пользователя в качестве ключа. Когда я попробовал в консоли узнать тип: print(type(points)), выдало ошибку «NameError: name ‘points’ is not defined». Если таким образом попытаться узнать тип любой переменной, например x, выдаст такую же ошибку. Несколько часов я лазил в интернете на различных форумах, и не нашел ответа. При запуске кода, я пишу боту команду «/point» и консоль выводит ошибку «KeyError: (мой ID в вк)». То есть строка points.get(from_id, 0) не записывает ID пользователя в словарь и следующая строка его, соответственно, не находит. Господа айтишники, как всё-таки достичь цели? Подчеркну ещё раз, я не вижу смысла заморачиваться с MySQL и прочими базами ради одной переменной. Создаю я этого бота больше для практики, поковыряться, ради интереса. Попрошу не критиковать.

import vk_api from vk_api.utils import get_random_id from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType import random session = vk_api.VkApi(token = 'не дам') vk = session.get_api() VkBotLongPoll = VkBotLongPoll(session, group_id=не дам) def write_message(sender, message): session.method('messages.send', ) def get_name(from_id): sender_info = vk.users.get(user_ids = from_id)[0] full_name = sender_info.get('first_name') + ' ' + sender_info['last_name'] return full_name points = <> for event in VkBotLongPoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW and event.from_chat and event.message.get('text') !='': msg = event.message.get('text').lower() sender = event.chat_id from_id = event.message.get('from_id') name = get_name(from_id) if msg == '/point': x = random.randint(1, 10) points.get(from_id, 0) points[from_id] += x write_message(sender, name + ', ' + f'you have earned points') 

Отслеживать
задан 13 дек 2022 в 19:07
3 1 1 бронзовый знак

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Когда я попробовал в консоли узнать тип: print(type(points)), выдало ошибку «NameError: name ‘points’ is not defined».

Подозреваю, что функция type() вызывалась в Python Console в IDE, соответственно, в консоли переменные были не инициализированы , это и приводило к исключению. Если вызвать print(type(points)) в теле кода, либо же в режиме дебаггера — она должна вернуть , т.к в коде переменная points инициализирована как пустой словарь.

строка points.get(from_id, 0) не записывает ID пользователя в словарь и следующая строка его, соответственно, не находит.

Метод словаря get() не перезаписывает значение в существующем словаре, а лишь только возвращает значение по переданному ключу в качестве аргумента.

Таким образом строка points[from_id] += x вызовет эксепшн KeyError (если бы она была с = , вместо += — тогда бы создала новый ключ с id from_id)

В данном случае, не совсем понятна структура словаря. Зачем делать ключ fromId в словаре points? Если уж это должна быть импровизированная БД ) Скорее, здесь будет смысл считать переменную points как название таблицы (словаря с таблицей), а внутри хранить значения в виде ключ (id юзера) и значение (кол-во очков юзера).

points = <> points[999] = 1 print(points[999]) 

Я присвоил юзеру с id 999 значение 1.

Вы же , сначала берете несуществующее значение (думая что оно туда запишется), далее points.get(from_id, 0) из словаря, при этом еще используя += делаете это: points[from_id] += x (то ли присвоить, то ли хотите инкрементировать значение по несуществующему ключу — не понял).

Попрошу без нравоучений в роде «тебе не стоит пока сюда лезть, занимайся основами»

Так что здесь сложно без этого, вам действительно стоит сначала разобраться с основами, и тогда вам будет проще. Удачи в начинаниях! 🙂

Вк-бот отвечает только один раз. Vk_api, python

После первого ответа, он ничего не делает. Как это исправить?

Отслеживать

823 5 5 серебряных знаков 9 9 бронзовых знаков

задан 2 авг 2020 в 17:48

Станіслав Нетреба Станіслав Нетреба

37 7 7 бронзовых знаков

Я бы на вашем месте токен не показывал

2 авг 2020 в 17:52

random_id должен быть разным для каждого сообщения. В этом его суть

2 авг 2020 в 18:25

меняйте random_id в цикле

2 авг 2020 в 19:01

@timur как это сделать?

2 авг 2020 в 20:04

Походу, достаточно строчку random_id = vk_api.utils.get_random_id() перенести в тело цикла.

3 авг 2020 в 1:57

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

random_id должен быть разным для кажндого сообщения. Это нужно для того, чтобы ваш бот не отравлял одно и то же сообщение несколько раз. При отправке каждого сообщения вы должны генерировать новый random_id . Вам нужно в каждом вызове функции write_msg указывать random_id=vk_api.utils.get_random_id() , например:

write_msg(event.user_id, random_id=vk_api.utils.get_random_id(), "Хай") 

Отслеживать

ответ дан 3 авг 2020 в 13:21

823 5 5 серебряных знаков 9 9 бронзовых знаков

Тогда уж, лучше строчку random_id = vk_api.utils.get_random_id() перенести внутрь цикла, сразу после for event in longpoll.listen():

Гайд по API ВК: как подключить и использовать

Научим настраивать API ВК и покажем, как собирать данные быстрее и проще.

Сергей Бондаренко

Сергей Бондаренко

Автор технических статьей о маркетинге и инструкций. Расскажу о ботах в Телеграме и настройке рекламы, разбираюсь в новых темах. More posts by Сергей Бондаренко.

Сергей Бондаренко

Сергей Бондаренко

18 Jan 2023 • 9 МИН

В этой статье мы не будем рассказывать, как писать сложные приложения и игры, а расскажем, как вытащить статистику, обращаясь к запросам API ВКонтакте на платформе ВК для разработчиков. В конце бонус для нетерпеливых – как собрать информацию в несколько кликов и без подключения API.

Содержание:

  • Зачем нужно использовать API во ВКонтакте
  • Как подключить API во ВКонтакте
  • Как использовать API ВК
  • Какие методы использовать для получения статистики
  • Как получить статистику в 10 раз быстрее

Зачем нужно использовать API во ВКонтакте

У ВК есть многофункциональный и удобный API, который позволяет разработчикам выполнять самые разные действия. Раскрыть весь потенциал API стоит тем, кто хочет писать приложения и игры, использующие движок ВК. Придется тщательно изучить документацию ВК API, зачем нужно логирование API в ВК и многое другое.

Впрочем, пользоваться им сможет даже не специалист, если внимательно прочитает мою статью.

API – это посредник между разработчиком приложений и средой, с которой приложение будет взаимодействовать. С помощью API упрощается создание кода, так как можно использовать готовые формы или структуры для работы с уже имеющимися данными.

Чтобы пользоваться официальным API ВКонтакте, не нужно знать в подробностях, как устроена база ВК, из каких типов, таблиц, полей и структур она состоит. Об этом знает API. Пользователю достаточно знать команды и коды, которые он будет использовать в работе.

С помощью API можно выполнять огромное количество команд. Так как нам интересно управление аккаунтами ВКонтакте и получение информации о странице или группе, мы сконцентрируемся на этих задачах.

Что можно делать с помощью API:

  • создавать приложения и игры – для продвижения бизнеса и повышения узнаваемости бренда;
  • настраивать автоматический постинг – статей или ссылок в группе во ВКонтакте;
  • получать расширенную информацию о пользователях – имя, телефон, приватность профиля, находится ли пользователь в черном списке, данные skype, livejournal и т. д. в профиле, количество фотоальбомов, фотографий, аудио, видеозаписей, друзей и т. д., адреса сайтов, указанных в профиле;
  • получать информацию о записях на стене пользователя – комментарии, информацию о пользователях, которые лайкнули запись, записи со стен пользователей по их идентификаторам;
  • получать информацию о друзьях пользователя – список id, список id друзей онлайн, список id общих друзей между парой пользователей;
  • получать информацию о группах пользователя – список, информацию о группах по их идентификаторам, список участников групп;
  • получать информацию об отметках геолокации пользователя – список отметок и информацию о местах;
  • получать информацию о документах пользователя – список и информацию о документах пользователя или сообщества по id;
  • получать информацию об одном или нескольких сообществах – количество подписок/отписок, позитивных/негативных действий и реакций, число просмотров и посетителей, охват, список участников сообщества, список приглашенных пользователей и т. д.

Это только часть действий с аккаунтами, группами, виджетами, приложениями, темами, списками и даже звонками, которые становятся доступны пользователю, который работает с API ВК.

Обратите внимание – API ВК работает примерно так же, как и обычная страница. Если у вас нет доступа к группе или странице, то и через API его не будет. Если информация в сообществе закрыта (как, например, о внесенных в бан пользователях), то и через API эту информацию вы не откроете.

Далее разберемся, как подключить API во ВКонтакте.

Как подключить API во ВКонтакте

На платформе ВКонтакте для разработчиков можно выполнять различные задачи. С помощью методов API можно получить много нужной информации через формы на странице каждого метода. Также можно автоматизировать различные процессы от имени пользователя, у которого есть сервисный ключ доступа (access_token).

Сервисный ключ используют для запросов, которые не требуют авторизации пользователя или сообщества, и для работы с открытыми методами, например users.get. Получить его можно несколькими способами, но мы разберемся, как это сделать, создав приложение во ВКонтакте.

Чтобы создать приложение, надо перейти на платформу для разработчиков, кликнув по кнопке «Разработчикам» на странице в ВК.

Найти этот пункт очень легко в левом поле

И нажать кнопку «Создать приложение».

Кнопка одна, поэтому не промахнетесь

Затем дать название новому приложению и выбрать платформу. Выбираем «Standalone -приложение», так как при регистрации этой платформы мы получим ключ, который необходим в большинстве методов. Затем нажать «Подключить приложение».

Остальные платформы в контексте этой статьи нас не интересуют

Во всплывающем окне «Подтверждение действия» необходимо привязать мобильное устройство к странице. Для этого нажмите «Привязать устройство» или «Подтвердить через телефон».

На вашем мобильном устройстве появится окно подтверждения. Нажмите «Получить код». Дождитесь смс-сообщения с кодом на привязанный к аккаунту номер телефона и введите его в поле подтверждения.

Можно привязывать любым из представленных способов, как вам удобнее

После подтверждения системой в десктопной версии откроется новое окно «Информация».

Так как эта операция не для развития приложения, а чтобы получить API токен ВК – выбираем вкладку «Настройки».

Раздел будет сразу под «Информацией»

Во вкладке «Настройки» мы видим поля с ID приложения, «Защищенный ключ» и «Сервисный ключ доступа».

Именно «Сервисный ключ доступа» нам и нужен, это и есть access_token, который понадобится для выполнения каждого метода.

Остальные настройки нас пока не интересуют

Нажимаем на глазок в конце поля, чтобы открыть и скопировать значение токена. На мобильное устройство придет push-уведомление, в котором нужно подтвердить действие. После подтверждения получаем строку из латинских букв и цифр, которая соответствует созданному приложению.

Сервисный ключ получен, стоит его сохранить. Чтобы дальше можно было работать с API ВКонтакте, нужно включить приложение. Для этого в строке «Состояние» выберите «Приложение включено и видно всем» и сохраните изменения.

Просто измените состояние в выпадающем списке

Полученный ключ доступа скопируйте и сохраните так, чтобы при использовании очередного метода было удобно прикреплять его к каждому запросу к ВК API.

Во ВКонтакте можно даже без API запустить чат-бота или автоворонку. Так вы сможете привлечь новых клиентов и увеличить доход. Узнайте подробнее на курсе «Рассылки, чат-боты и автоворонки ВКонтакте». Вас научат автоматизировать продвижение бизнеса и разбираться в эффективных инструментах продаж во ВКонтакте. Программа состоит из 5 модулей и 8 практических занятий, на которых подробно разбирается каждый инструмент.

Как использовать API ВК

Какие возможности предоставляет API во ВКонтакте? Например, нам нужно собрать статистику страницы ВК – чтобы получить ее через API, необходимо перейти на платформу для разработчиков и выбрать необходимый метод.

Для примера возьмем популярный аккаунт. Открываем форму метода и вытаскиваем номера телефонов, указанные в информации аккаунтов подписчиков. Выполнить настройку API ВКонтакте с помощью формы методов несложно.

Метод Users

Статистику страницы ВК можно получить этим методом через API, с помощью сервисного ключа доступа, и выгрузить только общедоступные данные. Если номер телефона скрыт или не указан, строка будет пустой.

Для выбора метода переходим на платформу для разработчиков, выбираем вкладку «API» и внизу кликаем на «Методы API».

Листаем до нужной нам строки

Далее листаем вниз до метода «Users».

В этих методах представлены действия с аккаунтом

Выбираем «getFollowers» для получения информации о подписанных на подопытный популярный аккаунт пользователях.

Ищем эту строку и кликаем на нее

Затем заполняем форму метода:

  • access_token – вставляем сервисный ключ доступа;
  • user_id – числовой идентификатор аккаунта ВК, который мы взяли из адресной строки;
  • offset – смещение (с какого по счету id выдать информацию), мы прописываем «0», чтобы получить информацию, начиная с первого пользователя;
  • count – количество подписчиков, информацию о которых нужно получить;
  • fields – объект, который необходимо получить, в нашем случае это «contacts»;
  • name_case – падеж для склонения имени и фамилии пользователя, выбираем «nom» – именительный.

После заполнения всех полей нажимаем кнопку «Выполнить».

В процессе выполнения могут возникнуть системные ошибки, расшифровку которых можно посмотреть в списке кодов ошибок.

Как должны быть заполнены все поля

Если все заполнено правильно – получаем результат с ID страниц, телефонами, именами и фамилиями пользователей в указанном количестве.

Не нужно пугаться надписей, мы ничего не сломали, просто это данные в коде :)

Тем же способом в ВК методах API можем получить:

  • bdate – дата рождения в формате D.M.YYYY или D.M, если год рождения скрыт (если дата рождения скрыта целиком, поле отсутствует в ответе);
  • career – информация о карьере пользователя;
  • city – информация о городе, указанном на странице пользователя (да, если он указал Нью-Йорк, он и будет вписан);
  • connections – информация об указанных в профиле сервисах пользователя;
  • counters – количество различных объектов у пользователя (фотоальбомы, аудиозаписи, видеозаписи и т. д.);
  • domain – короткий адрес страницы;
  • exports –внешние сервисы, в которые настроен экспорт из ВК;
  • occupation – информация о текущем роде занятий пользователя.

Конечно, это далеко не все, что можно вытащить из ВК с помощью API. Подробный список объектов можно посмотреть в справочнике.

Метод Wall

С помощью этого метода можно получить список постов на стене пользователя или сообщества.

В список входят:

  • текст поста;
  • id пользователя, оставившего запись;
  • количество лайков, комментариев и репостов;
  • тип вложения – запись, картинка, видео или аудиозапись;
  • подписан ли пользователь на сообщество.

Чтобы получить записи со стены сообщества или пользователя, переходим в метод wall.get и заполняем все необходимые поля:

  • owner_id – id пользователя или сообщества, со стены которого необходимо получить записи;
  • domain – короткий адрес пользователя или сообщества, можно найти в строке адреса;
  • offset – смещение, то есть с какого по счету id выдать информацию;
  • count – количество записей, которое необходимо получить, максимум 100;
  • filter – типы записей на стене, которые необходимо получить (выберите команду, которая соответствует вашему запросу – отложенные записи, записи владельца стены, все записи на стене и т. д.);
  • extended – при установке значения «1» в ответ будут добавлены дополнительные поля profiles и groups, содержащие информацию о пользователях и сообществах (по умолчанию значение «0»);
  • fields – количество дополнительных полей для profiles и groups, которые необходимо получить (этот параметр работает только при extended= 1).

После заполнения всех полей нажимаем кнопку «Выполнить».

Такой результат можно получить

И получаем список постов со стены с нужной информацией.

Какие методы использовать для получения статистики

Далее мы расскажем об основных методах для получения статистики из сообществ ВКонтакте.

Некоторые методы не работают с сервисным ключом доступа. Пользователям, которым нужно собрать статистику сообщества, необходимо иметь ключ доступа пользователя, полученный через Implicit Flow.

Собрать активные Истории

Методом stories.get можно получить активные Истории пользователя или сообщества.

Заполните необходимые поля:

  • owner_id – id пользователя, Истории которого необходимо получить;
  • extended 1 – получать (значение 1) или нет (значение 0) дополнительную информацию о профилях пользователей;
  • fields – количество дополнительных полей.

В ответе получаем количество активных Историй и объекты с публикациями. В зависимости от того, что указали в строке fields, по каждой Истории получаем ID пользователя, тип (фото или видео), число просмотров и ответов на нее.

Получить статистику сообщества

Методом stats.get можно экспортировать статистику сообщества или приложения.

Внесите значения в поля:

  • group_id или app_id – id сообщества или приложения;
  • date_from и date_to – начальная и конечная дата выводимой статистики в формате YYYY-MM-DD;
  • timestamp_from и timestamp_to – начало и конец периода статистики в Unixtime (система описания моментов во времени, для вычисления нужно воспользоваться онлайн-конвертером Unixtime);
  • interval – интервалы времени, за которые нужна статистика (возможные значения: day, week, month, year, all);
  • intervals_count – количество интервалов времени;
  • stats_groups – фильтр для получения данных по конкретному блоку статистики сообщества (возможные значения: visitors, reach, activity);
  • версия – чтобы не было ошибок, выбираем 5.86.

При заполнении полей, отвечающих за дату, надо ввести значения (время в формате Unixtime) в полях timestamp_from и timestamp_to, т. к. параметры date_from и date_to устарели.

После успешного выполнения получим объект с данными статистики за указанный период: количество подписок и отписок, позитивных и негативных действий и реакций, число просмотров и посетителей, охват.

Статистика сообщества за 5 дней

Как получить статистику в 10 раз быстрее

А теперь мы расскажем, как собрать статистику группы или аккаунта без знания API и в разы быстрее. Для этого потребуется DataFan – данные будут у вас на руках в несколько кликов.

Более того, с помощью сервиса аналитики вы сможете собирать информацию сразу из нескольких рекламных кабинетов и аккаунтов, например, из Яндекс.Метрики и аккаунта в ВК, и загружать ее в отчеты. Так сопоставлять данные будет намного удобнее и проще, а информация будет наглядно визуализирована.

Итак, разберемся, как вытащить данные.

Авторизуемся в DataFan. Если аккаунта еще нет, можно зарегистрироваться и использовать промокод SMP-BLOG. С промокодом можно бесплатно подключить 3 рекламных кабинета или аккаунта на месяц и собирать необходимые данные.

Подключаем источники, из которых нужно будет собирать данные. Например, чтобы подключить ВК, нужно:

Подключение ВК проходит быстро и просто, никаких сложных действий

  • кликнуть на «Подключить паблик/РК»;
  • VK ADS;
  • «Подключить ВКонтакте»;
  • предоставить разрешения DataFan.

После этого данные начнут собираться. Когда все будет готово, статистика будет доступна в дашборде. Его можно найти во вкладке «Панель управления».

После выгрузки данных с ними можно работать прямо в DataFan. Сервис автоматически будет формировать отчеты по сообществам и рекламным кабинетам. Можно воспользоваться шаблоном или собрать свой отчет из нужных данных. Все отчеты доступны на панели управления.

Например, если собрать отчет по сообществу ВКонтакте, можно получить 6 вкладок с данными по:

  • соцдему – общая и детальная информация;
  • вовлеченности;
  • аудитории;
  • охватам;
  • статистике постов и Историй.

При этом отчет будет интерактивным – можно настраивать периоды времени, фильтровать и сортировать данные.

Всю актуальную и важную информацию можно быстро получить в виде отчета

Больше о настройках DataFan мы писали в статьях:

  • Как выгрузить из ВКонтакте данные статистики с помощью DataFan
  • Как построить сквозную аналитику для таргетированной рекламы ВК с помощью DataFan

Мы разобрались, какие возможности предоставляет API ВКонтакте, зачем нужно использовать API и как его подключить. Изучили, что можно делать, если получить токен API, и описали некоторые методы, которые позволяют быстро достать нужные данные.

А главное – рассказали, как достать многие из этих данных, не пользуясь сложными методами API. С помощью DataFan можно быстро выгрузить всю необходимую информацию. А еще можно автоматизировать отчет, чтобы регулярно выгружались актуальные данные.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *