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

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


    / 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:


    МакЦентр

    67,00

    Компания

    Поделиться публикацией
    Комментарии 28
      +2

      Вот оно что, Михалыч…
      В рунете в основном OPDS-каталоги более других библиотек используются. Но мы умеем читать между строк.

        +1
        Я думал, нам расскажут, как поднять свой…
        +3
        Электронные книги… в аренду… в стандарте… Что-то сильно пошло не так.
          +1

          А что, могло бы быть удобно, чтобы понять хотите вы это читать или не очень. Как в книжный полистать литературу сходил. А может в будущем будут VR-библиотеки, тогда фраза "сдал электронную книгу в аренду" примет иной смысл

            0

            Так OPDS != Даром.

              0
              Я не против заплатить. меня формат сильно расстраивает. Во-первых, аренда нематериального объекта меня смущает с философской точки зрения, во-вторых, любые отображаемые на время (а не на количество страниц, например) данные легко украсть, связку AutoIt+Tesseract никто не отменял, в-третьих, я даю доступ на изменение или удаление файлов на моём устройстве третьему лицу, что совсем грустно, как если бы взносы по кредиту у меня молча вытаскивали из кармана, не дожидаясь, пока я переведу в банк.
              А для полистать обычно хватает оглавления, предисловия и первой главы, которые можно давать бесплатно.
                –1

                Drm key внутри ssl сертифіката, сертификат валидный неделю, время на устройстве синхронизируется автоматически. Взломать возможно все, да, но пока взломают — книга перестанет быть бестселлером.

                  +2

                  Сфотографировать/поскриншотить экран устройства? Чего тут взламывать-то?

                    +1
                    А потом возиться с распознаванием. И сноски все руками проставлять. Неудобно все-таки.
                      +4
                      1. В свое время множество книг распространялось в формате djvu (сканы физических книг). Ничего, вполне было юзабельно.
                      2. Думаю в распознавании текста со скриешотов проблем не будет

                      Это я всё к тому что стоимость выковыривания текста из выданного юзеру файла крайне мала. Захочет чуть более заморочиться — и в цифровом виде выдернет.

                        0
                        Не спорю, если хочется — всегда есть пути обхода. Зависит во многом от того, насколько хочется почитать конкретную книгу.
                          0

                          "стоимость выковыривания текста из выданного юзеру файла крайне мала"
                          Смотря во сколько юзер ценит свое время.

                            0
                            Достаточно одного юзера (ладно — двух — второй на вычитку). При этом юзеры могут считать свои действия — работой на благо общества / борьбой против копирастии и оценивать траты времени исходя из этого.
                            Имхо, вероятность данной ситуации — растет тем больше, чем больше проблем от DRM.

                            Пример:
                            — Kotlin in Action — англоязычное издание. Можно у Manning купить EPUB+PDF который будет читаться везде. за 35.99 USD (~2200 рублей). можно и скачать пиратку конечно.
                            — Kotlin в действии (перевод). Можно купить у Litres. За 719 рублей. Только вот читать — только в приложении литреса. А еще можно скачать более менее нормальную пиратскую PDF (похоже что скан с печатной).
                            (да, в обоих случаях можно и печатную купить конечно)
                            При условии что ЕЩЕ одна читалка не нужна а библиотека ведется в Calibre — выбор, в каком случае будет покупка а в каком — ее не будет — очевиден. Вот что стоило литресу в данном случае, раз уж хочется позащищать — дать нормальный pdf (раз уж epub не смогли отчего то) пусть с подписями на каждой странице 'продано user@domain.com' и exlibris'ом (+тоже самое скрытыми метками)). Или это не литреса идея а дмк-пресс была?

                              0
                              Достаточно одного юзера (ладно — двух — второй на вычитку). При этом юзеры могут считать свои действия — работой на благо общества / борьбой против копирастии и оценивать траты времени исходя из этого.


                              Этот самый Kotlin in Action (спасибо всезнающему) — издание 2016 года. За 2 года найдется Робин Гуд, купивший за свои деньги книгу и отдавший ее бедным. Думаю, за это время издательство уже продало достаточное количество копий, чтобы немного заработать. А через 5 лет эта книга вряд ли кому-то будет нужна даже бесплатно.
                                0
                                Не совсем.
                                Русский перевод (согласно habr.com/company/JetBrains/blog/339400 ) это октябрь 2017.
                                Как я уже говорила — да, нашелся человек кто отсканил. Файл найти — совсем не проблема.
                                Если издательство продало достаточно копий — так какого они не хотят заработать ЕЩЕ немного и продавать версию которую можно читать без извращений?

                                p.s.
                                Английский оригинал у меня — куплен (и за пределы моих устройств — не выходил). Русский — нет. Именно по причине того что 'Литрес.Читай' мне даром не нужен.

                                p.p.s.
                                Очень похоже что Литрес то как раз — отлично в курсе (см например историю с книгой Ходорковского и как на ней пропал DRM, и выросли продажи) и тут надо спасибо ДМК-Пресс говорить.
                      +2
                      Это ИБД в худших традициях копирастов. Не хочешь, чтоб фильм\книгу своровали — не выпускай электронную версию в течение пары недель после начала продаж бумаги или проката (как, собственно, и делают). Пусть пираты со сканером и экранками мучаются, результат потребует усилий и скорее всего будет хуже оригинала. А с электронным экземпляром всё очень просто, slonopotamus правильно говорит.
                      Допустим, что книгу мы читаем в браузере, т.е. файла у нас вообще нет. Для простоты примем, что книга — обычная художественная (один шрифт, без рисунков, черным по белому), что читаем на компьютере, и что перелистывание идёт одной клавишей, например, курсорной вправо.
                      Тогда пишем ahk-скрипт, который каждую секунду (если нет ограничения на скорость листания) отправляет «вправо», а затем «print screen», а потом из буфера пишет в файл. Контроль нажатия клавиш? Запускаем screen capture в том же vlc, только после этого открываем книгу и запускаем скрипт-листун, видео потом элементарно режется на уникальные кадры. На первой картинке распознаём шрифт, а дальше хоть тупой кросс-корреляцией. Сноски расставляются другим скриптом, секундное дело, если оформлены одинаково. На выходе — оффлайновый без-DRMный документ не худшего качества, чем исходный продукт. Если книга научная, техническая или детская, то придётся разгребать руками, но недолго, часа 4-6 размечать на фото рисунки, вставки кода и таблицы.
                        0

                        Допустим, книга читается на специализированном устройстве для чтения типа Kindle. С закрытой ОС. Удачи со скриптами ;)

                          +4
                          И снова здравствуйте! :) Малинка, подпаиваемся к кнопке перелистывания или карандаш через кривошип для сенсорного экрана (да, такую фигню уже делали из Лего, и даже был перевод на ГТ), USB-камера, дальше по предыдущему пути. Если фигово поставили свет, то вместо кросс-корреляции используем Tesseract. Если совсем по хардкору, то можно сесть на шлейф экрана. И это я не говорю, что доля «специализированных устройств с закрытой ОС» очень мала, почти всегда есть как минимум SDK, а во внутреннее кольцо нам лезть и не надо.
                  0
                  В Германии в обычной городской библиотеке уже можно брать «в аренду» электронные книги. Даже очередь на них есть, потому как количество электронных копий ограничено. Так что вполне себе рабочий вариант.
                    +1
                    количество электронных копий ограничено

                    Это как это?
                      0
                      Adobe Content Server и это умеет.
                      Кстати Amazon'овский DRM ТОЖЕ так может (некоторые книги можно арендовать, самое смешное что при этом стандартные средства снятия DRM с книг Kindle Store говорят что НЕ будут работать с арендованной книгой, купите сначала)
                        0
                        Adobe Content Server и это умеет.
                        Электронные документы — ещё один шаг к платоновскому миру чистых идей. Но давайте потратим деньги, сделаем неудобно пользователю, но притащим отлаженные за века бизнес-процессы и заодно продадим некоторые вещи по несколько раз. Именно это я и называю «что-то пошло не так».
                  +3
                  Пытались использовать OPDS как интерфейс для нашего книжного магазина. Но к сожалению столкнулись с паркой критических подводных камней.

                  Во-первых он не поддерживает авторизацию. В стандарте она есть в виде HttpBasicAuth, но на практике ни один из проверенных мной популярных клиентов ее не реализовывал (либо реализовывал очень глючно и непонятно вообще как, вроде поле с логином выдают но в запросах ничего не шлют). В итоге пришлось от него отказаться, сделали OPDS витрину с бесплатными книгами для скачивания, а платные — только через свое собственное приложение с авторизацией.

                  Поддержки покупок никакой тоже нет (ну в целом ничего необычного, это все-таки каталог а не магазин), у товара можно указать цену — но это чисто строчка которая будет рисоваться в списке товаров, и по клику на такой товар клиента будет просто редиректить на заданный урл по хттп, без какой-то дальнейшей связи с OPDS. Т.е. платные книги по сути — просто рекламный баннер ведущий куда-то там во внешнюю систему.

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

                  В общем как доступ к файлопомойке с книгами он норм, как вариант для коммерции не годится.
                    0

                    Хм, fbreader подключен к opds каталогу литреса. Как у них работает? Пропиеритарные расширения?

                      0
                      А как именно он подключен? С логином-паролем и доступом к купленным книгам?

                      Я его в свое время проверял, у меня авторизация не работала в нем. Правда было это больше года назад, может что и поменялось с тех пор.

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

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое