2010年9月30日 星期四

OPDS Catalog 1.0 筆記

OPDS Catalog,一種制式的書籍資訊的呈列方式,其他對應的例子以 RSS 最廣為人知。而 RSS 也是一種制式格式,常用在 Blog 文章、新聞發布,當然,連現在流行的微網誌也有部份提供,讓各家閱讀器可以透過統一的格式讀取資訊,讓使用者可以只用一款閱讀器軟體,把他想要追蹤的資訊通通透過 RSS 訂閱起來,十分方便。而 OPDS Catalog 也是要提供這種制式的規範,以便各家閱讀器可以方便處理,只是,OPDS Catalog 著眼的是書籍資訊的傳播,產生的 OPDS Catalog 則是常用在電子書閱讀器上。


因為 OPDS Catalog 規範的事宜包括電子書可提供的交流方式,因此,除了呈列書單外,還可提供額外的連結導向到書籍供應者,例如直接下載、借書等等,在 Catalog 1.0 就定義了以下可能的情境:


http://opds-spec.org/acquisition
http://opds-spec.org/acquisition/open-access
http://opds-spec.org/acquisition/borrow
http://opds-spec.org/acquisition/buy
http://opds-spec.org/acquisition/sample
http://opds-spec.org/acquisition/subscribe


其中 acquisition 算是通用的,若要細分,則有公開書籍(open-access)、借書(borrow)、買書(buy)、部份內容(sample),而 subscribe 有時也用在其他未定義的項目。因此,關於一本書的來源之範例描述:


<link rel="http://opds-spec.org/acquisition" href="/content/free/4561.epub" type="application/epub+zip"/>
<link rel="http://opds-spec.org/acquisition" href="/content/free/4561.mobi" type="application/x-mobipocket-ebook"/>
<link rel="http://opds-spec.org/acquisition/buy" href="/content/4561.pdf" type="application/pdf">
    <opds:price currencycode="USD">18.99</opds:price>
    <opds:price currencycode="GBP">11.99</opds:price>
</link>


其中 rel 代表這本書來源的狀況,而 href 則是連結位置,type 則是檔案的型態,可以用在讓電子書閱讀器挑選它支援的格式,常見格式:


application/epub+zip
application/pdf
application/x-mobipocket-ebook


另外,書籍來源要付費時,此例是 http://opds-spec.org/acquisition/buy,則可以使用 opds:price 的標籤進行價格和貨幣的描述。


接著,既然在電子書閱讀器上使用,那來個書籍封面的顯示也不為過吧!來個一張大圖,一張小圖,讓閱讀器依狀況使用:


<link rel="http://opds-spec.org/image" href="/covers/4561.lrg.png" type="image/png"/>
<link rel="http://opds-spec.org/image/thumbnail" href="/covers/4561.thmb.gif" type="image/gif"/>


經過上述的描述後,也差不多都有提到關鍵的東西,接著看一下一則書籍的描述吧,此時就將顯示很多想得到的資訊,如書籍標題、作者、發佈日期、語言、分類、摘要、簡短內容等等:


  <entry>
    <title>Bob, Son of Bob</title>
    <id>urn:uuid:6409a00b-7bf2-405e-826c-3fdff0fd0734</id>
    <updated>2010-01-10T10:01:11Z</updated>

    <author>
      <name>Bob the Recursive</name>
      <uri>http://opds-spec.org/authors/1285</uri>
    </author>
    <dc:language>en</dc:language>
    <dc:issued>1917</dc:issued>
    <category scheme="http://www.bisg.org/standards/bisac_subject/index.html"
              term="FIC020000"
              label="FICTION / Men's Adventure"/>

    <summary type="text">The story of the son of the Bob and the gallant part
      he played in the lives of a man and a woman.</summary>
    <content type="text">The story of the son of the Bob and the gallant part
      he played in the lives of a man and a woman. Bob begins his humble life
      under the wandering eye of his senile mother, but quickly learns how to
      escape into the wilder world. Follow Bob as he uncovers his father's past
      and uses those lessons to improve the lives of others.</content>

    <link rel="http://opds-spec.org/image"
          href="/covers/4561.lrg.png"
          type="image/png"/>
    <link rel="http://opds-spec.org/image/thumbnail"
          href="/covers/4561.thmb.gif"
          type="image/gif"/>

    <link rel="self"
          href="/opds-catalogs/entries/4571.complete.xml"
          type="application/atom+xml;type=entry;profile=opds-catalog"/>

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


接著,就是關於把一堆書整理成清單的事情了,常見的清單有熱門書籍、最新書籍、依字母順序等等的,你想的到的都差不多有了:


http://opds-spec.org/sort/new
http://opds-spec.org/sort/popular
http://opds-spec.org/featured
http://opds-spec.org/crawlable
http://opds-spec.org/shelf
http://opds-spec.org/subscriptions
subsection


其中 sort/new 顧名思義就是照發佈日期排序,而 sort/popular 則是熱門程度,其他的就沒有順序的要求,但也可以用 subsection 提供依照字母排序的清單,上述比較特別的有 crawlable 這個字樣,提供像 Search Engines 這類服務撈資料用的。


當書單很大時,該怎麼辦? OPDS Catalog 是建立在 Atom 上,因此可以提供分頁功能:


<link rel="self" href="alpha_1.xml" type="application/atom+xml;profile=opds-catalog"/>
<link rel="first" href="alpha.xml" type="application/atom+xml;profile=opds-catalog"/>
<link rel="last" href="alpha_2.xml" type="application/atom+xml;profile=opds-catalog"/>
<link rel="previous" href="alpha.xml" type="application/atom+xml;profile=opds-catalog"/>
<link rel="next" href="alpha_2.xml" type="application/atom+xml;profile=opds-catalog"/>


其中,每一頁應該都會提供 self, first 和 last 的資訊,剩下的就依照資料量跟頁數的資訊,提供 previous 跟 next 的資訊,例如第一頁不該有 previous 而最後一頁也不該有 next 等。



以上範例等資訊來自於:


http://opds-spec.org/specs/opds-catalog-1-0


更多細節請參考 OPDS Catalog 1.0


沒有留言:

張貼留言