689

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

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

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

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

Автор поста оценил этот комментарий

Парень! Убирай быстро - правообладатели по судам затаскают...... Не ты первый к сожалению....

раскрыть ветку (1)
8
Автор поста оценил этот комментарий
Телеграм заблокирован на территории России по-умолчанию.
показать ответы
1
Автор поста оценил этот комментарий

наверняка у вас подобралась библиотека по машинному обучению. Хотелось бы посмотреть. Не важно в каком виде хоть принтскрин

раскрыть ветку (1)
4
Автор поста оценил этот комментарий
Я сейчас читаю Глубокое обучение наших отечественных авторов С. Николенко и др. Еще для входа Верховный Алгоритм. Смотрю курсы deeplearning.ai от Andrew Ng
Иллюстрация к комментарию
показать ответы
0
Автор поста оценил этот комментарий

Добрый молодец, объясни мне, глупому, как подключить к телеграм боту https прокси? Только начинаю свой путь в программировании, я так понимаю вы пишете на python? Если да, то скорее всего используете pytelegrambotapi, там вроде есть встроенная функция подключения https прокси, но никак не могу разобраться, не работает
Пока тестирую приходится vpnить весь пк и запускать так
А так же как добавить кнопку скачать, тут уже просто не гуглил, может вы быстрее и подробнее гугла расскажете :)

раскрыть ветку (1)
3
Автор поста оценил этот комментарий
Если вы на linux, то пропишите перед запуском переменную окружения http_proxy или https_proxy . На счет Windows наверное также.
показать ответы
0
Автор поста оценил этот комментарий
Не работает
Иллюстрация к комментарию
раскрыть ветку (1)
3
Автор поста оценил этот комментарий
Да, есть такая проблема, что апи телеграм ограниченивает размер скачиваемого файла в 50Мб. Проблема решаема и думаю, скоро поправлю. Извините за неудобства =)
показать ответы
1
DELETED
Автор поста оценил этот комментарий

Красавчик) Писал на Go? То есть прога по сути скомпилирована?

раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Да, go. Парсер на python
показать ответы
0
Автор поста оценил этот комментарий

Благодарю за бот, очень кстати. Не совсем по теме, @isqad , порекомендуйте, пожалуйста, обучающую литературу с нуля по С++ на Ваш вкус и мнение

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
C++ Страуструпа. Объектно-ориентированное программирование на C++
показать ответы
3
Автор поста оценил этот комментарий

Позвольте вставить свои пять копеек советов/предложений.

1. Набрал в поиске python. Вышло штук 5 книг. Из них книга 2008 года. Как я понимаю это не все книги, что нашел бот. Но может сделать сортировку по дате от свежего к старому? Для тех литературы это актуально.

2. Поиск с учётом языка.

3. Как я понимаю вы используется какой-то стемминг слов? Хотел книги по pandas,  бот выдал книги по panda)


А вцелом спасибо, удобно.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Хорошо, записал себе в блокнот
показать ответы
2
Автор поста оценил этот комментарий

вообще-то заход на телегу и lib.rus.ec с ЛЮБОГО ip в РФ - входной тест на профпригодность при приеме ИТ специалиста (где рулят приемом именно IT а не HR)...

Мало того - RT  на русском, страницы вендоров и тд сидят почему-то в телеге.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Ну у меня вообще книги не хранятся, если честно)
показать ответы
0
Автор поста оценил этот комментарий
Класс! А по автору работает поиск?
раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Добавлю, я что-то ступил сначала, надо сразу было добавить. Сейчас работает, если только автор в названии указан.
показать ответы
1
Автор поста оценил этот комментарий
Супер! Спасибо!
А для художественной литературы, не планируете сделать бот?
раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Уже имеется в нем база и художественной литературы) Есть ограничение только, что скачать больше 50Мб телеграм не даст. Но это думаю уже решить, сделав сайт - веб-мордочку)
показать ответы
0
Автор поста оценил этот комментарий
Барную литературу.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Гляньте сейчас
Иллюстрация к комментарию
показать ответы
1
Автор поста оценил этот комментарий
Зип сам распаковывается
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Надо подумать, хорошая идея
0
Автор поста оценил этот комментарий
Разрубить архив на части
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Простые люди, которые далеки от ит не смогут собрать же
показать ответы
0
Автор поста оценил этот комментарий
Барную литературу.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Пошел парсить) Что нибудь найдется думаю, как залью, напишу
4
Автор поста оценил этот комментарий
По поводу блокировки - арендуй хостинг за рубежом и будет тебе счастье. Можно какой-нибудь не особо дорогой, долларов за пять. А так крутая тема. Думал тоже что-то подобное сделать,но без рутрекера. Просто чтобы человек файл загружал и бот запоминал его id, а потом отдавал по названию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Уже перенёс буковку на сторонний хостинг. Чувствует себя значительно лучше
0
Автор поста оценил этот комментарий
Сегодня был "жаркий" денек для бота. Нашел несколько багов. И положил сеть udp пакетами)
0
Автор поста оценил этот комментарий

@isqad, А можете рассказать подробнее про шину сообщений. С помощьтю чего реализована шина, и как она ложится на серверного бота, ведь, как я понимаю, она должна взаимодействовать с клиентом

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Шина сообщений внутри это просто очередь rabbitmq с exchange типа fanout, чтобы рассылать всем подписчикам. Это сделано для дальнейшего расширения функционала, например, воркер скачав книгу шлет сообщение о том, что "скачал", подписчик, например бот, получает это сообщение и шлет клиенту файл. Одновременно, например, сервис баннеров тоже получает сообщение о том, что скачано и шлет в шину сообщение с баннером, которое подхватывает бот и шлет баннер клиенту. Это утрированный пример. Таким образом у нас по сути получается сервисная архитектура, где сервисы общаются по шине событий. Вот такой "велик" получается :)
показать ответы
0
Автор поста оценил этот комментарий
МММ...а бот от флибусты уже не котируется? Молодец что создал своего бота(новый челендж и экспириенс) но тем не менее, это похоже на изобретение велосипеда)
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Для сравнения запрос Глубокое обучение. Я писал об этой проблеме в посте :)
Иллюстрация к комментарию
Иллюстрация к комментарию
0
Автор поста оценил этот комментарий
Нужна ли вебморда? Качать на свой сервак файл и давать временную ссылку на него прям в телегу
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Нет сервака) И книги хранятся только в момент передачи в телеграм. Думаю, наскребу на сервер скоро
1
Автор поста оценил этот комментарий

спасибо, полезный канал. лови соточку))

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Спасибо)
0
Автор поста оценил этот комментарий
А ещё будут добавления? Уже подписалась и пару книг скачала, ещё поделилась с мамой и сестрой! Спасибо тебе человек!
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Подпишитесь на канал, который в описании бота, обновления постараюсь выгружать каждый день
показать ответы
0
Автор поста оценил этот комментарий
Можно просто ссылки, наверно.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Сделал, отдает magnet ссылки, которые можно в torrent - клиент вставить и тем самым скачать. В play market есть полно клиентов.
1
Автор поста оценил этот комментарий

а поиск по аудиокнигам есть в телеге?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Я сам искал, не нашел. Есть планы научиться конвертировать обычные книги в аудио.
1
Автор поста оценил этот комментарий
Очень крутой бот, но нужной литературы так и не нашёл (
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
А что искали?
показать ответы
0
DELETED
Автор поста оценил этот комментарий

Спасибо! Всё работает.
Добавь в боте команду для показа реквизитов криптокошельков для доната.

Иллюстрация к комментарию
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
мой Btc 16HmzxqpfN9xsoJHgRvfACLV6LBCKecrC4 для чачешки кофе
Добавлю команду, спасибо))
показать ответы