Как создать скрипт ВК

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

12 950 просмотров

Сразу скажу, скрипт написан далеко не идеально, я маркетолог, а не программист.

Пример работы

Для примера работы скрипта взял группу Life News. На момент написания статьи было собрано 92 207 постов, последний пост датирован 1 апреля 2017 года. 17 минут затрачено на скачивание, и 5 секунд — на обработку данных.

  • Лучшее время для размещения записей — с 19:00 до 22:00. Этот интервал показал максимальные количество просмотров сумму активностей на пост. Интересно, что больше всего комментариев зафиксировано в дневное время, с 11:00 до 14:00, но количество комментариев на пост больше в вечернее время, с 20:00 до 22:00.
  • 91% записей в сообществе короткие, до 200 символов.
  • Материалы с видео набирают в два раза больше активностей, но при этом среднее количество просмотров на пост одинаковое.
  • Посты без встроенной ссылки собирают больше активностей на пост, и ER в два раза выше.

Создание токена

OFF-BOT.COM | КАК НАБРАТЬ ОЧЕНЬ МНОГО СООБЩЕНИЙ | АБУЗ СООБЩЕНИЙ ВКОНТАКТЕ! #СООБЩЕНИЯВК #ВКОНТАКТЕ

Для работы с API «ВКонтакта» необходимо сгенерировать сервисный токен. На эту тему написано много инструкций, поэтому буду краток.

1. Перейдите на страницу создания приложения и создайте приложение «Standalone-приложение»:

2. После создания приложения перейдите в настройки и сохраните сервисный ключ доступа.

Установка дистрибутива Anaconda

Anaconda — это дистрибутив для работы с Python, в него входит много библиотек и инструментов. Нам для реализации данного скрипта понадобится Jupiter Notebook и библиотека Pandas.

  1. Запустите установщик и просто следуйте инструкциям.
  2. После успешной установки перейдите в папку, где будет располагаться ваш проект, и в строке адреса введите CMD и нажмите Enter.
  3. У вас откроется командная строка, введите в неё команду Jupyter Notebook и нажмите Enter.
  4. Откроется страница Jupyter Notebook в браузере, после чего создайте новый файл Python 3.

Работа со скриптом

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

Ввод исходных данных и подключение библиотек

import requests import pandas as pd from datetime import datetime import time id_group = ‘id_group’ token = ‘token’ count_posts = 10000

Первый этап разделен на два промежуточных. В первом мы импортируем необходимые для работы библиотеки. Request — для получения данных из «ВКонтакте», Pandas — для работы с данными, DateTime — для работы с датами, библиотека Time — для создания интервалов между запросами.

Как сделать свой сайт NVUTI + АДМИНКА | NVUTI, DICE | Скрипт+Админка | Слив скрипта

На втором этапе необходимо ввести исходные данные. В поле id_group — домен группы, token — токен, полученный на предыдущем этапе, count_posts — количество постов для анализа. Для того чтобы спарсить все записи, просто введите 1 000 000, алгоритм сам возьмёт максимальное количество постов.

После ввода кода в Jupiter Notebook нажимаем Ctrl+Enter и переходим на следующую строку для ввода второй части кода.

Подключение к API и загрузка данных

Для подключения к API мы использовали метод wall.get, более подробное описание методов API в официальной справке.

Вторая часть кода с помощью get-запроса инициирует обращение к API. Не буду подробно останавливаться на get-запросе, просто скажу, что он состоит из двух параметров: URL — ссылка для запроса, и Params — параметр запроса. В словаре params, в зависимости от ваших нужд, можно поменять переменную filter на owner — посты только от владельца, all — все посты, others — гостевые посты.

Подробное описание всех параметров доступно в справке.

Ответ получаем в JSON-формате и записываем его в переменную r. Из-за ограничений API за одно обращение мы можем забрать только 100 постов. Поэтому за каждую итерацию цикла 100 постов добавляются в массив данных data_posts. Также для обхода ограничения по количеству запросов в секунду я добавил time.sleep(0.5), что позволяет сделать паузу в полсекунды между запросами.

Еще по теме:  Что раньше facebook или Вконтакте

Обработка и запись данных в Data Frame

Для работы с данными нам понадобится библиотека Pandas. Pandas — одна из самых популярных библиотек для анализа и обработки данных. Работа с библиотекой строится через объект Data Frame, внешне он напоминает таблицу, но это не совсем так. Для начала работы с DF нам необходимо преобразовать и обработать данные из JSON-формата.

stats = [] for record in data_posts: title = record[‘text’].split(‘n’)[0] if len(title) > 80: title = title[:80] len_title = len(record[‘text’]) len_title = len_title // 100 *100 date = datetime.fromtimestamp(record[‘date’]).strftime(‘%Y-%m-%d’) hour = datetime.fromtimestamp(record[‘date’]).strftime(‘%H’) attachment = <‘photo’ :0, ‘audio’ :0, ‘video’: 0 , ‘link’: 0, ‘poll’: 0>if ‘attachments’ in record: for attach in record[‘attachments’]: if attach[‘type’] in attachment: attachment[attach[‘type’]] = attachment[attach[‘type’]] + 1 if ‘views’ in record: views = record[‘views’][‘count’] else: views = 0

Для начала создадим пустой массив, где будут храниться данные stats = []. Как вы помните, мы записывали все данные поступающие из «ВКонтакте» в массив data_posts. Теперь наша задача вытащить из него только нужное. Для обхода всего массива мы создаём цикл For, такая конструкция for record in data_posts: позволит работать с одним постом за один обход цикла.

За название поста я брал первую строчку и ограничил длину 80 символами. Это подходило исключительно для моего проекта, вы переделайте алгоритм под ваш проект. Для того чтобы записать в переменную title текст, достаточно title = record[‘text’]. Далее я замерил длину текста и разделил на 100, взяв только целое число для удобной группировки.

Переменные Date и Hour — это дата в формате «гггг-мм-дд» и час выхода поста соответственно. Следующий блок кода — это поиск и подсчёт количества вложений. Все они перечислены в словаре attachments.

Последнее условие проверяет, есть ли в данных о посте количество просмотров. «ВКонтакте» относительно недавно ввела количество просмотров в записи, и поэтому при получении постов, опубликованных раньше 2017 года, скрипт выдавал ошибку, так как ключ Views отсутствовал. По этой причине я записывал в такие посты 0;

total_actions = record[‘comments’][‘count’] + record[‘likes’][‘count’] + record[‘reposts’][‘count’] stats.append([title, len_title, attachment[‘photo’], attachment[‘audio’], attachment[‘video’], attachment[‘link’], attachment[‘poll’], views , record[‘comments’][‘count’], record[‘likes’][‘count’], record[‘reposts’][‘count’], total_actions, date, hour])

В этой части кода мы подсчитываем сумму активностей и добавляем в наш массив данные, которые нам интересны.

columns = [«name_post», ‘len_text’, ‘photo’, ‘audio’, ‘video’, ‘link’, ‘poll’, «views», «comments», «likes», «share», ‘total_action’, «date», «hour»] df = pd.DataFrame(data=stats, columns=columns)

В последнем фрагменте третьей части мы записываем наши данные в Data Frame. Сначала необходимо задать название столбцов, я задал их через массив columns. После чего мы создаём объект Data Frame и в качестве аргументов передаём в него массив данных stats и название заголовков columns. Готово, объект создан, и теперь с ним можно работать.

Вычисление показателей и запись в Excel

Получившийся Data Frame группируем по часу, типу постов и длине текстов и вычисляем показатели вроде средней активности на пост, просмотров на пост и ER.

df_hour = df.drop([‘len_text’, ‘photo’, ‘audio’, ‘video’, ‘link’, ‘poll’], axis=1) df_group_by_hour = df_hour.groupby(‘hour’).sum() df_group_by_hour[‘count_post’] = df_hour.groupby(‘hour’)[‘name_post’].count() df_group_by_hour[‘mean_action’] = df_group_by_hour[‘total_action’] /df_group_by_hour[‘count_post’] df_group_by_hour[‘views_on_post’] = df_group_by_hour[‘views’] / df_group_by_hour[‘count_post’] df_group_by_hour[‘er’] = df_group_by_hour[‘total_action’] / df_group_by_hour[‘views’] * 100 df_group_by_hour = df_group_by_hour.sort_values(by=»er», ascending=False) df_type = df.drop([‘date’, ‘hour’], axis=1) df_group_by_len_title = df_type.groupby(‘len_text’).sum() df_group_by_len_title[‘count_posts’] = df_type.groupby(‘len_text’)[‘name_post’].count() df_group_by_len_title[‘mean_action’] = df_group_by_len_title[‘total_action’] / df_group_by_len_title[‘count_posts’] df_group_by_len_title[‘views_on_post’] = df_group_by_len_title[‘views’] / df_group_by_len_title[‘count_posts’] df_group_by_len_title[‘er’] = df_group_by_len_title[‘total_action’] / df_group_by_len_title[‘views’] * 100 df_group_by_len_title = df_group_by_len_title.sort_values(by=’views’, ascending=False) df_group_by_len_title = df_group_by_len_title.style.format(«<:.2f>»)

И записываем в Excel-файл.

Файл записывается туда же, где находится файл Jypter Notebook. Он содержит исходные необработанные данные, сгруппированные данные по часу, сгруппированные данные по количеству символов и группировку по вложениям.

Надеюсь, данный гайд поможет вам найти формулу вашего идеального поста.

Источник: vc.ru

VK Scripts

Несмотря на огромную популярность социальной сети ВКонтакте, ее разработчики не спешат добавлять многие функции, которые бы хотелось видеть пользователям: управление несколькими аккаунтами, быстрое удаление своих лайков, более удобная рассылка сообщений и т. д. Для этих целей создаются специальные расширения, приложения с дополнительными возможностями, онлайн-сервисы и отдельные программы. В рамках данной статьи мы рассмотрим сайт ВК Скрипт и объясним, для чего он нужен и как им пользоваться. Давайте разбираться с этими вопросами.

Пояснительная информация

Сайт VKScripts.ru позволяет пользователям запускать свои скрипты для VK через инструменты API. Это поможет в автоматизации множества действий. Вот несколько примеров:

  • Быстрая загрузка музыки из плейлистов.
  • Удаление всех лайков, которые вы когда-либо оставляли.
  • Простой чат-бот или автоответчик.
  • И так далее.
Еще по теме:  Easeus data recovery wizard код активации vk

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

Вполне возможно такое, что VK Scripts может частично или полностью не работать у вас. Мы разобрали этот вопрос в разделе «Важная информация». Если вы столкнулись с такой проблемой, то сразу же переходите к нему, минуя инструкцию по использованию.

Использование сайта

Кнопка Согласен на сайте VK Scripts

Как только вы откроете сайт vkscripts.ru, на странице отобразится список правил, предупреждений и запретов. Рекомендуем с ним ознакомиться. А через 10 секунд станет активной кнопка «Согласен». Кликните по ней для продолжения.

Добавить Аккаунт на сайте VK Scripts

Следующий шаг – вход в свою учетную запись ВКонтакте. Для этого нажмите на пункт «Аккаунты» в левом блоке, а затем на иконку в виде плюсика.И в конце дайте разрешение на доступ к вашему аккаунту для приложения VK Scripts. Таким способом можно добавить сразу же несколько страничек.

В разделе «Скрипты» есть уже готовые пользовательские сценарии. Но в большинстве случаев они скрытые, не слишком полезные или попросту рабочие. Поэтому желательно создавать скрипты самостоятельно или искать готовые в Интернете.

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

Обратите внимание на две иконки в правом верхнем углу экрана:

  • Список с «галочкой» – отвечает за форматирование кода.
  • Символы <> – подсветка синтаксиса.

Специальные символы на сайте VK Scripts

Если вы вручную пишите код, то они могут пригодиться.

Инструкция по запуску:

  1. Кликните по кнопке «Редактировать» в левом меню.Кнопка Редактировать на сайте VK Scripts
  2. Напишите свой код или вставьте уже готовый.
  3. Далее, сохраните его, нажав на значок в виде дискеты.Сохранить скрипт на сайте VK Scripts
  4. Укажите название, по желанию заполните графу «Описание» и выберите параметры доступа.
  5. Кликните по кнопке «ОК».Завершение создания скрипта на сайте VK Scripts

Ссылка на новый сценарий появится в правом нижнем углу экрана, а он сам отобразится в разделе «Скрипты».

Следующий шаг – воспроизведение:

Запуск скрипта на сайте VK Scripts

  1. Откройте окно «Параметры запуска», нажав на иконку в виде маркированного списка.
  2. Настройте все пункты по своему усмотрению, если в этом есть необходимость.
  3. Кликните по иконке «Запустить».

Важная информация

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

Если вы столкнулись с невозможностью запуска пользовательских сценариев, то исправить это, к сожалению, никак не выйдет. Но существует множество других программ, сервисов и расширений для социальной сети ВКонтакте, которые могут вам пригодиться. Отдельного упоминания заслуживают:

  • SaveFrom.net – расширение для удобной загрузки музыки, видео и историй.
  • VK Expert (ранее – VK Helper) – браузерное расширение для управления несколькими аккаунтами одновременно, выполнения массовых операций (удаление всех лайков, чистка всех постов и т. д.). Поддерживает множество других функций.
  • Граф друзей – приложение, которое анализирует всех пользователей из списка друзей, определяет их связь и отображает эту информацию в виде трехмерного графа.
  • VkJust – компьютерная программа, предназначенная в первую очередь для продвижения сообществ и страниц ВКонтакте. Но по своим возможностям частично напоминает VK Expert.

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

Подведение итогов

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

Источник: vkgid.ru

Первый бот на PHP для ВКонтакте

Здравствуйте, хабровчане. В этой публикации я напишу о том, как сделать своего первого чат-бота для ВКонтакте. Думаю, что опытным программистам это будет не интересно, а вот тем, кто только начинает свой путь, будет интересно, так как я ещё и сам не очень далеко ушёл и понимаю проблемы начинающих. И предупреждаю сразу, что большинство скриншотов будет на английском языке.

Еще по теме:  Какой можно сделать никнейм в ВК

Сперва нам нужно создать сообщество. Думаю, с этим справится каждый.

Затем мы заходим в настройки сообщества и выбираем пункт «API usage» и нажимаем на кнопку «Create token».

image

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

image

И вот мы получили заветный токен. Его, кстати, нужно сохранить в надёжное место и никому не показывать. Теперь можно приступать к коду.

image

Мы будем писать код на языке PHP, поэтому можно скачать Visual Studio code или PHPStorm. В принципе, код можно писать и в блокноте, только это будет не удобно. После кода мы перейдём к дальнейшей настройке группы.

Итак, для начала нам нужно получить информацию о входящем сообщении и перевести её из формата JSON в понятный для PHP.

В переменной data теперь к нас находится массив с сообщением, ID пользователя и ID чата.
«А что за „json_decode(file_get_contents(‘php://input’))“, — спросите вы.

Начнём с этого момента:

file_get_contents(‘php://input’)

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

,»group_id»:171524656>

Думаю, легко понять что написано в запросе, если иметь минимальные знания в английском языке.

Ну а „json_decode()“ — функция, которая переводит вышеприведённый JSON в массив, с которым может работать PHP.

Теперь напишем код, который смотрит какое событие произошло, и если к нам пришло новое сообщение, то сравнивает сообщение, с теми, на которые у нас есть ответ и смотрит ID чата.

type) < case ‘confirmation’: echo $confirmation_token; break; case ‘message_new’: $message_text = $data ->object -> text; $message_text = $data -> object -> peer_id; if ($message_text == «привет») < // что-то происходит >if ($message_text == «пока») < // что-то происходит >echo ‘ok’; break; > ?>

Теперь нам нужно как-то отвечать на эти сообщения. Для этого напишем простую функцию.

$text, ‘peer_id’ => $peer_id, ‘access_token’ => «TOKEN», ‘v’ => ‘5.87’ ); $get_params = http_build_query($request_params); file_get_contents(‘https://api.vk.com/method/messages.send?’. $get_params); > ?>

Что же тут происходит? Здесь мы строим запрос к API VK (документацию рекомендую почитать) с текстом сообщения, ID чата и токеном, который мы создали ранее, и отправляем его на сервер ВК.

Теперь соединим эти куски кода и напишем реакции бота на то или иное сообщение.

$text, ‘peer_id’ => $peer_id, ‘access_token’ => «TOKEN», ‘v’ => ‘5.87’ ); $get_params = http_build_query($request_params); file_get_contents(‘https://api.vk.com/method/messages.send?’. $get_params); > $data = json_decode(file_get_contents(‘php://input’)); switch ($data->type) < case ‘confirmation’: echo $confirmation_token; break; case ‘message_new’: $message_text = $data ->object -> text; $chat_id = $data -> object -> peer_id; if ($message_text == «привет») < vk_msg_send($chat_id, «Привет, я бот, который говорит две фразы.»); >if ($message_text == «пока») < vk_msg_send($chat_id, «Пока. Если захочешь с кем-то поговорить, то у тебя есть бот, который говорит две фразы.»); >echo ‘ok’; break; > ?>

«Хорошо, а зачем нам писать ‘ok’ после отправки сообщения?»

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

Теперь перейдём к настройке группы.

Заходим в настройки и выбираем версию API 5.87 (можно, конечно, и более новые версии, но лучше иметь единство версий API).

image

Из этого же раздела берём строку, которую должен вернуть сервер, и подставляем её в переменную confirmation_token.

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

Потом выбираем о каких событиях в сообществе нам будет сообщать ВКонтакте. Нам нужны только входящие сообщения.

image

Далее подтверждаем адрес сервера, и наш первый бот готов к использованию.

image

Так как это моя первая публикация на Хабре, я хочу получить замечания по статье и дальше только совершенствоваться.

Источник: habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...