- PVSM.RU - https://www.pvsm.ru -

Зачем нужны и как работают электронные каталоги OPDS

На GT мы уже рассказывали об истории и принципах работы форматов электронных книг DjVu [1], FB2 и его «младшего брата» FB3 [2]. Сегодня мы решили поговорить о стандарте, который помогает эти книги распространять. Расскажем, зачем нужны электронные каталоги OPDS и как они «устроены».

Зачем нужны и как работают электронные каталоги OPDS - 1 [3]
/ Flickr / Gael Varoquaux [4] / CC [5]

Что такое OPDS?

OPDS (Open Publication Distribution System) — это формат синдикации [6] для электронных публикаций. Его цель — предоставить пользователям приложений и устройств для чтения возможность просматривать и скачивать книги из электронных библиотек.

Проект начали разрабатывать в апреле 2009 года. В нем приняли участие несколько организаций и компаний, включая Internet Archive [7], Feedbooks, O'Reilly и Lexcycle, занимавшаяся [8] разработкой ПО для чтения электронной литературы. В основу стандарта положили технологии HTTP (RFC2616 [9]) и Atom (RFC4287 [10]).

Atom — это другой формат синдикации, основанный [11] на XML. Он позволяет описывать наборы веб-ресурсов: новостные ленты, анонсы статей в блоге и так далее. По своей сути он похож на RSS и решает те же задачи, однако не имеет ряда его недостатков, в частности, он лучше стандартизирован (взаимоотношения между разными версиями RSS довольно запутанны — они могут быть несовместимы [12] друг с другом). На сегодняшний день Atom поддерживает компания Google во многих своих проектах, например в Feedburner [13].

Что «внутри» OPDS-каталога

OPDS-каталоги позаимствовали [14] концепцию фидов (feeds) и записей (entries) у формата Atom. По сути, фиды представляют собой контейнеры для записей и делятся [15] на две категории: навигационные (navigation feeds) и загрузочные (acquisition feeds). Первые задают иерархию для поиска контента, а вторые — содержат списки записей с информацией о доступных публикациях. В каждой записи имеются метаданные: формат электронной книги, заголовок, способ получения и др.

Записи в списке представляют [14] собой ссылки, которые или направляют пользователя к другому фиду, или предоставляют ему возможность скачать публикацию. В Atom, на котором основывается OPDS, ссылка представляет собой тег с атрибутом rel (relationship). Это отношение обозначает способ приобретения и правила предоставления литературы. Поддерживаются следующие варианты:

  • открытый доступ без каких-либо ограничений;
  • книга приобретается за деньги (цена отражается в ссылке);
  • подписка на периодическое издание;
  • фрагмент публикации (например, первая глава книги) для ознакомления.

На официальном сайте проекта OPDS приводится следующий пример оформления такой ссылки:

<link rel="http://opds-spec.org/acquisition"
      type="video/mp4v-es"
      href="/content/free/4561.mp4"/>

Если одна публикация доступна в нескольких форматах, то они представляются группой ссылок в одной записи:

<link rel="http://opds-spec.org/acquisition/borrow"
      href="/content/borrow/4561.mobi"
      type="application/x-mobipocket-ebook"/>

<link rel="http://opds-spec.org/acquisition/borrow"
      href="/content/borrow/4561.epub"
      type="application/epub+zip"/>

Иногда ссылка не ведет к книге напрямую. Это происходит в том случае, если публикация запакована в zip-архив, где лежит несколько файлов (например, те же копии книги в разных форматах). Для описания «внутренностей» такого компонента используется элемент opds:indirectAcquisition, где типом является формат медиаэлемента:

<link type="application/zip" rel="http://opds-spec.org/acquisition/open-access" href="/item/1111/buy/">
  <opds:indirectAcquisition type="application/epub+zip" />
  <opds:indirectAcquisition type="application/pdf" />
  <opds:indirectAcquisition type="application/x-mobipocket-ebook" />
</link>

А вот пример оформления ссылки для ситуации, когда публикация является платной. Атрибут currencycode определяет валюту:

<link rel="http://opds-spec.org/acquisition/buy"
      href="/product/song1.mp3"
      type="audio/mpeg">
  <opds:price currencycode="USD">1.99</opds:price>
</link>

Где найти OPDS-каталоги и как с ними работать?

Одними из первых начали использовать OPDS издатели и библиотеки. Позже к сообществу присоединились [16] разработчики приложений-читалок и продавцы электронной литературы. Чаще всего они и выступают создателями OPDS-каталогов. Список самых популярных каталогов можно найти на сайте со спецификацией [16] OPDS.

Например, там есть Feedbooks, который распространяет более 3 млн электронных книг каждый месяц. В коллекции Internet Archive находится [17] почти 2 млн публикаций, а O'Reilly Media предлагает [18] тысячи экземпляров технической литературы. Также можно выделить каталоги The Pragmatic Programmers [19] и Revues.org [20].

В целом же в сети можно найти множество каталогов OPDS на разных языках. При этом у пользователей есть возможность сформировать собственный каталог, чтобы организовать доступ к своей книжной библиотеке с любого устройства. Есть даже специальные программы, которые могут с этим помочь. Например, такую утилиту предлагает [21] FBReader — она основана на коде books.fbreader.org [22].

Работу с OPDS поддерживают и другие ридеры, в частности, Cool Reader, Bluefire Reader, QuickReader, AlReader и OReader. Последний является адаптацией AlReader специально для ридеров ONYX-BOOX, которую доработал сам создатель оригинального приложения. Читалка получила [23] единое интерфейсное меню и встроенный сканер метаданных, используемых системой. Еще в OReader была добавлена поддержка технологии SNOW Field, которая не работает в AlReader. SNOW Field улучшает [24] «перерисовку» страницы на экране с электронными чернилами, снижая количество артефактов при перелистывании (и исключает частые «заливки» дисплея черным).

Отметим, что некоторые приложения, хотя и работают с OPDS, не поддерживают мультимедийный контент. Отличаются программы и по количеству поддерживаемых форматов электронной литературы.

В целом же для работы с OPDS нужно подключить интересующие сетевые библиотеки. О том, как это сделать на читалках ONYX, можно узнать в одном из материалов [25] на нашем сайте. После можно начать просматривать публикации, ориентируясь по фидам и спискам записей.

Отметим, что пользователь может находить нужные книги не только с помощью фидов, но и с помощью функции поиска. Поиск OPDS основан на формате Open Search [26]. В этом случае создается отдельный XML-файл с описанием параметров поиска — OpenSearch Description. Вот пример [27] заполнения такого файла из репозитория Open Search на GitHub:

<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
  <ShortName>Web Search</ShortName>
  <Description>Use Example.com to search the Web.</Description>
  <Tags>example web</Tags>
  <Contact>admin@example.com</Contact>
  <Url type="application/rss+xml"
       template="http://example.com/?q={searchTerms}&pw={startPage?}&format=rss"/>
</OpenSearchDescription>

Обычно он называется OpenSearch.xml и лежит в корне каталога.

Зачем нужны и как работают электронные каталоги OPDS - 2
/ Flickr / Dave Collie [28] / CC [5]

Развитие экосистемы

На сегодняшний день выпущено несколько спецификаций OPDS: это версии OPDS Catalog 0.9 (2010 год), OPDS Catalog 1.0 (2010 год) и OPDS Catalog 1.1 (2011 год), которая является последней выпущенной на сегодняшний день. Однако существует «черновик» новой версии стандарта — 1.2. В нем должен появиться [29] функционал, который позволит сдавать книги в аренду, то есть выдавать их на определенный промежуток времени. Дополнительно будут добавлены новые атрибуты для типов медиаконтента, элементы для обозначения рейтинга и числа скачиваний книги, а также профили OPDS для пользователей.

При этом сообщество, в лице продавцов электронной литературы, рабочей группы OPDS и других участников индустрии, работает [29] над спецификацией ODL (Open Distribution Libraries) и механизмов аутентификации OPDS, чтобы сделать возможной «горизонтальную» интеграцию библиотек и коммерческих сервисов, продающих книги, друг с другом.

Формат ODL уже используется [30] распространителями электронной литературы для пересылки информации о лицензиях библиотекам (например [31], в Feedbooks). Что же касается новой версии OPDS 1.2, то пока её спецификация существует [32] только в формате черновика (draft), а дата полноценного выхода стандарта остается [33] неизвестной.


P.S. Предлагаем вам тройку обзоров ридеров ONYX BOOX:


Автор: IvanPavlov

Источник [37]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/planshety/280957

Ссылки в тексте:

[1] DjVu: https://geektimes.com/company/maccentre/blog/299737/

[2] FB2 и его «младшего брата» FB3: https://geektimes.com/company/maccentre/blog/300385/

[3] Image: https://geektimes.com/company/maccentre/blog/301145/

[4] Gael Varoquaux: https://www.flickr.com/photos/gaelvaroquaux/25533137127/

[5] CC: https://creativecommons.org/licenses/by/2.0/

[6] синдикации: https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BB%D0%B5%D0%B2%D0%B8%D0%B7%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F

[7] Internet Archive: http://archive.org/bookserver

[8] занимавшаяся: https://en.wikipedia.org/wiki/Lexcycle

[9] RFC2616: http://www.ietf.org/rfc/rfc2616.txt

[10] RFC4287: http://www.ietf.org/rfc/rfc4287.txt

[11] основанный: https://ru.wikipedia.org/wiki/Atom

[12] могут быть несовместимы: http://old.computerra.ru/2006/650/282802/

[13] Feedburner: https://en.wikipedia.org/wiki/FeedBurner

[14] позаимствовали: http://www.feedbooks.com/api/primer

[15] делятся: http://opds-spec.org/specs/opds-catalog-1-1-20110627/

[16] присоединились: http://opds-spec.org/about/

[17] находится: http://bookserver.archive.org/catalog/

[18] предлагает: http://opds.oreilly.com/opds/

[19] The Pragmatic Programmers: http://pragprog.com/catalog.opds

[20] Revues.org: http://bookserver.revues.org/

[21] предлагает: https://ru.fbreader.org/content/opds-creation-tool-fbreaderorg

[22] books.fbreader.org: https://books.fbreader.org/

[23] получила: http://www.the-ebook.org/forum/viewtopic.php?p=1226725&sid=8a7d89b86c5a8ddafc0ff65b781ddc63

[24] улучшает: https://onyxboox.by/novosti/?record_id=14

[25] материалов: https://onyx-boox.ru/review/ebook-onyx-boox-i63ml-newton-z-alexey/

[26] Open Search: http://www.opensearch.org/Home

[27] пример: https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#opensearch-description-document

[28] Dave Collie: https://flic.kr/p/YpHxqv

[29] появиться: http://www.librarysimplified.org/OPDS.html

[30] используется: https://github.com/NYPL-Simplified/Simplified/wiki/StandardsDocuments

[31] например: https://docs.google.com/document/d/1jaHZSsMCZY80rH5sqJcp_kya0W2Dtkda7MrdFBkrOg8/

[32] существует: https://code.google.com/archive/p/openpub/

[33] остается: https://en.wikipedia.org/wiki/OPDS

[34] Каждый ридер хочет стать монитором: обзор ONYX BOOX MAX 2: https://onyx-boox.ru/review/ebook-onyx-boox-max2-geektimes/

[35] Технологии против «античности»: обзор ридера ONYX BOOX Chronos: https://onyx-boox.ru/review/ebook-onyx-boox-chronos-geektimes/

[36] Царица изволит почитать: обзор электронной книги ONYX BOOX Cleopatra 3: https://onyx-boox.ru/review/ebook-onyx-boox-cleopatra3-geektimes/

[37] Источник: https://geektimes.com/post/301145/?utm_campaign=301145