Телеграм бот для скачивания книг из своей локальной библиотеки на своем серврере
Доброго времени суток, Пикабушники! Случилось тут со мной, что я намутил свой телеграм бот для скачивания книг со своего сервера. Библиотека должна быть в формате inpx (например копия флибусты, скаченная с любого удобного трекера).
Бот я задумал совсем давно, когда столкнулся в принципе с такими ботами. И мне в голову пришла мысль, а почему бы и да? (тут хочу уточнить, я не программист и программировать я не умею). С этим вопросом я обратился в интернет
Первым делом я обратился к нейросетям, они меня конечно поняли, но со своей, извращенной логикой. И как я им не объяснял, что мне нужно, нормальную реализацию моей задумки мне получить так и не удалось. Затык был в парсинге книг из inpx и в принципе в нормальном поиске и скачивании книг (по сути во всем), но какой-никакой костяк они мне дали. Решив, что так жить нельзя, а в одном месте все так же свербит, я пошел на Авито в поиске настоящего программиста, которого я там и нашел. Объяснив задачу и несколько раз объяснив что такое inpx (я раньше думал, что после получения задачи, программист сам способен выяснить технические детали с чем ему нужно работать), он сделал мне полностью рабочего бота, который парсил inpx и даже выдавал результаты поиска и позволял скачивать найденное!
Но у этого бота было множество минусов! Во-первых, все данные он держал в ОЗУ (оперативной памяти), т.е при каждом перезапуске бота, он заново парсил весь inpx. Во-вторых были проблемы с отображением результатов (уже и не вспомню какие), плюс, он был чувствителен к регистру. В третьих, все переменные он держал внутри тела бота, что на мой взгляд было очень неудобно, искать среди всего кода куда и с чем ему работать. Но, так как у меня уже был рабочий бот, с исходниками можно было обратиться к нейросетям. Мой выбор пал на Grok, от Илона нашего Маска!
Нейросети очень сильно помогли мне с этим. Так, я научил бота создавать бд в SQL, куда сохранялись все спарсенные книги, чтобы не выполнять каждый раз парсинг при запуске бота. Переработал сам парсер, изначально он был на Python, но пришлось переписать его на GO и переложил всю работу с парсингом и вставкой книг в SQL на него (парсинг ускорился в несколько раз, с 7-8 минут на версии Python до 48-50 секунд на версии GO после компиляции) Сейчас бот нечувствителен к регистру, все перменные для работы находятся в .env файле, но у него есть ряд ограничений. Он ищет книги только на русском языке, в форматах fb2 и epub. Все остальные языки и форматы игнорируются. В рабочем режиме, после парсинга, бот потребляет не более 70 мегабайт ОЗУ, что делает возможным его запуск на микрокомпьютерах вроде Orange pi. Для запуска бота, вам потребуется сама библиотека, Python, SQL с пользователем, который может создавать и изменять бд в ней. Все переменные указываются в файле .env Сами исходники и версия с парсером на Go лежат тут https://disk.yandex.ru/d/EF36zcqYdp_01A
Совсем забыл! Токен для бота нужно получить в @botfather и указать его в .env файле! Пример файла лежит в папке с ботом! Просто замените или укажите в нем свои значения. Файл должен лежать в одной папке с ботом. Путь к inpx не абсолютный, обычно этот файл лежит впапке с zip книг. В env указываете только адрес папки с zip, бот сам обнаружит inpx и начнет парсинг



