COPS для MyHomeLib + [FB2]
Это форк проекта COPS 0.90 (Calibre OPDS PHP Server) для работы с базой программы MyHomeLib и локальными архивом Lib.Rus.Ec [FB2], флибусты или пользовательскими библиотеками, которые ведутся в программе.
MyHomeLib и архив библиотеки в данную сборку не включены! Их можно найти на торрентах поиском в гугле по запросу «lib.rus.ec myhomelib fb2».
- Статус форка — бета.
- На слабых серверах работает медленно, на Synology 213+ стартовый экран при первом запуске отдаёт за 3 секунды, на Synology 212j до 1 минуты (на нечищеной базе, читаем ниже)! Поиск по названию на 213+ 2-30 секунд, в зависимости от количества найденного, категорий поиска и установленных фильтров.
- 0.9.0.fb20140506. Первая версия релиза форка, отданная на сторону 🙂
- 0.9.0.fb20140512.
- Исправлены ошибки:
- Ощибка в функции getBooksByStartingLetter, возвращал неверное количество книг, из-за этого в подвале появлялись неработающие ссылки
- Добавлен вызов sqliteCreateCollation(‘MHL_SYSTEM_NOCASE’, . ), это недокументированная функция, отсутствие ее вызова приводило к падению программы на некоторых версиях PHP
- Починил поиск из OPDS FBReader
- Добавлено:
- Параметр $config[‘myhomelib_database’] для имени базы данных. Задел под флибусту
- Параметр $config[‘use_fb2_disk_cache’]. Сохранять ли кеш данных на диске сервера. Имеет смысл ставить в TRUE только если $config[‘get_metadata_from_fb2’] также TRUE.
- Параметр $config[‘cops_use_fb2_zip’] Упаковывать книги FB2 в zip-архив при выгрузке.
- Исправлены ошибки:
- 0.9.0.fb20140522.
- Добавлено:
- Все запросы проверены и приведены к совместимости с MySQL. Соответственно добавлены параметры в $config для использования базы MySQL. Конвертер уже есть, но пока не публичный.
- Небольшая оптимизация функции поиска.
- Из всех запросов удален литерал «Books.IsDeleted=0», вместо этого добавлен параметр $config[‘cops_global_del_filter’]. Отмена фильтрации по удаленным на медленных машинах сильно ускоряет запросы.
- Добавлен скрипт clear_db.php. Можно использвать при условии, что COPSFB использует КОПИЮ базы librusec_local_fb2.hlc2. Физически удаляет записи, помеченные как удаленные (Books.IsDeleted=1). Может удалить все книги с неиспользуемыми вами языками. Удаляет неиспользуемые COPSFB индексы. Сжимает (vacuum) базу. Все это позволяет при работе программы не использовать фильтры ( where ) по удаленным и по языку. Ускоряет работу программы в разы.
- Добавлено:
- 0.9.0.fb20140617.
- Исправления:
- Полностью переписан парсер fb2. По идее, должно теперь работать несколько быстрее, описание книги теперь вытаскивается корректно, перестал падать на невалидных fb2.
- Бэкпорт функции поиска из 1.0RC
- Правки для совместимости с OPDS-клиентом AlReader.Droid
- Добавлена функция очистки дискового кеша. Вызывается только при загрузке книги. Для ее работы два новых параметра в конфиге: $config[‘max_cache_size’] и $config[‘cache_clear_size’]
- Исправлено имя загружаемого файла, если user agent — Internet Explorer.
- Исправления:
- 0.9.0.fb20140720.
- Внимание! В этой версии изменены параметры настройки.
- 1. Все настройки, связанные с путями, вынесены в файл config_local.php.
- 2. $config[‘myhomelib_librusec_path’] больше не используется, удален.
- 3. $config[‘calibre_directory’] используется для указания директории с книгами (архивами книг).
- 4. $config[‘myhomelib_database’] теперь должен указывать не только имя БД, а путь и имя БД MyHomeLib, например $config[‘myhomelib_database’] = ‘./lib/librusec_local_fb2.hlc2’.
- Прошу прощения у всех, кто ставит update!
- Изменения:
- checkconfig.php теперь проверяет настройки путей, спецефичные для форка.
- Теперь поддерживаются пользовательские библиотеки MyHomeLib, но пока только fb2.
- Один экземпляр COPSFB может поддерживать несколько библиотек. Но все библиотеки должны быть одного типа — либо MyHomeLib, либо Calibre.
- 0.9.0.fb20141003.
- Добавлено:
- Поддержка библиотеки Траума. Тестировал на версии traum_library_2-33_all_ru, т.е. поддерживаются FB2 и non-FB2 книги.
- Новый параметр в настройках $config[‘cops_use_translit’] — переводить имена файлов при загрузке в транслит.
- Добавлено:
- 0.9.0.fb20150215.
- Исправления:
- Отправка книг по почте теперь работает и для MyHomeLib-библиотек. Должен быть правильно настроен параметр $config[‘cops_mail_configuration’].
- Исправления:
- 0.9.0.fb20160519.
- Добавлено:
- Новый параметр в настройках $config[‘cops_global_filter’] — глобальный фильтр для базы. SQL выражение, накладывающее фильтр на все выборки из БД. Можно использлвать, например, чтобы посмотреть обновления с заданной даты:
- $config[‘cops_global_filter’] = «date(books.[UpdateDate]) > date(‘2015-04-01’)»;
- В load_inp.php добавлен параметр $skip_genres, список жанров, которые не надо грузить.
- Новый параметр в настройках $config[‘cops_global_filter’] — глобальный фильтр для базы. SQL выражение, накладывающее фильтр на все выборки из БД. Можно использлвать, например, чтобы посмотреть обновления с заданной даты:
- Исправления:
- В opds_feed выдавались записи с пустым ID, что приводило к проблемам на некоторых OPDS клиентах.
- Несколько мелких исправлений в load_inp.php
- Добавлено:
- 0.9.0.fb20180422.
- Добавлено:
- Новый параметр в настройках $config[‘cops_series_order’] — Сортировка книг при выводе по автору по сериям или алфавиту
- Исправления:
- Несколько мелких исправлений в load_inp.php для корректной загрузки последнего обновления либрусек.
- Добавлено:
Требования при установке те же, что и для исходного COPS:
- PHP 5.3 / 5.4 with GD image processing & SQLite3 support;
- web server with PHP support (Nginx, Apache, Cherokee, Lighttpd, IIS);
- кроме того:
- + наличие на сервере внешнего разархиватора для zip, т.к. unzip в php не работает с архивами больше 2ГБ.
- + наличие на сервере (или «видимой» с сервера) базы данных MyHomeLib
- + наличие на сервере (или «видимой» с сервера) библиотеки
При работе над форком тестировалось под Windows 7/8.1 на XAMPP Version: 1.8.3 (Apache/2.4.7 (Win32) PHP/5.5.6) и на Synology 213+ (DSM 4.3-3810 Update 1 и 5.0-4482). Установка пакета аналогична прототипу и описана автором http://blog.slucas.fr/en/oss/calibre-opds-php-server.
Параметры конфигурации описаны на следующей странице.
Источник
Зачем нужны и как работают электронные каталоги OPDS
На GT мы уже рассказывали об истории и принципах работы форматов электронных книг DjVu, FB2 и его «младшего брата» FB3. Сегодня мы решили поговорить о стандарте, который помогает эти книги распространять. Расскажем, зачем нужны электронные каталоги OPDS и как они «устроены».
Что такое OPDS?
OPDS (Open Publication Distribution System) — это формат синдикации для электронных публикаций. Его цель — предоставить пользователям приложений и устройств для чтения возможность просматривать и скачивать книги из электронных библиотек.
Проект начали разрабатывать в апреле 2009 года. В нем приняли участие несколько организаций и компаний, включая Internet Archive, Feedbooks, O’Reilly и Lexcycle, занимавшаяся разработкой ПО для чтения электронной литературы. В основу стандарта положили технологии HTTP (RFC2616) и Atom (RFC4287).
Atom — это другой формат синдикации, основанный на XML. Он позволяет описывать наборы веб-ресурсов: новостные ленты, анонсы статей в блоге и так далее. По своей сути он похож на RSS и решает те же задачи, однако не имеет ряда его недостатков, в частности, он лучше стандартизирован (взаимоотношения между разными версиями RSS довольно запутанны — они могут быть несовместимы друг с другом). На сегодняшний день Atom поддерживает компания Google во многих своих проектах, например в Feedburner.
Что «внутри» OPDS-каталога
OPDS-каталоги позаимствовали концепцию фидов (feeds) и записей (entries) у формата Atom. По сути, фиды представляют собой контейнеры для записей и делятся на две категории: навигационные (navigation feeds) и загрузочные (acquisition feeds). Первые задают иерархию для поиска контента, а вторые — содержат списки записей с информацией о доступных публикациях. В каждой записи имеются метаданные: формат электронной книги, заголовок, способ получения и др.
Записи в списке представляют собой ссылки, которые или направляют пользователя к другому фиду, или предоставляют ему возможность скачать публикацию. В Atom, на котором основывается OPDS, ссылка представляет собой тег с атрибутом rel (relationship). Это отношение обозначает способ приобретения и правила предоставления литературы. Поддерживаются следующие варианты:
- открытый доступ без каких-либо ограничений;
- книга приобретается за деньги (цена отражается в ссылке);
- подписка на периодическое издание;
- фрагмент публикации (например, первая глава книги) для ознакомления.
На официальном сайте проекта OPDS приводится следующий пример оформления такой ссылки:
Если одна публикация доступна в нескольких форматах, то они представляются группой ссылок в одной записи:
Иногда ссылка не ведет к книге напрямую. Это происходит в том случае, если публикация запакована в zip-архив, где лежит несколько файлов (например, те же копии книги в разных форматах). Для описания «внутренностей» такого компонента используется элемент opds:indirectAcquisition, где типом является формат медиаэлемента:
А вот пример оформления ссылки для ситуации, когда публикация является платной. Атрибут currencycode определяет валюту:
Где найти OPDS-каталоги и как с ними работать?
Одними из первых начали использовать OPDS издатели и библиотеки. Позже к сообществу присоединились разработчики приложений-читалок и продавцы электронной литературы. Чаще всего они и выступают создателями OPDS-каталогов. Список самых популярных каталогов можно найти на сайте со спецификацией OPDS.
Например, там есть Feedbooks, который распространяет более 3 млн электронных книг каждый месяц. В коллекции Internet Archive находится почти 2 млн публикаций, а O’Reilly Media предлагает тысячи экземпляров технической литературы. Также можно выделить каталоги The Pragmatic Programmers и Revues.org.
В целом же в сети можно найти множество каталогов OPDS на разных языках. При этом у пользователей есть возможность сформировать собственный каталог, чтобы организовать доступ к своей книжной библиотеке с любого устройства. Есть даже специальные программы, которые могут с этим помочь. Например, такую утилиту предлагает FBReader — она основана на коде books.fbreader.org.
Работу с OPDS поддерживают и другие ридеры, в частности, Cool Reader, Bluefire Reader, QuickReader, AlReader и OReader. Последний является адаптацией AlReader специально для ридеров ONYX-BOOX, которую доработал сам создатель оригинального приложения. Читалка получила единое интерфейсное меню и встроенный сканер метаданных, используемых системой. Еще в OReader была добавлена поддержка технологии SNOW Field, которая не работает в AlReader. SNOW Field улучшает «перерисовку» страницы на экране с электронными чернилами, снижая количество артефактов при перелистывании (и исключает частые «заливки» дисплея черным).
Отметим, что некоторые приложения, хотя и работают с OPDS, не поддерживают мультимедийный контент. Отличаются программы и по количеству поддерживаемых форматов электронной литературы.
В целом же для работы с OPDS нужно подключить интересующие сетевые библиотеки. О том, как это сделать на читалках ONYX, можно узнать в одном из материалов на нашем сайте. После можно начать просматривать публикации, ориентируясь по фидам и спискам записей.
Отметим, что пользователь может находить нужные книги не только с помощью фидов, но и с помощью функции поиска. Поиск OPDS основан на формате Open Search. В этом случае создается отдельный XML-файл с описанием параметров поиска — OpenSearch Description. Вот пример заполнения такого файла из репозитория Open Search на GitHub:
Обычно он называется OpenSearch.xml и лежит в корне каталога.
/ Flickr / Dave Collie / CC
Развитие экосистемы
На сегодняшний день выпущено несколько спецификаций OPDS: это версии OPDS Catalog 0.9 (2010 год), OPDS Catalog 1.0 (2010 год) и OPDS Catalog 1.1 (2011 год), которая является последней выпущенной на сегодняшний день. Однако существует «черновик» новой версии стандарта — 1.2. В нем должен появиться функционал, который позволит сдавать книги в аренду, то есть выдавать их на определенный промежуток времени. Дополнительно будут добавлены новые атрибуты для типов медиаконтента, элементы для обозначения рейтинга и числа скачиваний книги, а также профили OPDS для пользователей.
При этом сообщество, в лице продавцов электронной литературы, рабочей группы OPDS и других участников индустрии, работает над спецификацией ODL (Open Distribution Libraries) и механизмов аутентификации OPDS, чтобы сделать возможной «горизонтальную» интеграцию библиотек и коммерческих сервисов, продающих книги, друг с другом.
Формат ODL уже используется распространителями электронной литературы для пересылки информации о лицензиях библиотекам (например, в Feedbooks). Что же касается новой версии OPDS 1.2, то пока её спецификация существует только в формате черновика (draft), а дата полноценного выхода стандарта остается неизвестной.
Источник
Opds cops не работает поиск
Please Войти or Create an account to join the conversation.
- blacklion
Topic Author —> - Offline
- Новый участник
Please Войти or Create an account to join the conversation.
- mitshel
—> - Offline
- Администратор
1) FreeBSD 10.3-STABLE
2) sqlite3 3.20.1 + py-sqlite3 3.4.7
3) apache 2.2, mod_wsgi 3.4.8, sopds.wsgi из поставки
4) git diff показывает, что отличаетс яодна строчка: путь к базе SQLite (вмеcто «os.path.join(BASE_DIR, ‘db.sqlite3’)»)
5)
SOPDS_SCAN_START_DIRECTLY True
SOPDS_AUTH True
SOPDS_COVER_SHOW True
SOPDS_SERVER_LOG /usr/home/hosted/opds/log/sopds_server.log
SOPDS_DOUBLES_HIDE True
SOPDS_SCANNER_PID /usr/home/hosted/opds/tmp/sopds_scanner.pid
SOPDS_ZIPSCAN True
SOPDS_INPX_SKIP_UNCHANGED True
SOPDS_SPLITITEMS 300
SOPDS_SCAN_SHED_DOW *
SOPDS_INPX_ENABLE False
SOPDS_SERVER_PID /usr/home/hosted/opds/tmp/sopds_server.pid
SOPDS_TITLE_AS_FILENAME True
SOPDS_SCAN_SHED_DAY *
SOPDS_DELETE_LOGICAL False
SOPDS_FB2SAX True
SOPDS_INPX_TEST_FILES False
SOPDS_FB2TOEPUB /usr/home/hosted/opds/backup/fb2epub
SOPDS_FB2TOMOBI /usr/home/hosted/opds/backup/fb2mobi
SOPDS_ZIPCODEPAGE cp866
SOPDS_SCAN_SHED_HOUR 0,12
SOPDS_LANGUAGE en-US
SOPDS_MAXITEMS 60
SOPDS_ROOT_LIB /usr/home/hosted/opds/data/fb2.Flibusta.Net
SOPDS_TEMP_DIR /usr/home/hosted/opds/tmp
SOPDS_INPX_TEST_ZIP False
SOPDS_BOOK_EXTENSIONS .pdf .djvu .fb2 .epub .mobi
SOPDS_ALPHABET_MENU True
SOPDS_NOCOVER_PATH /usr/home/hosted/opds/sopds/static/images/nocover.jpg
SOPDS_SCANNER_LOG /usr/home/hosted/opds/log/sopds_scanner.log
SOPDS_SCAN_SHED_MIN 0
P.S. В форме редактора сообщения не вводятся переводы строк в FireFox 56 на Windows.
Please Войти or Create an account to join the conversation.
- blacklion
Topic Author —> - Offline
- Новый участник
Please Войти or Create an account to join the conversation.
- mitshel
—> - Offline
- Администратор
Вот всё, что сказано про Virtual Host этого сервера (перед ним стоит прозрачно nginx, поэтому тут 127.0.0.1, но конфиг nginx там в 3 строки: proxy_pass и всё.):
ServerAdmin Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
DocumentRoot /usr/home/hosted/opds/www/SERVER-NAME-HIDDEN/data
CustomLog /usr/home/hosted/opds/www/SERVER-NAME-HIDDEN/log/httpd-access.log combined
ErrorLog /usr/home/hosted/opds/www/SERVER-NAME-HIDDEN/log/httpd-error.log
LogLevel debug
Options ExecCGI Indexes
DirectoryIndex sopds.wsgi
Alias /static/ «/usr/home/hosted/opds/sopds/static/»
Options -ExecCGI -Indexes
И при заходе на /web/ авторизация (та, что basic) не спрашивается.
Да, если бразуером сначала залогиниться в /web/ через форму, то потом и в /opds/ пускает, но FBReader / ALReader так не могут.
Please Войти or Create an account to join the conversation.
Источник