mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-02-28 21:19:42 +00:00
Adds extended metadata fields to FFmpeg output
Enriches audiobook metadata by adding support for additional fields including abridged/unabridged format, full publication date, ISBN, language, explicit content flags, and subtitle. Improves compatibility with Libation by including both lowercase and uppercase ASIN variants. Sets appropriate iTunes advisory flags to distinguish explicit from clean content.
This commit is contained in:
parent
9e7d4ab5e7
commit
e7a980d55a
1 changed files with 17 additions and 1 deletions
|
|
@ -400,14 +400,24 @@ function escapeFFMetadataValue(value) {
|
|||
* @returns {Object} - The FFmpeg metadata object.
|
||||
*/
|
||||
function getFFMetadataObject(libraryItem, audioFilesLength) {
|
||||
// Determine abridged/unabridged format string
|
||||
let format = null
|
||||
if (libraryItem.media.abridged === true) {
|
||||
format = 'abridged'
|
||||
} else if (libraryItem.media.abridged === false) {
|
||||
format = 'unabridged'
|
||||
}
|
||||
|
||||
const ffmetadata = {
|
||||
title: libraryItem.media.title,
|
||||
artist: libraryItem.media.authorName,
|
||||
album_artist: libraryItem.media.authorName,
|
||||
album: (libraryItem.media.title || '') + (libraryItem.media.subtitle ? `: ${libraryItem.media.subtitle}` : ''),
|
||||
TIT3: libraryItem.media.subtitle, // mp3 only
|
||||
subtitle: libraryItem.media.subtitle, // m4b/mp4
|
||||
genre: libraryItem.media.genres?.join('; '),
|
||||
date: libraryItem.media.publishedYear,
|
||||
RELEASETIME: libraryItem.media.publishedDate, // Full release date YYYY-MM-DD
|
||||
comment: libraryItem.media.description,
|
||||
description: libraryItem.media.description,
|
||||
composer: (libraryItem.media.narrators || []).join(', '),
|
||||
|
|
@ -415,7 +425,13 @@ function getFFMetadataObject(libraryItem, audioFilesLength) {
|
|||
publisher: libraryItem.media.publisher, // mp3 only
|
||||
TRACKTOTAL: `${audioFilesLength}`, // mp3 only
|
||||
grouping: libraryItem.media.series?.map((s) => s.name + (s.bookSeries.sequence ? ` #${s.bookSeries.sequence}` : '')).join('; '),
|
||||
AUDIBLE_ASIN: libraryItem.media.asin // Audible ASIN tag for m4b/mp4 files
|
||||
asin: libraryItem.media.asin, // Lowercase for Libation compatibility
|
||||
AUDIBLE_ASIN: libraryItem.media.asin, // Uppercase for Libation compatibility
|
||||
ISBN: libraryItem.media.isbn,
|
||||
LANGUAGE: libraryItem.media.language,
|
||||
EXPLICIT: libraryItem.media.explicit ? '1' : null,
|
||||
ITUNESADVISORY: libraryItem.media.explicit ? '1' : '2', // 1 = explicit, 2 = clean
|
||||
FORMAT: format
|
||||
}
|
||||
Object.keys(ffmetadata).forEach((key) => {
|
||||
if (!ffmetadata[key]) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue