advplyr / audiobookshelf

Self-hosted audiobook and podcast server
https://audiobookshelf.org
GNU General Public License v3.0
6.24k stars 437 forks source link

[Enhancement]: Audible Original Podcasts #1788

Open darth3pio opened 1 year ago

darth3pio commented 1 year ago

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.

advplyr commented 1 year ago

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?

darth3pio commented 1 year ago

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.

advplyr commented 1 year ago

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

v3DJG6GL commented 4 months ago

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

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"
}
}
]
}
}

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

kanjieater commented 1 month ago

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.