Проект: YWLTB  Публичный пост
19 мая 2020  589
YWLTB

Расскажите о сути проекта?

YWLTB – или YouTube Watch Later Telegram Bot – это бот для телеги, который делает всего одну вещь: добавляет YouTube-видосы, которые вы ему скидываете в личку вам в "Watch Later" плейлист.

Как появилась идея? Что вдохновило?

Друзья часто скидывают в телегу ссылки на YouTube. Кое-какие видео порой даже достойны внимания. Обычно они идут в "Saved Messages" где успешно теряются. А ведь на YouTube уже есть специальное место для этого – плейлист "Watch Later". Я его даже периодически посматриваю, когда готовлю, например. Открывать на [не самом топовом] телефоне видео просто чтобы клацнуть там "Watch Later"? Долгхаааа!. Вот я и подумал, что неплохо бы сделать бота, которому я буду форвардить мессаги, не покидая Telegram, а тот будет сохранять мне их в "Watch Later".

Так появился YouTubeWatchLaterBot

Что вошло в прототип и сколько времени на него было потрачено?

Проект состоит из, собственно, бота для телеги, минималистичного лендинга и Privacy Policy (об этом чуть ниже).

Потратил: два вечера более-менее плотного кодинга + около недели всяких мелких правок, вёрстки, и прохождение Google API OAuth Dev Verification (для использования YouTube API).

Какой технологический стек вы использовали? Почему?

Язык и фреймворк: Kotlin + Ktor
Деплоймент: Heroku
Лендинг: HTML5

Kotlin потому что люблю этот язык и мне доставляет большое удовольствие писать на нём.
Heroku потому что это выходит абсолютно бесплатно. Ну и чертовски удобно.
HTML5 потому что не умею в React, а Wix показался жырным оверкиллом.

Как вы запускались и искали первых пользователей?

Запускался как-то так: git push heroku master.

Пользователей ищу прямо сейчас прямо здесь 😳 Ну и друзьям, конечно, посоветовал.

С какими самыми неожиданными трудностями пришлось столкнуться?

В какой-то момент оказалось, что для того, чтобы использовать YouTube Data API с правами на управление контентом пользователя, нужно пройти Google API OAuth Dev Verification. Google вообще разделяет все OAuth scopes на три типа: general, sensitive, restricted. Первые можно использовать просто так, вторые – пройдя несложную верификацию, третьи требуют прохождения security assessment за 15-75+ К зелени.

YouTube'ом можно управлять используя одну из sensitive scopes.

После настройки проекта в Google Cloud Console вам пришлют имейл где скажут, что для ревью требуется:

  • Какой-нибудь лендинг, которыя "поясняет за проект".
  • Privacy Policy и ссылка на него на лендинге и на экране OAuth. Можно нагуглить генератор таких полиси и чутка подогнать по нуждам.
  • Видео на YouTube с демонстрацией работы приложения.

В прицнипе, всё это не ракетная наука и делается на коленке за пару дополнительных вечеров. В ответном письме я скинул три ссылки на демку и лендинги. Аппрув дали на следущий день.

Сколько потратили и заработали? Есть идеи как это можно монетизировать?

Потрачено: $0
Заработано: $0
Как монетизировать: напишите, пожалуйста, в комментариях 😊
Ну не рекламой же торговать. Можно, конечно, добавлять пользователям рекламные видео в плейлисты 👿, но тут как с Солнцем, телескопом и глазами: получится только первые два раза.

Какой совет вы бы сами могли дать идущим по вашим стопам?

Если планируете запускать публичный проект, работающий с данными пользователей Google – заранее прикиньте, какие API вам потребуются. Возможно, вам предстоит дорогостоящий security assessment. И даже если у вас есть деньги (15К на пет-проект? Откуда?) – этот процесс может оказаться не быстрым.

16 комментариев 👇
Иван Лопатин, Scala-разработчик 9 ноября 2020

Hey! I know you've been using this bot for a while, but due to the latest changes in YouTube API it doesn't work anymore.
Thank you for using it!

RIP

  Развернуть 1 комментарий
Дмитрий Фирсов, Специалист группы мониторинга сервисов 18 мая 2020

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

  Развернуть 1 комментарий
Никита Якунин, Системный администратор 19 мая 2020

Отличная работа! Как мне кажется вариант платнай подписка на бота. А так отличныый инструмент будет тестить.

  Развернуть 1 комментарий
Maxim Syabro, Стартапы, вебдев, фото, техно 19 мая 2020

Версия с другой стороны:
Я завел себе личный канал Read/Watch/Listen и аггрегирую туда все, даже из внешних интернетов.

  Развернуть 1 комментарий

В общем, так и делал раньше, сейчас можно сильно проще добавлять новое в помойку watch later на ютубе (когда-нибудь я это разгребу)

  Развернуть 1 комментарий

@Shtihl, у меня помойка еще статьи, книги, подкасты

  Развернуть 1 комментарий

@syabro, в общем то да, saved messages давно пора разобрать, там и отдельные переписки с ссылками, и файлы, и видео, и e.t.c. Вопрос только в том, когда это разобрать, и надо ли?

  Развернуть 1 комментарий

@Shtihl, хз, мне кажется нужно что-то типа Business Value + Cost из управления проектами. Типа коэффициент который получим разделив Пользу / Время.
Иначе просто будет копиться

  Развернуть 1 комментарий
Иван Лопатин, Scala-разработчик 19 мая 2020

Удобно, спасибо, буду пользоваться.

Заметил, что есть https://gitlab.com/madhead/telek, но бот разработан на чужой библиотеке, почему так? :)

  Развернуть 1 комментарий

Два очка за наблюдательсность вам! У меня давно была идея сделать библиотеку для Telegram на Kotlin, отвечающую нескольким принципам:

  • поддержка Kotlin Multiplatform. Чтобы запускаться на JVM, Native, JS.
  • использование suspend functions. ИМХО отличный вариант для неблокирующих API. Сделать из suspend functions блокирующий код гораздо проще, чем оборачивать блокирующие вызовы в suspend functions потом.
  • максимальное покрытие TG Bot API. Чтобы писать какого угодно бота.
  • максимальная приближенность к TG Bot API. Мне не нужны какие-то message routers и command handler, хочу просто обьекты как в документации TG Bot API.

Я начал писать свой велосипед, даже реализовал нужный мне функционал. Столкнулся с двумя болями

  • следить за изменениями в Bot API
  • типы в TG Bot API местами довольно динамичны, что сложно поддерживать в статически типизируемом языке (например, chat id может быть long или string).

Я написал парсалку их HTML доки и сгладил какое-как углы динамичности в своём Telek.

Потом нашёл либу InsanusMokrassar/TelegramBotAPI. Она, удовлетворяет первым трём принципам (самым приоритетным). Да и к Bot API близка, но с особенностью: автор запрограммировал абсолютно всё в интерфейс.

interface CommonMessage<T: MessageContent> : Message,
    PossiblyForwardedMessage,
    PossiblyEditedMessage,
    PossiblyReplyMessage,
    PossiblyMarkedUp,
    ContentMessage<T>

В итоге использовать её не так удобно (касты и тайпчеки), как я мечтал, но, эй! мне не нужно писать свою! Я переборол NIH-синдром и решил забросить разработку своего Телека.

  Развернуть 1 комментарий

"Потрачено: $0"
На хероку 0? А можно гайд как это сделать? (не, я серьёзно, я бы свои боты уже залил)

  Развернуть 1 комментарий

Конечно. Гайд по заливке конкретно этого бота есть в README, достаточно просто нажать кнопку.

Я использую hobby tier PostgreSQL с ограничениме в 10К строк (о, если у меня когда-нибудь будет хотя бы половина этого количесва пользователей, я буду очень рад и доволен собой!) и hooby tier для, собственно, бекенда. У него есть неприятная особенность: он засыпает после часа неактивности. Если работали с AWS Lambda, например, то могли слышать про cold starts. Это неприятно: первый вызов "спящего" бекенда может занимать 10+ секунд, но не так критично для TG бота, верно? Кстати у меня есть бот на AWS Lambda, тоже на Kotlin, и субьективно Heroku просыпается быстрее AWS Lambda (при аналогичном CPU/RAM).

А теперь палю контору и отвечаю на вопрос, который вы, наверняка, задали, но не спросили: как запустить кучу проектов пускай и на hobby tiers бесплатно на Heroku? Ведь там есть ограничение на количество аппликов в бесплатном аккаунте. Я просто регаю для каждого нового проекта новый акк, но делаю это с особым цинизмом: указываю почту типа name.surname+projectname@gmail.com, при том, что мой основной имейл – это name.surname@gmail.com. Серьёзно, Heroku считает это новым имейлом! Так, не плодя лишних ящиков, настроив фильтры, можно держать несколько бесплатных аккаунтов на Heroku и запускать в них разные проекты.

Конечно, подходит это всё для не очень требовательных проектов. Мало RAM, мало CPU, нет мониторинга, ограничение на 1 активный процесс. Но вот такие "персональные" боты вполне можно запускать с нулевыми вложениями.

  Развернуть 1 комментарий

@madhead, спасибо, понял, алиасиками гмыла сам пользуюсь :)

да, вот про засыпания проблема, если бот например не интерактивный, а парсит что-то раз в час. может я что-то не понимаю?

  Развернуть 1 комментарий

@mrx, думаю, вполне: Heroku Scheduler. Я не пользовался, но написано, что это бесплатный аддон.

  Развернуть 1 комментарий

Спасибо за бота!

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

А может кто-то знает тут, как отсортировать в Watch Later видео по продолжительности? А то бывает хочется посмотреть что-то пятиминутное и приходится листать весь список, а в нём накопилось больше тысячи уже всего.

  Развернуть 1 комментарий

No Code, конечно, No Code'ом, но я бы накидал скрипт при таких обьёмах :)

  Развернуть 1 комментарий

😎

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

Что вообще здесь происходит?


Войти  или  Вступить в Клуб