От архивов Флибусты до веб-библиотеки за 5 минут.

fb2

fb2index - специализированный веб-сервер/движок, созданный для быстрого поднятия библиотеки книг в формате FB2.

Отличительная особенность - "однокнопочный запуск": требуется только залить ZIP-архивы с книгами и файл самого движка, а потом просто запустить его - и библиотека готова.

Постановка задачи

Открыть в сети электронную библиотеку всегда было сложно.

Найдя подходящего хостера требовалось запустить веб-сервер, на него установить какую-то 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]

Работает очень быстро (в варианте "база данных в памяти"), требования к системе вполне небольшие.

...Короче говоря, с этим движком любой, действительно того желающий, может поднять таки свою персональную библиотеку объёма Флибусты.

Это - возможность, которой раньше не было. За что автору - большое спасибо.

 Пример запуска движка

 Чтобы убедиться самому (и убедить других), что новый движок прост и может быть использован даже не слишком опытным в компьютерных делах человеком, один из юзеров Флибусты запустил его на собственном компьютере (windows) и сделал скринкаст всех своих операций, пошагово.

Его можно посмотреть вот здесь: https://gifyu.com/image/Muxb

Ниже - текстовая инструкция.

1. Скачайте файл-архив fb2index_1.0.0_windows_386.zip на странице релизов по приведенной выше ссылке.

2. Распакуйте содержимое в любую удобную вам директорию.

(например - "FLIBUSTA")

3. Файл движка из архива переименуйте (для простоты) в fb2index.exe 

(можете оставить как есть, но тогда в п.6 учтите это и используйте правильное имя) 

4. Создайте поддиректорию для zip-архивов с книгами и поместите их туда

(например - "BOOKS"; туда можно закинуть любое число архивов с любым числом книг в каждом из них)

5. Рядом с файлом движка создайте файл start.bat

(например, создайте в директории "FLIBUSTA" текстовый файл start.txt и переименуйте его)

6. Откройте файл start.bat в блокноте и запишите туда следующее:

fb2index.exe -r BOOKS

Pause

7. Запустите файл start.bat

(откроется окно, в котором будет лог индексации файлов; по завершении индексации сервер библиотеки готов к работе)

8. Зайдите по адресу http://lockalhost:8080

(и можете использовать библиотеку) 

9. Для закрытия библиотеки - закройте окно с логом.

(то, что открылось в п.7)

10. Для более сложной настройки - см. раздел "Характеристики"

(там всё просто; даже не сталкиваясь - легко разобраться по аналогии) 

 Всё.

Это реально - пять минут работы. 

Замечания о выборе хостинга

 Если вы соберётесь поднять полную копию Флибусты, Либрусека, Траума и иных всеобъемлющих коллекций, да ещё для всеобщего доступа - учтите, что поступление абузов (жалоб) от правоторговцев практически неизбежно. Ищите абузостойкий хостинг. И желательно оффшорный (анонимный). И домен - где-нибудь подальше от зоны .ru и, опять же, анонимный.

Гораздо проще - вывести такие коллекции в сети Tor и/или I2P. Там нет заморочек с правообладателями.

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

И это стоит сделать - хотя бы ради тренировки... :) ...А там, глядишь, полученный опыт подскажет дальнейшие шаги.