От архивов Флибусты до веб-библиотеки за 5 минут
fb2index — веб-сервер библиотеки fb2-книг, мануал
Постановка задачи
Открыть в сети электронную библиотеку всегда было сложно.
Найдя подходящего хостера требовалось запустить веб-сервер, на него установить какую-то CMS, снабдить её модулем с собственно электронной библиотекой, настроить это всё. Убедиться, что оно работает. И только после этого приступить к наполнению библиотеки книгами, попутно исправляя вылезающие баги и косяки.
Неудивительно, что библиотеки в сети создавали люди, имеющие опыт сисадмина и/или программиста.
Вот, например, инструкция по поднятию клона широко известного Либрусека:
howto по установке Либрусека (v0.31)
Либрусек разрабатывается как модуль друпала. Можно прикрутить и к другой cms, но это потребует определённых усилий. Должно быть не слишком сложно. Но бессмысленно. По объему кода представляет из себя 20% друпала 6.0 - 6000 строк 300 килобайт php. Всё тестировалось исключительно с Apache/MySQL5 под линуксом, должно работать и с другими серверами, не проверял. Видимо, потребует напильника. (однако, Apache-специфичных вещей вроде бы не используется, поэтому достаточно любого веб сервера, хоть на fastcgi.)
...
полностью - здесь: https://github.com/larin/librusec
Не всякий разберётся. И возьмутся за это единицы. Собственно, после Либрусека их и были единицы: Флибуста (как самый известный случай), да еще три-четыре малоизвестных клона (не доживших до наших дней).
Так жить нельзя, подумал Н., юзер Флибусты[1] и программист. И поставил перед собой задачу:
Zero-config развёртывание библиотеки из набора zip-архивов
отправлено 2 года назад
Разрабатывается приложение для быстрого поднятия библиотеки FB2, с нулевой конфигурацией: кинул архивы, запустил бинарник - и библиотека готова. (...) Требуются тестеры потыкать по ссылкам, зарепортить встреченные баги. Желающим кину ссылку в приват.
Так родился движок fb2index
Характеристики
14.11.2016 движок был опубликован (в теме на Флибусте, см. https://flisland.net/node/349288)
От архивов Флибусты до веб-библиотеки за 5 минут
Ладно, не за пять. Мои 88 файлов прожёвывает за 15 минут.
Короче, библиотечка в духе минимализма: исходный код[2] и скриншоты[3].
Возможно, кому-то пригодится.
Использование:
fb2index.exe ПУТЬ_К_ZIP_ФАЙЛУ
или
fb2index.exe -r ПУТЬ_К_КАТАЛОГУ_С_ZIP_ФАЙЛАМИ
После индексации книг, каковая займёт некоторое время, можно заходить на http://localhost:8080 и начинать пользоваться библиотекой.
Другой адрес и порт можно указать с помощью опции -http АДРЕС:ПОРТ (или -http :ПОРТ).
База данных по умолчанию хранится в оперативной памяти. Чтобы сохранить её на диск, укажите опцию -db ПУТЬ_К_БД.
UPDATE (4 Oct 2017):
Не прошло и года, как появилась сборка для Windows.
На этом можно было бы и завершить описание, но имеет смысл уточнить про скорость работы с архивами:
Индексация одного 2.5Гб ZIP-архива с FB2 занимает у меня на машине 20 с, на VPS от DigitalOcean - 9 с.
Итак, индексация полного архива (88 файлов) заняла ровно 15 минут. Поисковый индекс занял 55 мб, а весь процесс (с базой данных в оперативной памяти) - 900 мб.
Упомянутые 88 файлов-архивов - это стандартные zip-архивы с содержимым Флибусты (только fb2), распространяемые через торренты (напр. https://booktracker.org/viewforum.php?f=245). Сейчас уже больше... :) ...Каждый - примерно по 2,5 гигабайта.
Т.е. после запуска fb2index полная копия Флибусты становится доступной в сети через 15-30 минут, в зависимости от мощности компьютера.
Где скачать?
https://gitlab.com/opennota/fb2index/-/releases
Скриншоты
Общий список книг
Страничка книги
Страничка "читать книгу"
Поиск по библиотеке
Страничка автора
Страничка жанров
Перечень книг по жанру
Перечень авторов
Перечень книжных серий
Способы использования
Способы использования fb2index ограничены только фантазией создателя библиотеки. Возможные примеры (из обсуждения на Флибусте):
Его достоинство - поднимать апач, потом ещё php и sql, да ставить друпал, да на него накладывать ларинский движок, да потом всё это долго настраивать - всего этого не надо!
Уже сейчас запустить движок может любой линуксоид (ибо сборка стандартная, парой команд), а если автор таки скомпилирует движки (и для Винды, да)[4], то и вовсе всё будет молниеносно.
Достоинства очевидны.
Недостатки: вся работа по улучшению книг д.б. произведена с файлами книг. Что лежит в архивах - то и будет в выдаче. Это недостаток для коллективной работы, типа как на Флибусте, но мелочь для "авторских" библиотек, которые делает один человек. Он и так будет работать главным образом с файлами - подбор, отсев дублей, улучшение и т.п.
Также - оформление выдачи. Оно жёсткое, минималистичное, изменить его произвольно нельзя. (По мне так тоже невелик недостаток... Главное, что книги ищутся - а поиск работает оч.хорошо, скачиваются, опционально читаются)
Возможные применения: широчайшие. От "сам себе Флибуста" (скачал торренты, залил на хостинг, запустил...) до "библиотека избранных книг" (долго подбирал, выложил). Могут работать несколько человек - каждый подбирает книги и оформляет их в архив (например - ПСС какого-то автора, "вылизанное" до максимальной возможности), присылает (возможно - сразу заливает на хостинг, если это "доверенное лицо"). Дальше только переиндексировать (15 минут, ага) и - всё в доступе.
Думаю, что в паре с ТорЭкспертом этот движок и скрытый сервис может.[5]
Работает очень быстро (в варианте "база данных в памяти"), требования к системе вполне небольшие.
...Короче говоря, с этим движком любой, действительно того желающий, может поднять таки свою персональную библиотеку объёма Флибусты.
Это - возможность, которой раньше не было. За что автору - большое спасибо.
Пример запуска движка
Чтобы убедиться самому (и убедить других), что новый движок прост и