Телеграм-бот, который поможет сохранить статью как pdf-файл. Кидаешь ссылку — получаешь читабельную пдфку.
Идея
Как обычно бывает, я просто хотел решить свою проблему, но не нашёл подходящего готового инструмента.
До пандемии я часто ездил в родную деревню, где нет интернета и очень плохо ловит сотовая связь. После того, как вскопаешь огород, почистишь навоз и поставишь чёртовых гусей на место, хочется сесть на крылечко, налить парного молока и почитать статью Пола Грэма, которая ждёт тебя в очереди вкладок в браузере. И тут-то моя проблема и возникает. В какой-то момент мне надоело бегать по огороду, ловя связь с поднятой рукой, и решил я сделать бота.
Главное требование для бота — простота. Кинул ссылку — получил пдф. Без каких-либо команд и прочего.
Делаем
Прототип был сделан за несколько вечеров. Большая часть времени была потрачена на выбор феймворка и дома для бота. Я хотел обойтись без базы данных и чтобы бот работал на лямбде с помощью вебхуков. Прототип делал то, что хотел — генерировал пдф из ссылки. Дальше надо было заставить его делать читабельную пдф, то есть оставлять только текст и изображения.
В качестве сервера я выбрал Vercel (Zeit), потому что бесплатно, удобно и есть серверлесс функции. Подключил GitHub — автоматически получил CI. Сам бот сделан с помощью Telegraf.js, потому что первая ссылка в гугле. В читабельный вид статью приводит библиотека, которая отвечает за режим чтения в Firefox. А сама пдф сохраняется с помощью Chrome.
В итоге бот делал всё как я хотел. Накидал ссылок, получил пдфки, сохранил на смартфон и поехал в деревню пасти гусей.
Единственная оставшаяся проблема — он не могёт в тяжёлые статьи, потому что у Vercel ограничения в 10 секунд на исполнение функций.
Индийцы
Всё было хорошо, пока не пришли они.
Мне начали писать в личку и просить добавить поддержку хинди и телугу, и ещё расширить функционал.
Шрифты я с радостью добавил. Но менять и расширяться не стал. Бот делает одну вещь и делает хорошо. Индийцы, извините.
После этого я добавил простое логирование, и в течение недели записывал ссылки в Airtable, чтобы понять как используют бота.
Большинство ссылок было на индийских языках связанных с учёбой и образованием. Некоторые хитрили и сохраняли твиттер-треды с threadreaderapp.com. Изредка встречались ссылки на испанские эротические рассказы. Сейчас логирую только удачные и неудачные попытки получить пдф.
Бот работает около трёх месяцев. В среднем каждый день генерирует около десяти пдф от 8-10 уникальных пользователей.
Траты и планы
На разработку бота ничего не потратил. Это проект больше для себя, чтобы научиться чему-то новому, не верстать же всю жизнь.
В будущем хотелось бы научить бота обрабатывать несколько ссылок из одного сообщения. И если хватит фана, то сделать веб-морду с удобным списком пдфок и ссылками для скачивания.
Монетизировать бота не было в планах. Не представляю, как можно это делать с таким специфичным ботом. Личная веб-морда по подписке?
Но индийскую любовь я уже заслужил.
Изначально статья была написана для Вастрик.Клуба