isqad

isqad

пикабушник
поставил 12 плюсов и 23 минуса
сообщества:
690 рейтинг 8 подписчиков 39 комментариев 3 поста 1 в "горячем"
14

Телеграм бот для электронных книг:  итоги первой недели

Всем привет! Это снова я со своим ботом https://t.me/boookovka_bot (@boookovka_bot).

Спасибо всем первым пользователям, я нашел кучу ошибок и в первый день после анонса на pikabu.ru, сидел и правил. Основная бага была, что память бота безбожно текла, где-то горутина (да-да приложение на golang) оставалась "висеть", где ссылка висячая оставалась на структуру, в общем поправил и добавил аллокатор jemalloc.
На следующее утро я пришёл на работу и почуял неладное. Интернет работал с перебоями и в середине дня ко мне пришел админ с жалобой, что я забивал всю сеть udp пакетами.
-- Приехали --, взгруснулось мне, по базе сотня недоставленных книг, при включении сервиса скачивания интернет в офисе падает. В общем беда. Переписал сервис скачивания, выкинул лишнее, оставил только один запущенный торрент клиент в сервисе. Запускаю - инет падает.

Сдался в итоге, и вечером покупаю VPS в Нидерландах. Взял с одним ядром cpu, 1Gb оперативки и 20Gb SSD. "На наш век хватит", думал я. Поздно вечером выкатываю бота на хостинг, и все держится неплохо. Пару недокаченных книг запускаю на скачивание, и они успешно и быстро отдались клиентам. На следующеее утро собрал все "недокачки" и раздал клиентам. Весь день и  дальше бот работал без перебоев. Стабильность восстановлена и дальше буду дополнять различными фичами.. 😊

Немного по статистике за примерно три дня стабильной работы бота для тех, кто любит цифры:
- 2870 пользователей телеграм открывали бота и смотрели, что-то искали
- 1142 успешно отданных книг (закачек)
- 24Gb книг выкачено и роздано

TOP10 самых популярных книг:
1) Лукьяненко Сергей  Кваzи / Квази
2) Джастин Сейтц  Gray Hat Python / Python глазами хакера
3) Юваль Ноах Харари Краткая история человечества
4) Платт Ч.  Электроника для начинающих
5) Книжная серия «Весь Сергей Лукьяненко»(10 книг)
6) Шолле Ф. - Глубокое обучение на Python
7) Р.А. Бирбраер, И.Г. Альтшулер - Основы инженерного консалтинга
8) Грегори Дэвид Робертс  Шантарам
9) Сворень Р.А. - Электроника шаг за шагом
10) Десятое место разделили книги:
Пелевин Виктор - Собрание произведений
Гоголь Н.В. - Мертвые души

675

Новый Telegram бот для электронных книг

Вашему вниманию хотел бы представить своего бота для поиска и скачивания электронных книг в Телеграм https://t.me/boookovka_bot .
На написание своего бота меня побудила потребность быстрого поиска различной технической литературы. Я сам работаю программистом в одной из Екатеринбургских компаний, увлекаюсь машинным обучением, немного электроникой и конечно, люблю читать художественную литературу. Вначале нашел бота Флибуста, неплохой бот, достаточно много популярных книг, но почти нет книг по IT тематике. Такие книги я ищу на рутрекере, и выкачиваю торрентом. Это хорошо, когда ты работаешь с компьютера или ноутбука. Но часто я еду в дороге и смотрю лекции, где рекомендуют ту или иную книгу. Хотелось бы сразу найти ее и посмотреть содежание, предисловие. А так как я любитель Телеграм из-за его удобства и возможностей создания своих ботов для автоматизации повседневных задач, то решил почему бы не склепать робота, который содержит пополняемую базу книг, интересных мне тем, и который быстро бы смог найти и скачать необходимую книгу?
Сказано -- сделано, я начал с парсера для рутрекера, по пути изучая python либу scrapy. Наполнив базу magnet-линками, я принялся писать бота, который выполнял бы хотя бы функцию поиска.

Новый Telegram бот для электронных книг Telegram бот, Программирование, Golang, Postgresql, Книги, Длиннопост

На реализацию поиска ушло примерно полдня, я воспользовался обычным полнотекстовым поиском в postgresql. Далее, я на неделю ушёл в свою постоянную работу, попутно в фоне обдумывая план, как выкачивать книги. Идея оказалась примитивна. Обычно тяжелые долгие задачи нужно прятать в "фон", то есть когда боту приходит команда "скачай книгу X", бот ставит задание в очередь задач, откуда ее забирает фоновый процесс, и начинает выполнять задание. Так же и у меня, единственноая проблема была - как оповестить бота и клиента, что книга скачалась?
На этот счет у меня была уже своя реализация шины событий, тем более и брокер у меня уже был для фоновых задач rabbitmq. Теперь когда фоновый процесс скачает файл, он отправляет в шину событие в виде json-сообщения о том, что скачал и кто просил скачать, в свою очередь тот, кто подписан на события шины сообщений, а пока это только бот, парсит сообщение из шины и отдает файл клиенту.

Новый Telegram бот для электронных книг Telegram бот, Программирование, Golang, Postgresql, Книги, Длиннопост

На этом всё. Дальнейшие планы по развитию бота это введение "прогресс-бара", то есть следить за скачиванием файла и по шине событий слать данные, сколько скачалось уже. Также не реализовал постраничную навигацию. Ну и самая неприятная проблема -- РКН, они заблокировали api телеграмма, при этом в реестре я не нашёл записей api.telegram.org и его ip. Поэтому сейчас пока что приходится подключать бота через https прокси.
Еще одна проблема, это то, что телеграм накладывает ограничение на скачиваемый файл : не более 50Мб можно скачать. Об этом пока следует помнить, но я скоро все поправлю) Кардинально решится проблема сайтом - веб-мордочкой. Так что заранее прошу извинить за неудобства) Есть также планы делать оптимизацию и конвертацию в "легкие" форматы "налету".
Бот бесплатный и без навящивой рекламы, в основном делал для себя, но делюсь с миром, чтобы не простаивал зря. Спасибо за внимание.

Показать полностью 2

Мы ищем frontend-разработчика

Мы ищем frontend-разработчика

Привет!)


Мы открываем новую вакансию на позицию frontend-разработчика!

Как и в прошлые разы для backend-разработчиков (раз, два), мы предлагаем небольшую игру, где вам необходимо при помощи знаний JS, CSS и HTML пройти ряд испытаний!


Зачем всё это?

Каждый день на Пикабу заходит 2,5 млн человек, появляется около 2500 постов и 95 000 комментариев. Наша цель – делать самое уютное и удобное сообщество. Мы хотим регулярно радовать пользователей новыми функциями, не задерживать обещанные обновления и вовремя отлавливать баги.


Что надо делать?

Например, реализовывать новые фичи (как эти) и улучшать инструменты для работы внутри Пикабу. Не бояться рутины и командной работы (по чатам!).


Вам необходимо знать современные JS, CSS и HTML, уметь писать быстрый и безопасный код ;) Хотя бы немножко знать о Less, Sass, webpack, gulp, npm, Web APIs, jsDoc, git и др.


Какие у вас условия?

Рыночное вознаграждение по результатам тестового и собеседования, официальное оформление, полный рабочий день, но гибкий график. Если вас не пугает удаленная работа и ваш часовой пояс отличается от московского не больше, чем на 3 часа, тогда вы тоже можете присоединиться к нам!


Ну как, интересно? Тогда пробуйте ваши силы по ссылке :)

Если вы успешно пройдете испытание и оставите достаточно информации о себе (ссылку на резюме, примеры кода, описание ваших знаний), и если наша вакансия ещё не будет закрыта, то мы с вами обязательно свяжемся по email.

Удачи вам! ;)

Показать полностью
Отличная работа, все прочитано!