/ Flickr / Gael Varoquaux / CC
Что такое 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 приводится следующий пример оформления такой ссылки:
<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 издатели и библиотеки. Позже к сообществу присоединились разработчики приложений-читалок и продавцы электронной литературы. Чаще всего они и выступают создателями 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:
<?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 и лежит в корне каталога.
/ 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), а дата полноценного выхода стандарта остается неизвестной.
P.S. Предлагаем вам тройку обзоров ридеров ONYX BOOX:?
Комментарии (26)
Gryphon88
24.05.2018 16:08+1Электронные книги… в аренду… в стандарте… Что-то сильно пошло не так.
KatbertW
24.05.2018 18:03+1А что, могло бы быть удобно, чтобы понять хотите вы это читать или не очень. Как в книжный полистать литературу сходил. А может в будущем будут VR-библиотеки, тогда фраза "сдал электронную книгу в аренду" примет иной смысл
iig
24.05.2018 18:03Так OPDS != Даром.
Gryphon88
24.05.2018 18:23-1Я не против заплатить. меня формат сильно расстраивает. Во-первых, аренда нематериального объекта меня смущает с философской точки зрения, во-вторых, любые отображаемые на время (а не на количество страниц, например) данные легко украсть, связку AutoIt+Tesseract никто не отменял, в-третьих, я даю доступ на изменение или удаление файлов на моём устройстве третьему лицу, что совсем грустно, как если бы взносы по кредиту у меня молча вытаскивали из кармана, не дожидаясь, пока я переведу в банк.
А для полистать обычно хватает оглавления, предисловия и первой главы, которые можно давать бесплатно.iig
24.05.2018 20:50Drm key внутри ssl сертифіката, сертификат валидный неделю, время на устройстве синхронизируется автоматически. Взломать возможно все, да, но пока взломают — книга перестанет быть бестселлером.
slonopotamus
24.05.2018 21:27Сфотографировать/поскриншотить экран устройства? Чего тут взламывать-то?
eoffsock
24.05.2018 22:54+1А потом возиться с распознаванием. И сноски все руками проставлять. Неудобно все-таки.
slonopotamus
24.05.2018 23:32+1- В свое время множество книг распространялось в формате djvu (сканы физических книг). Ничего, вполне было юзабельно.
- Думаю в распознавании текста со скриешотов проблем не будет
Это я всё к тому что стоимость выковыривания текста из выданного юзеру файла крайне мала. Захочет чуть более заморочиться — и в цифровом виде выдернет.
eoffsock
25.05.2018 07:42Не спорю, если хочется — всегда есть пути обхода. Зависит во многом от того, насколько хочется почитать конкретную книгу.
iig
25.05.2018 11:13"стоимость выковыривания текста из выданного юзеру файла крайне мала"
Смотря во сколько юзер ценит свое время.vikarti
26.05.2018 16:11Достаточно одного юзера (ладно — двух — второй на вычитку). При этом юзеры могут считать свои действия — работой на благо общества / борьбой против копирастии и оценивать траты времени исходя из этого.
Имхо, вероятность данной ситуации — растет тем больше, чем больше проблем от DRM.
Пример:
— Kotlin in Action — англоязычное издание. Можно у Manning купить EPUB+PDF который будет читаться везде. за 35.99 USD (~2200 рублей). можно и скачать пиратку конечно.
— Kotlin в действии (перевод). Можно купить у Litres. За 719 рублей. Только вот читать — только в приложении литреса. А еще можно скачать более менее нормальную пиратскую PDF (похоже что скан с печатной).
(да, в обоих случаях можно и печатную купить конечно)
При условии что ЕЩЕ одна читалка не нужна а библиотека ведется в Calibre — выбор, в каком случае будет покупка а в каком — ее не будет — очевиден. Вот что стоило литресу в данном случае, раз уж хочется позащищать — дать нормальный pdf (раз уж epub не смогли отчего то) пусть с подписями на каждой странице 'продано user@domain.com' и exlibris'ом (+тоже самое скрытыми метками)). Или это не литреса идея а дмк-пресс была?
Gryphon88
25.05.2018 00:25+1Это ИБД в худших традициях копирастов. Не хочешь, чтоб фильм\книгу своровали — не выпускай электронную версию в течение пары недель после начала продаж бумаги или проката (как, собственно, и делают). Пусть пираты со сканером и экранками мучаются, результат потребует усилий и скорее всего будет хуже оригинала. А с электронным экземпляром всё очень просто, slonopotamus правильно говорит.
Допустим, что книгу мы читаем в браузере, т.е. файла у нас вообще нет. Для простоты примем, что книга — обычная художественная (один шрифт, без рисунков, черным по белому), что читаем на компьютере, и что перелистывание идёт одной клавишей, например, курсорной вправо.
Тогда пишем ahk-скрипт, который каждую секунду (если нет ограничения на скорость листания) отправляет «вправо», а затем «print screen», а потом из буфера пишет в файл. Контроль нажатия клавиш? Запускаем screen capture в том же vlc, только после этого открываем книгу и запускаем скрипт-листун, видео потом элементарно режется на уникальные кадры. На первой картинке распознаём шрифт, а дальше хоть тупой кросс-корреляцией. Сноски расставляются другим скриптом, секундное дело, если оформлены одинаково. На выходе — оффлайновый без-DRMный документ не худшего качества, чем исходный продукт. Если книга научная, техническая или детская, то придётся разгребать руками, но недолго, часа 4-6 размечать на фото рисунки, вставки кода и таблицы.iig
25.05.2018 00:47Допустим, книга читается на специализированном устройстве для чтения типа Kindle. С закрытой ОС. Удачи со скриптами ;)
Gryphon88
25.05.2018 00:56+1И снова здравствуйте! :) Малинка, подпаиваемся к кнопке перелистывания или карандаш через кривошип для сенсорного экрана (да, такую фигню уже делали из Лего, и даже был перевод на ГТ), USB-камера, дальше по предыдущему пути. Если фигово поставили свет, то вместо кросс-корреляции используем Tesseract. Если совсем по хардкору, то можно сесть на шлейф экрана. И это я не говорю, что доля «специализированных устройств с закрытой ОС» очень мала, почти всегда есть как минимум SDK, а во внутреннее кольцо нам лезть и не надо.
Mattteo
25.05.2018 14:20В Германии в обычной городской библиотеке уже можно брать «в аренду» электронные книги. Даже очередь на них есть, потому как количество электронных копий ограничено. Так что вполне себе рабочий вариант.
Gryphon88
25.05.2018 15:59количество электронных копий ограничено
Это как это?vikarti
26.05.2018 16:21Adobe Content Server и это умеет.
Кстати Amazon'овский DRM ТОЖЕ так может (некоторые книги можно арендовать, самое смешное что при этом стандартные средства снятия DRM с книг Kindle Store говорят что НЕ будут работать с арендованной книгой, купите сначала)Gryphon88
26.05.2018 20:16Adobe Content Server и это умеет.
Электронные документы — ещё один шаг к платоновскому миру чистых идей. Но давайте потратим деньги, сделаем неудобно пользователю, но притащим отлаженные за века бизнес-процессы и заодно продадим некоторые вещи по несколько раз. Именно это я и называю «что-то пошло не так».
JediPhilosopher
24.05.2018 22:53+2Пытались использовать OPDS как интерфейс для нашего книжного магазина. Но к сожалению столкнулись с паркой критических подводных камней.
Во-первых он не поддерживает авторизацию. В стандарте она есть в виде HttpBasicAuth, но на практике ни один из проверенных мной популярных клиентов ее не реализовывал (либо реализовывал очень глючно и непонятно вообще как, вроде поле с логином выдают но в запросах ничего не шлют). В итоге пришлось от него отказаться, сделали OPDS витрину с бесплатными книгами для скачивания, а платные — только через свое собственное приложение с авторизацией.
Поддержки покупок никакой тоже нет (ну в целом ничего необычного, это все-таки каталог а не магазин), у товара можно указать цену — но это чисто строчка которая будет рисоваться в списке товаров, и по клику на такой товар клиента будет просто редиректить на заданный урл по хттп, без какой-то дальнейшей связи с OPDS. Т.е. платные книги по сути — просто рекламный баннер ведущий куда-то там во внешнюю систему.
Библиотек для интеграции OPDS каталога в свой код (именно для интеграции с существующим решением, standalone-каталогов то куча разных) я никаких найти не смог, но с другой стороны формат и спецификация у него довольно просты, так что свой велосипед накидать можно быстро.
В общем как доступ к файлопомойке с книгами он норм, как вариант для коммерции не годится.leotsarev
25.05.2018 08:32Хм, fbreader подключен к opds каталогу литреса. Как у них работает? Пропиеритарные расширения?
JediPhilosopher
25.05.2018 12:34А как именно он подключен? С логином-паролем и доступом к купленным книгам?
Я его в свое время проверял, у меня авторизация не работала в нем. Правда было это больше года назад, может что и поменялось с тех пор.
Ну и да, учитывая как литрес там воевал в свое время с читалками, спамя жалобами в маркеты пока авторы приложений не начинали с ним сотрудничать, я не удивлюсь что там и есть какие-то костыли специально для него.
3aBulon
26.05.2018 11:54сейчас есть бот в телеграме. пишешь чего хочешь(автора, название) получаешь список ну и потом ссылку и файл. наверное то же самое, только бот
avacha
Вот оно что, Михалыч…
В рунете в основном OPDS-каталоги более других библиотек используются. Но мы умеем читать между строк.