OPDS generated by this app uses Dublin Core for representing Calibre metadata information.
Since there is no direct correspondence between Calibre metadata and OPDS fields, following representation decisions were made:
- Calibre book record timestamp is represented by Atom tag
<published>
. - Calibre book record last modification timestamp is represented by Atom tag
<updated>
. - Calibre publication date is represented by Dublin Core attribute
dc:issued
.
- Calibre book record UUID is represented as an identifier (Dublin core attribute
dc:identifier
) with prefixurn:uuid:
. - All other book identifiers are also represented by Dublin Core attribute
dc:identifier
. - Identifiers with types
uri
,urn
, andepubbud
are published as-is. Identifiers of all other types are prefixed byurn:id-type:
, whereid-type
is the identifier type.
- Calibre author link is always represented in subtag
<uri>
of Atom tag<author>
. - Calibre book publisher is represented by Dublin Core attribute
dc:publisher
. - Calibre book series is represented by Dublin Core attribute
dc:isPartOf
, referring to complete list of books in the series. - Calibre book series index is not represented, since Dublin Core lacks corresponding vocabulary.
- Calibre book tag is represented by Atom tag
<category>
without schema or label.
- Atom tag
<content>
is filled with Calibre book comment. - Calibre book annotations, ratings, last read positions and custom columns are ignored.
- Feed items are usually sorted in alphabetic order by name or title. The only exception is book acquisition feed of a series, which is sorted by series index first, followed by book title.
- All feeds are non-paginated. It is expected that a personal library saved in Nextcloud is not large enough for pagination to be necessary. However, pagination may be implemented at a later date.
Search terms in OpenSearch are interpreted as a PCRE pattern.
Both patterns and the values which are searched in are normalized to Unicode form
NFKC. This means that, for example,
pattern fi
will match ligature fi
, and vice versa.
Search is case-insensitive, meaning that pattern abc
will match ABC
.
Search is diacritics-agnostic, meaning that pattern pate
matches both pâté
and patê
,
however pattern pâté
doesn't match patê
.
Matches are looked for in:
- Book title.
- Book description (Calibre comments).
- Book author names.
- Book series names.
- Book tags.