Автопост в группу ВКонтакте при запуске стрима Twitch

Данный материал, вероятно, устарел. Если у вас есть какие-либо правки — пишите в комменты. Я исправлю и дополню статью

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

Можно такой пост заранее сделать и запланировать ко времени начала стрима, если утвердил для себя расписание (почему следует стримить по рассписанию, я, кстати, уже рассказывал в своем Twitch FAQ), но в любом случае — это ручная работа. А я как программист — хоть и в отставке — очень не люблю делать какие-то регулярно повторяющиеся действия самостоятельно и всегда ищу способы автоматизации процесса.

IFTTT

С сервисом If This Then That, название которого можно перевести как «если произошло вот это, делать то», я познакомился давно и успешно использую его для решения различных задач. К примеру, возможность заказа игры для стрима прямо из чата Твича работает в том числе через IFTTT. О реализации этой функциональности я подробно рассказал в серии статей под общим названием «Дневник разработки».

По сути IFTTT создает связь между двумя серсивами. Например, можно подключить к аккаунту Instagram и Dropbox, а потом установить связь: если опубликована новая фотография в инстаграме, сохранить её заданную папку дропбокса. IFTTT поддерживает огромное количество сервисов, начиная с Твиттера, заканчивая системами управления умным домом.

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

Поддержка Твича появилась достаточно давно, а вот ВКонтакте у IFTTT пока в списке поддерживаемых сервисов не значится. Но это не беда, потому что для сайтов (и не обязательно только сайтов) с API существует самый крутой коннектор Maker.

Данный коннектор настолько крут, что может как принимать запросы от любых сервисов через GET и POST, так и отравлять их куда угодно. В нашем случае алгоритм работы будет следующий: мы создадим связь в IFTTT между Twitch и Maker, который будет отправлять специализированный запрос ВКонтакте для создания поста в группе (паблике) с информацией о стриме. Для работы нам нужно собственное приложение ВКонтакте и его access_token. Если у вас они уже есть, то пропускайте следующий раздел.

Standalone-приложение и токен

Начальный пункт наших изысканий расположен в конечном пункте задачи, то есть во ВКонтакте. Социальная сеть не разрешат работать с API пользователю напрямую. Делать это можно только через приложение. Его мы сейчас и создадим прямо вот тут: https://vk.com/apps?act=manage. Там справа есть кнопочка Создать приложение. Нажал — создал.

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

Отлично. Теперь самый отвественный этап. Скопируйте вот такую ссылку в Блокнот (Notepad++, конечно):

https://oauth.vk.com/authorize?client_id=5563738&scope=notify,photos,friends,audio,video,notes,pages,docs,status,questions,offers,wall,groups,messages,notifications,stats,ads,offline&redirect_uri=http://api.vk.com/blank.html&display=page&response_type=token

Циферки после client_id= нужно поменять на свои, которые мы взяли из ID приложения. А потом вставляем эту ссылку в адресную строку браузера, жмем Enter и подтверждаем всю ту уйму прав, что мы хотим предоставить своему приложению, нажав кнопку Разрешить.

После этого в строке адреса браузера сменится линк, в котором появится параметр access_token. Вам нужно скопировать и сохранить то, что идет после знака равно и до амперсанта (&). Эта длинная череда символов позволит нам создавать посты (и не только) в группах и пабликах, к которым есть доступ у аккаунта, которым вы разрешили доступ приложению.

Настраиваем IFTTT

Регистрируемся, переходим в раздел My Applets, жмем кнопку New Applet:

  • На странице настройки нового апплета нажимаем на синюю надпись +this — это триггер нашего апплета. Пишем в поиске Twitch, авторизуемся и выбираем событие на второй карточке New stream started by you. То, что нам и нужно — запуск нового стрима;
  • Теперь нам нужно выбрать, что будет происходить при запуске стрима, нажимаем на +that и пишем в поиске webhook. Выбираем один найденный сервис Maker Webhooks, и далее экшон Make a web request;
  • На данный момент для того, чтобы сформировать ссылку запроса, который будет создавать пост во ВКонтакте при запуске стрима, у нас не хватает ID вашей группы (паблика). Узнать его проще простого:
    • щелкнике правой кнопкой мыши по дате любого поста в вашем паблике (группе);
    • скопируйте ссылку;
    • выделите из ссылки число между wall и подчеркиванием
      https://vk.com/wall-101835343_3396 — обратите внимание, ID групп и пабликов всегда отрицательные, не потеряйте минус.
  • В поле URL настройки апплета нужно вставить ссылку:

https://api.vk.com/method/wall.post?owner_id=-101835343&friends_only=0&from_group=1&message=<<<Запустил стрим по {{Game}}. Стрим по ссылке {{ChannelUrl}}>>>&attachments= {{StreamPreview}}&access_token=СЮДА_ВСТАВЬ_СВОЙ_ТОКЕН

В этой ссылке обязательно нужно заменить owner_id на ID вашей группы (паблика) ВКонтатке, access_token на ваш токен, полученный нами в предыдущем разделе. Еще вы видите интересные конструкции <<<ЧОТА>>> и {{ЧОТА}}. Тройные знаки больше-меньше нужны, чтобы всё было хорошо, не трогайте их. Двойные фигурные скобки представляют собой так называемые ингридиенты — это значения, которые передает нашему апплету Твич, когда происходит запуск стрима. Всего их шесть:

  • CreatedAt — дата и время начала стрима;
  • Game — игра, которая задана на стриме в момент запуска;
  • ChannelName — название канала, та часть ссылки, которая идет после twitch.tv/
  • StreamPreview — ссылка на картику с текущим кадром стрима на момент события;
  • ChannelUrl — ссылка на ваш канал;
  • CurrentViewers — количество зрителей на данный момент.

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

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

При начале стрима на Twitch автоматически создается пост в моей паблике ВКонтакте с достоверной информацией о стриме. И, кстати, не забудьте нажать на кнопку Save после того, как настроите апплет! Никакие другие поля кроме URL трогать не нужно. Всё будет работать и так.

6 ответов к “Автопост в группу ВКонтакте при запуске стрима Twitch”

А можно настроить публикацию не в группу а на свою стену в контакте?

Да, можно. Заменяй параметр owner_id на ID своей страницы и параметр from_group сделать равным нулю. ID страницы можно найти в URL своих фото или аудиозаписей

Привет, не знал где спросить, спрошу тут — не знаешь, как можно прикрутить отслеживание состояния твич стрима через шапку группы вконтакте? Такое реализовано у SilverName стримера по HS — вот его группа https://vk.com/silvernamehs
В шапке группы, на картинке написано offline, если стрим офлайн и online + количество зрителей, если стрим онлайн. По-моему очень крутая задумка и реализация. Спасибо за внимание!

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

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

Спасибо за наводку, как раз не знал как загуглить)

Обсуждение закрыто.