mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-07-27 03:31:46 +00:00
Fix:Unescaped characters in description causing issues with m4b merging
This commit is contained in:
parent
6b8d71c0b0
commit
e41a90463b
3 changed files with 68 additions and 1 deletions
5
server/utils/stringEscaper.js
Normal file
5
server/utils/stringEscaper.js
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
function escapeString(string) {
|
||||
return string.replace(/[.*"+?^${}()|[\]\\]/g, '\\$&');
|
||||
}
|
||||
|
||||
module.exports.escapeString = escapeString
|
||||
|
|
@ -2,6 +2,7 @@ const tone = require('node-tone')
|
|||
const fs = require('../libs/fsExtra')
|
||||
const Logger = require('../Logger')
|
||||
const { secondsToTimestamp } = require('./index')
|
||||
const stringEscaper = require('./stringEscaper')
|
||||
|
||||
module.exports.writeToneChaptersFile = (chapters, filePath) => {
|
||||
var chaptersTxt = ''
|
||||
|
|
@ -72,6 +73,67 @@ module.exports.getToneMetadataObject = (libraryItem, chaptersFile) => {
|
|||
return metadataObject
|
||||
}
|
||||
|
||||
module.exports.getEscapedToneMetadataObject = (libraryItem, chaptersFile) => {
|
||||
const coverPath = libraryItem.media.coverPath
|
||||
const bookMetadata = libraryItem.media.metadata
|
||||
|
||||
const metadataObject = {
|
||||
'Title': bookMetadata.title || '',
|
||||
'Album': bookMetadata.title || '',
|
||||
'TrackTotal': libraryItem.media.tracks.length
|
||||
}
|
||||
const additionalFields = []
|
||||
|
||||
if (bookMetadata.subtitle) {
|
||||
metadataObject['Subtitle'] = bookMetadata.subtitle
|
||||
}
|
||||
if (bookMetadata.authorName) {
|
||||
metadataObject['Artist'] = bookMetadata.authorName
|
||||
metadataObject['AlbumArtist'] = bookMetadata.authorName
|
||||
}
|
||||
if (bookMetadata.description) {
|
||||
metadataObject['Comment'] = stringEscaper.escapeString(bookMetadata.description)
|
||||
metadataObject['Description'] = stringEscaper.escapeString(bookMetadata.description)
|
||||
}
|
||||
if (bookMetadata.narratorName) {
|
||||
metadataObject['Narrator'] = bookMetadata.narratorName
|
||||
metadataObject['Composer'] = bookMetadata.narratorName
|
||||
}
|
||||
if (bookMetadata.firstSeriesName) {
|
||||
metadataObject['MovementName'] = bookMetadata.firstSeriesName
|
||||
}
|
||||
if (bookMetadata.firstSeriesSequence) {
|
||||
metadataObject['Movement'] = bookMetadata.firstSeriesSequence
|
||||
}
|
||||
if (bookMetadata.genres.length) {
|
||||
metadataObject['Genre'] = bookMetadata.genres.join('/')
|
||||
}
|
||||
if (bookMetadata.publisher) {
|
||||
metadataObject['Publisher'] = bookMetadata.publisher
|
||||
}
|
||||
if (bookMetadata.asin) {
|
||||
additionalFields.push(`ASIN=${bookMetadata.asin}`)
|
||||
}
|
||||
if (bookMetadata.isbn) {
|
||||
additionalFields.push(`ISBN=${bookMetadata.isbn}`)
|
||||
}
|
||||
if (coverPath) {
|
||||
metadataObject['CoverFile'] = coverPath
|
||||
}
|
||||
if (parsePublishedYear(bookMetadata.publishedYear)) {
|
||||
metadataObject['PublishingDate'] = parsePublishedYear(bookMetadata.publishedYear)
|
||||
}
|
||||
if (chaptersFile) {
|
||||
metadataObject['ChaptersFile'] = chaptersFile
|
||||
}
|
||||
|
||||
if (additionalFields.length) {
|
||||
metadataObject['AdditionalFields'] = additionalFields
|
||||
}
|
||||
|
||||
return metadataObject
|
||||
}
|
||||
|
||||
module.exports.tagAudioFile = (filePath, payload) => {
|
||||
return tone.tag(filePath, payload).then((data) => {
|
||||
return true
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue