audiobookshelf icon indicating copy to clipboard operation
audiobookshelf copied to clipboard

[Enhancement]: Audible Original Podcasts

Open darth3pio opened this issue 2 years ago • 5 comments

Describe the feature/enhancement

Currently iTunes is the only scraped source for podcasts however there are a few gems available on Audible that don't fit an ideal structure for the books category, it'd be nice for Audible to be added as a podcast source.

darth3pio avatar May 23 '23 23:05 darth3pio

From what I can tell Audible doesn't use an RSS feed so there would be no way for Abs to get access to the audio files to play the episodes. The Api does expose the metadata though. Are you downloading these podcast episodes from Audible?

advplyr avatar May 24 '23 20:05 advplyr

I'll use "Heist with Michael Caine" as an example, the book api does scrape some info as though it were a book if I place it in a Book library but doesn't grab anything more with regards to episode info like summaries/release dates/episode names

Furthe note: Yeah, we downloaded it from Audible and did a conversion to MP3 so it's just metadata importing that would be useful.

darth3pio avatar May 24 '23 21:05 darth3pio

Got it. Here is an example of the API output I'm putting here for future reference https://api.audible.com/1.0/catalog/products/B08JJN5ZBD?response_groups=media,product_desc,relationships,product_extended_attrs

advplyr avatar May 24 '23 21:05 advplyr

I've just been made aware of this feature request. I am facing a similar issue currently: I use mcrackan/Libation to liberate my Audible audiobooks and podcasts. Libation has the feature to save a *.metadata.json for every episode with a lot of metadata which ABS could use for content identification.

As an example, the podcast Im Schattenkloster. Chronik einer Gehirnwäsche Within a podcast library, ABS displays this podcast as follows: Screenshot 2024-04-23 at 21-13-57 Audiobookshelf

  • The published date is wrong. While the year seems correct, the month and date is wrong. I think the publish/release date should equal to issue_date or publication_datetime or release_date within metadata.json file.

  • The episodes are somehow mixed up: E01->E09 E02->E08 E03->E07 E04->E06 E08->E05 Trailer->E04 E05->E03 E06->E02 I think the episode number should correspond to value sort in the metadata.json file.

  • the ASIN tag is not used at all. But since I cannot choose Audible as metadata provider, this isn't really a surprise.

Here 4 metadata.json files from the Trailer and the first episodes. Trailer Im Schattenkloster. Chronik einer Gehirnwäsche [asin-B0CL4NJN74].metadata.json Flg. 1 - Sehnsucht [asin-B0CL4N5Y8L].metadata.json Flg. 2 - Horrortrip [asin-B0CL4NC3K1].metadata.json Flg. 3 - Eistee-Privilegien [asin-B0CL4MJB13].metadata.json

Furthermore, the m4b files itself do also contain some metadata. Here, as an example, the first episode:

{
"creatingLibrary": {
"name": "MediaInfoLib",
"version": "22.09",
"url": "https://mediaarea.net/MediaInfo"
},
"media": {
"@ref": "<REDACTED>\Flg. 1 - Sehnsucht [asin-B0CL4N5Y8L].m4b",
"track": [
{
"@type": "General",
"AudioCount": "1",
"MenuCount": "1",
"FileExtension": "m4b",
"Format": "MPEG-4",
"Format_Profile": "Base Media",
"CodecID": "isom",
"CodecID_Compatible": "iso2/mp41/M4A /M4B ",
"FileSize": "38613973",
"Duration": "2427.530",
"OverallBitRate_Mode": "VBR",
"OverallBitRate": "127254",
"StreamSize": "505117",
"HeaderSize": "32",
"DataSize": "38108941",
"FooterSize": "505000",
"IsStreamable": "No",
"Title": "Flg. 1 - Sehnsucht",
"Title_More": "Tom und seine Frau Jana sehnen sich nach einem Leben in Gemeinschaft. Sie lernen eine ungewöhnliche WG kennen, die von einer Utopie träumt. Was die beiden nicht wissen: Die Gruppe steht im Verdacht, psychische und sexualisierte Gewalt auszuüben. Die Reporterin Eva Hoffmann beginnt zu recherchieren.\\nDieser Podcast ist eine Kooperation mit dem SüddeutscheZeitungMagazin.",
"Album": "Im Schattenkloster. Chronik einer Gehirnwäsche",
"Track": "Flg. 1 - Sehnsucht",
"Track_More": "Tom und seine Frau Jana sehnen sich nach einem Leben in Gemeinschaft. Sie lernen eine ungewöhnliche WG kennen, die von einer Utopie träumt. Was die beiden nicht wissen: Die Gruppe steht im Verdacht, psychische und sexualisierte Gewalt auszuüben. Die Reporterin Eva Hoffmann beginnt zu recherchieren.\\nDieser Podcast ist eine Kooperation mit dem SüddeutscheZeitungMagazin.",
"Performer": "Im Schattenkloster. Chronik einer Gehirnwäsche",
"Composer": "Eva Hoffmann, Patrick Bauer",
"Publisher": "Audible Studios",
"Genre": "True Crime",
"Recorded_Date": "2023",
"Encoded_Date": "UTC 2023-10-18 12:28:38",
"Tagged_Date": "UTC 2023-10-18 12:28:38",
"File_Created_Date": "UTC 2024-04-23 19:33:26.000",
"File_Created_Date_Local": "2024-04-23 21:33:26.000",
"File_Modified_Date": "UTC 2024-04-23 19:33:25.361",
"File_Modified_Date_Local": "2024-04-23 21:33:25.361",
"Encoded_Library": "Apple QuickTime",
"Encoded_Library_Name": "Apple QuickTime",
"Copyright": "©2023 Audible Studios ℗2023 Audible Studios",
"Cover": "Yes",
"Comment": "Tom und seine Frau Jana sehnen sich nach einem Leben in Gemeinschaft. Sie lernen eine ungewöhnliche WG kennen, die von einer Utopie träumt. Was die beiden nicht wissen: Die Gruppe steht im Verdacht, psychische und sexualisierte Gewalt auszuüben. Die Reporterin Eva Hoffmann beginnt zu recherchieren.\\nDieser Podcast ist eine Kooperation mit dem SüddeutscheZeitungMagazin.",
"extra": {
"Album_Performer": "Im Schattenkloster. Chronik einer Gehirnwäsche",
"_pti": "Im Schattenkloster. Chronik einer Gehirnwäsche",
"_pst": "Im Schattenkloster. Chronik einer Gehirnwäsche",
"prID": "PC_3YXM_000002DE",
"pub": "Audible Studios",
"nrt": "Eva Hoffmann, Patrick Bauer",
"CDEK": "B0CL4N5Y8L",
"CDET": "ADBL",
"VERS": "53234221",
"AACR": "<REDACTED>",
"_ppi": "PD_3YXM_000001DE",
"PASN": "B0CL4NKBXF",
"_sti": "Flg. 1 - Sehnsucht",
"rldt": "18-Oct-2023",
"LANGUAGE": "German",
"asin": "B0CL4N5Y8L",
"AUDIBLE_ASIN": "B0CL4N5Y8L",
"SERIES": "Im Schattenkloster. Chronik einer Gehirnwäsche",
"PART": "9"
}
},
{
"@type": "Audio",
"StreamOrder": "0",
"ID": "1",
"Format": "AAC",
"Format_AdditionalFeatures": "LC",
"CodecID": "mp4a-40-2",
"Duration": "2427.530",
"BitRate_Mode": "VBR",
"BitRate": "125588",
"BitRate_Maximum": "130874",
"Channels": "2",
"ChannelPositions": "Front: L R",
"ChannelLayout": "L R",
"SamplesPerFrame": "1024",
"SamplingRate": "44100",
"SamplingCount": "107054073",
"FrameRate": "43.066",
"FrameCount": "104545",
"Compression_Mode": "Lossy",
"StreamSize": "38108856",
"StreamSize_Proportion": "0.98692",
"Language": "en",
"Encoded_Date": "UTC 2023-10-18 12:28:38",
"Tagged_Date": "UTC 2023-10-18 12:28:38",
"extra": {
"Menus": "2"
}
},
{
"@type": "Menu",
"StreamOrder": "1",
"ID": "2",
"Format": "Timed Text",
"CodecID": "text",
"Duration": "2427.530",
"Language": "en",
"extra": {
"Encoded_Date": "UTC 2023-10-18 12:28:38",
"Tagged_Date": "UTC 2023-10-18 12:28:38",
"Menu_For": "1",
"Duration_FirstFrame": "-2385850",
"Duration_LastFrame": "-2383249",
"mdhd_Duration": "2427530",
"_00_00_00_000": "Kapitel 1",
"_00_00_13_025": "Kapitel 2",
"_00_40_11_901": "Kapitel 3"
}
}
]
}
}
  • The Publish Date here would be the tag rldt.
  • But regarding the episode number it seems much less clear. While it seems ABS uses part for episode identification, this doesn't seems be a a good indication: E01 e.g. has the tag "PART": "9", E08 the tag "PART": "5", the Trailer has no part tag at all.

I hope this helps someone in the future for development :))

v3DJG6GL avatar Apr 23 '24 19:04 v3DJG6GL

I'll add on that I'm using TubeSync to get a few japanese podcasts that don't expose proper rss feeds.

Relating to this issue, I'd love for a way to embed or name meta data to encode external media sources, whether it's a metadatajson (which tubesync can also provide) or something like an API call to set the date manually w/ some scripts, I'd love to see the "bring your own podcasts" features continue to get built out.

kanjieater avatar Aug 05 '24 20:08 kanjieater