edrlab / thorium-reader

A cross platform desktop reading app, based on the Readium Desktop toolkit
https://www.edrlab.org/software/thorium-reader/
BSD 3-Clause "New" or "Revised" License
1.86k stars 157 forks source link

Audiobook is not playing #1023

Closed CircularKen closed 4 years ago

CircularKen commented 4 years ago

macOS 10.14.6 Thorium 1.3.0

Audio LPF here https://www.dropbox.com/s/bcq5lf60wjoajs2/CircularFLO_Audiobook.lpf?dl=0

Explainer video here https://www.dropbox.com/s/koh093wegd2uf9o/Audio_Thorium.mp4?dl=0

panaC commented 4 years ago

Hello Ken and thanks you for your video !

When i import your audiobook in lpf format, your publication isn't read like an audiobook but like a book. The publication is under "Recently Added" categorie. In that case Thorium open the book reader and not the audiobook player.

I have analysed your lpf file and in the "publication.json" file (zip extracted) : there are no "conformsTo" fields (required in W3C audiobook publication manifest) https://www.w3.org/TR/pub-manifest/#profile-conformance https://www.w3.org/TR/pub-manifest/#manifest-requirements

In Thorium in the lpf audiobook parser module when "conformsTo" is not equal to "https://www.w3.org/TR/audiobooks/" the publication is converted in "https://schema.org/CreativeWork" which produces a book and not an audiobook.

This is the manifest.json (RWPM) generated from publication.json (w3c publication manifest) :

{
    "@context": "https://readium.org/webpub-manifest/context.jsonld",
    "metadata": {
        "accessMode": "audio",
        "@type": "https://schema.org/CreativeWork",
        "title": "Alice in Wonderland",
        "identifier": "683c80ac-5a9a-4c20-b234-b4c2955dee05",
        "author": "Lewis Carroll",
        "narrator": "Kara Shallenberg",
        "publisher": "Circular Publishing",
        "language": "en-CA",
        "modified": "2019-06-06T22:00:00.000Z",
        "published": "2020-05-06T22:00:00.000Z",
        "type": "Audiobook",
        "@id": "ABC123",
        "abridged": "false"
    },
    "readingOrder": [
        {
            "type": "audio/mpeg",
            "title": "01 Down the Rabbit Hole",
            "href": "alices_adventures_01_carroll_64kb.mp3"
        },
        {
            "type": "audio/mpeg",
            "title": "02 The Pool of Tears",
            "href": "alices_adventures_02_carroll_64kb.mp3"
        },
        {
            "type": "audio/mpeg",
            "title": "03 A Caucus-Race and a Long Tale",
            "href": "alices_adventures_03_carroll_64kb.mp3"
        },
        {
            "type": "audio/mpeg",
            "title": "04 The Rabbit Sends in a Little Bill",
            "href": "alices_adventures_04_carroll_64kb.mp3"
        },
        {
            "type": "audio/mpeg",
            "title": "05 Advice from a Caterpillar",
            "href": "alices_adventures_05_carroll_64kb.mp3"
        },
        {
            "type": "audio/mpeg",
            "title": "06 Pig and Pepper",
            "href": "alices_adventures_06_carroll_64kb.mp3"
        },
        {
            "type": "audio/mpeg",
            "title": "07 A Mad Tea-Party",
            "href": "alices_adventures_07_carroll_64kb.mp3"
        },
        {
            "type": "audio/mpeg",
            "title": "08 The Queen’s Croquet-Ground",
            "href": "alices_adventures_08_carroll_64kb.mp3"
        },
        {
            "type": "audio/mpeg",
            "title": "09 The Mock Turtle’s Story",
            "href": "alices_adventures_09_carroll_64kb.mp3"
        },
        {
            "type": "audio/mpeg",
            "title": "10 The Lobster Quadrille",
            "href": "alices_adventures_10_carroll_64kb.mp3"
        },
        {
            "type": "audio/mpeg",
            "title": "11 Who Stole the Tarts?",
            "href": "alices_adventures_11_carroll_64kb.mp3"
        },
        {
            "type": "audio/mpeg",
            "title": "12 Alice’s Evidence",
            "href": "alices_adventures_12_carroll_64kb.mp3"
        }
    ],
    "resources": [
        {
            "type": "text/html",
            "title": "Table of Contents",
            "rel": "contents",
            "href": "CircularFLO_Audiobook.html"
        },
        {
            "type": "image/jpeg",
            "rel": "cover",
            "href": "cover.jpg"
        }
    ]
}

nevertheless maybe we should manage this case. What do you think @danielweck ? There is more often an audiobook than a book.

danielweck commented 4 years ago

good catch, pierre. another spec. reference: https://w3c.github.io/audiobooks/#audio-requirements

danielweck commented 4 years ago

Note that this also highlights the side issue of dcterms:conformsTo being used for accessibility metadata as well as for declaring the audiobook type. In other words, a LPF parser should expect potentially several values in the Readium2 metadata model for conformsTo. http://kb.daisy.org/publishing/docs/metadata/evaluation.html https://www.dublincore.org/specifications/dublin-core/dcmi-terms/#http://purl.org/dc/terms/conformsTo

danielweck commented 4 years ago

here is the current mapping document which is used as a specification fo Thorium’s reference implementation: https://github.com/readium/architecture/blob/master/other/W3C/audiobooks.md

danielweck commented 4 years ago

i filed a separate issue for the mapping document, to warn about the possibility of multiple conformsTo metadata values. https://github.com/readium/architecture/issues/134

danielweck commented 4 years ago

Follow-up issues: https://github.com/readium/readium-desktop/issues/1026