Телеграм-бот для создания пдфок

Телеграм-бот, который поможет сохранить статью как pdf-файл. Кидаешь ссылку — получаешь читабельную пдфку.

Идея

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

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

Главное требование для бота — простота. Кинул ссылку — получил пдф. Без каких-либо команд и прочего.

Делаем

Прототип был сделан за несколько вечеров. Большая часть времени была потрачена на выбор феймворка и дома для бота. Я хотел обойтись без базы данных и чтобы бот работал на лямбде с помощью вебхуков. Прототип делал то, что хотел — генерировал пдф из ссылки. Дальше надо было заставить его делать читабельную пдф, то есть оставлять только текст и изображения.

В качестве сервера я выбрал Vercel (Zeit), потому что бесплатно, удобно и есть серверлесс функции. Подключил GitHub — автоматически получил CI. Сам бот сделан с помощью Telegraf.js, потому что первая ссылка в гугле. В читабельный вид статью приводит библиотека, которая отвечает за режим чтения в Firefox. А сама пдф сохраняется с помощью Chrome.

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

Единственная оставшаяся проблема — он не могёт в тяжёлые статьи, потому что у Vercel ограничения в 10 секунд на исполнение функций.

Индийцы

Всё было хорошо, пока не пришли они.

Мне начали писать в личку и просить добавить поддержку хинди и телугу, и ещё расширить функционал.

Шрифты я с радостью добавил. Но менять и расширяться не стал. Бот делает одну вещь и делает хорошо. Индийцы, извините.

После этого я добавил простое логирование, и в течение недели записывал ссылки в Airtable, чтобы понять как используют бота.

Большинство ссылок было на индийских языках связанных с учёбой и образованием. Некоторые хитрили и сохраняли твиттер-треды с threadreaderapp.com. Изредка встречались ссылки на испанские эротические рассказы. Сейчас логирую только удачные и неудачные попытки получить пдф.

Бот работает около трёх месяцев. В среднем каждый день генерирует около десяти пдф от 8-10 уникальных пользователей.

Траты и планы

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

В будущем хотелось бы научить бота обрабатывать несколько ссылок из одного сообщения. И если хватит фана, то сделать веб-морду с удобным списком пдфок и ссылками для скачивания.

Монетизировать бота не было в планах. Не представляю, как можно это делать с таким специфичным ботом. Личная веб-морда по подписке?

Но индийскую любовь я уже заслужил.

Изначально статья была написана для Вастрик.Клуба