Менее года назад на Хабре был анонсирован проект для организации домашней библиотеки под названием TinyOPDS. Отличная программа, действительно позволяет очень удобно организовать доступ к домашней библиотеке с читалок, на смартфонах, планшетах и возможно с электронных книг (если они могут подключаться к Интернет и имеют в своем арсенале клиента OPDS).
Все бы хорошо, но мой домашний сервер реализован на Linux и выполняет большое количество задач, такие как файл-сервер, медиаплейер, сервер телефонии, закачивает торренты и так далее. Еще одним желанием было организовать доступ к своей электронной библиотеке. Перерыв весь Интернет ничего подходящего кроме как Calibre найдено не было, но с ней случилось то-же, что и у автора TinyOPDS. Calibre сканировала книги крайне медленно. За несколько недель так и не получилось вогнать в нее всю мою библиотеку. TinyOPDS к моему сожалению предназначена для Windows-систем, хотя сейчас уже доступен консольный клиент и делаются попытки работы с ней в Linux c использованием библиотеки mono.
Но прогресс не стоит на месте, поэтому не так давно, в самом конце недавно ушедшего года на просторах интернета был обнаружен еще один проект, делающий ровно то, что мне и было нужно.

Называется проект Simple OPDS, сайт проекта: www.sopds.ru.

Проект Simple OPDS состоит из двух следующих компонентов, написанных на python:
  • sopds-scan.py — программа каталогизации. Рекурсивно обходит, указанный в конфигурационном файле каталог с электронными книгами, создавая каталог книг в БД MySQL;
  • sopds.cgi — cgi-скрипт для сервера, организующий доступ к электронному каталогу по протоколу OPDS.


Таким образом, сервером Simple OPDS не является, и для ее работы требуются дополнительные компоненты, такие как Web-сервер Apache и БД Mysql. Сам проект разработан в среде Fedora, для других систем специально не адаптировался, но сделать это по видимому несложно.
Проект не имеет GUI, что позволяет его использовать на устройствах NAS, которые в большинстве своем в качестве основы как-раз используют Linux-системы.

Основные возможности Simple OPDS


  • Рекурсивный обход, указанного в конфигурационном файле каталога.
  • Размещение в каталоге электронных книг, любых форматов, указанных в конфигурационном файле.
  • Извлечение метаинформации из электронных книг FB2 (название, авторы, жанр, язык).
  • Извлечение и показ обложек электронных книг FB2.
  • Обнаружение дубликатов книг.
  • Поиск книг в zip-архивах.
  • В каталоге доступны пять возможных сортировок: по каталогам, по авторам, по наименованиям, по жанрам, последние добавленные.
  • сортировка «по каталогам» полностью повторяет структуру каталогов библиотеки, что позволяет отыскать книгу в форматах pdf, djvu и других, из которых при сканировании метаинформация не извлекается.
  • Произвольный поиск книг по наименованию.
  • Можно задать ограничение выдачи элементов на страницу.
  • Архивация книг при скачивании.


Установка Simple OPDS в Fedora


1. Зависимости

Для работы проекта необходимо установить следующие зависимости:
yum install httpd
yum install mysql
yum install python3
yum install mysql-connector-python3

2. Установка

Загрузить проект можно с сайта www.sopds.ru.
Проект имеет следующую структуру:
opds — каталог проекта (можно задать свое имя каталога)
py — каталог с программами на Python
db — каталог инициализационные скрипты для создания БД
conf — каталог с файлом конфигурации
README.md — файл README

Для работы CGI-скрипта необходимо разрешить доступ к каталогу opds, например при помощи следующих директив конфигурационного файла web-сервера Apache httpd.conf:

<Directory "/home/www/opds">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all

Alias /opds "/home/www/opds"

3. Конфигурационный файл

Перед началом работы необходимо внести необходимые настройки в файл конфигурации ./conf/sopds.conf

4. Инициализация базы данных

Для работы каталога необходимо создать(пересоздать) базу данных sopds при помощи скрипта:
./db/db_create.sh

5. Сканирование каталога с книгами

Для сканирования каталога с электронными книгами запустить скрипт sopds-scan.py

6. Доступ к OPDS каталогу через WWW

Для сервера Apache необходимо разрешить запуск cgi-скрипта ./py/sopds.cgi
при помощи директивы, помещенной в .htacess:
Options ExecCGI
или
Options +ExecCGI

7. Использование OPDS каталога с устройств поддерживающих OPDS

Ввести OPDS каталог и следующий URL: your_domain_name/opds/py/sopds.cgi

Поскольку мой домашний сервер также функционирует под Fedora, то особых проблем по установке и настройке системы Simple OPDS у меня не возникло, и теперь я счастливый обладатель собственной библиотеки, доступной мне и моим близким с мобильных устройств.