mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-01-08 00:08:14 +01:00
Add:Book folder name starting with number and has series folder use as volume number
This commit is contained in:
parent
779d22bf55
commit
c81b12f459
@ -203,7 +203,8 @@ class Db {
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
return this.audiobooksDb.insert(audiobooks).then((results) => {
|
return this.audiobooksDb.insert(audiobooks).then((results) => {
|
||||||
Logger.debug(`[DB] Audiobooks inserted ${results.updated}`)
|
Logger.debug(`[DB] Audiobooks inserted ${results.inserted}`)
|
||||||
|
this.audiobooks = this.audiobooks.concat(audiobooks)
|
||||||
return true
|
return true
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
Logger.error(`[DB] Audiobooks insert failed ${error}`)
|
Logger.error(`[DB] Audiobooks insert failed ${error}`)
|
||||||
|
@ -569,9 +569,8 @@ class Audiobook {
|
|||||||
if (abmetadataText) {
|
if (abmetadataText) {
|
||||||
var metadataUpdateObject = abmetadataGenerator.parse(abmetadataText)
|
var metadataUpdateObject = abmetadataGenerator.parse(abmetadataText)
|
||||||
if (metadataUpdateObject && metadataUpdateObject.book) {
|
if (metadataUpdateObject && metadataUpdateObject.book) {
|
||||||
Logger.debug(`[Audiobook] Updating book "${this.title}" details from metadata.abs file`, metadataUpdateObject)
|
|
||||||
if (this.update(metadataUpdateObject)) {
|
if (this.update(metadataUpdateObject)) {
|
||||||
Logger.debug(`[Audiobook] Some details were updated from metadata.abs for "${this.title}"`)
|
Logger.debug(`[Audiobook] Some details were updated from metadata.abs for "${this.title}"`, metadataUpdateObject)
|
||||||
hasUpdates = true
|
hasUpdates = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -834,7 +833,7 @@ class Audiobook {
|
|||||||
if (abmetadataText) {
|
if (abmetadataText) {
|
||||||
var metadataUpdateObject = abmetadataGenerator.parse(abmetadataText)
|
var metadataUpdateObject = abmetadataGenerator.parse(abmetadataText)
|
||||||
if (metadataUpdateObject && metadataUpdateObject.book) {
|
if (metadataUpdateObject && metadataUpdateObject.book) {
|
||||||
Logger.debug(`[Audiobook] "${this.title}" found book details from metadata.abs file`, metadataUpdateObject)
|
Logger.debug(`[Audiobook] "${this.title}" found metadata.abs file`)
|
||||||
for (const key in metadataUpdateObject.book) {
|
for (const key in metadataUpdateObject.book) {
|
||||||
var value = metadataUpdateObject.book[key]
|
var value = metadataUpdateObject.book[key]
|
||||||
if (key && value !== undefined) {
|
if (key && value !== undefined) {
|
||||||
|
@ -85,8 +85,10 @@ function parseAbMetadataText(text) {
|
|||||||
bookDetails[key] = keyValue[1].trim()
|
bookDetails[key] = keyValue[1].trim()
|
||||||
|
|
||||||
// Genres convert to array of strings
|
// Genres convert to array of strings
|
||||||
if (key === 'genres' && bookDetails[key]) {
|
if (key === 'genres') {
|
||||||
bookDetails[key] = bookDetails[key].split(',').map(genre => genre.trim())
|
bookDetails[key] = bookDetails[key] ? bookDetails[key].split(',').map(genre => genre.trim()) : []
|
||||||
|
} else if (!bookDetails[key]) { // Use null for empty details
|
||||||
|
bookDetails[key] = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -196,17 +196,26 @@ function getAudiobookDataFromDir(folderPath, dir, parseSubtitle = false) {
|
|||||||
|
|
||||||
|
|
||||||
// If in a series directory check for volume number match
|
// If in a series directory check for volume number match
|
||||||
/* ACCEPTS:
|
/* ACCEPTS
|
||||||
Book 2 - Title Here - Subtitle Here
|
Book 2 - Title Here - Subtitle Here
|
||||||
Title Here - Subtitle Here - Vol 12
|
Title Here - Subtitle Here - Vol 12
|
||||||
Title Here - volume 9 - Subtitle Here
|
Title Here - volume 9 - Subtitle Here
|
||||||
Vol. 3 Title Here - Subtitle Here
|
Vol. 3 Title Here - Subtitle Here
|
||||||
1980 - Book 2-Title Here
|
1980 - Book 2-Title Here
|
||||||
Title Here-Volume 999-Subtitle Here
|
Title Here-Volume 999-Subtitle Here
|
||||||
|
2 - Book Title
|
||||||
|
100 - Book Title
|
||||||
|
0.5 - Book Title
|
||||||
*/
|
*/
|
||||||
var volumeNumber = null
|
var volumeNumber = null
|
||||||
if (series) {
|
if (series) {
|
||||||
// New volume regex to match volumes with decimal (OLD: /(-? ?)\b((?:Book|Vol.?|Volume) (\d{1,3}))\b( ?-?)/i)
|
// Added 1.7.1: If title starts with a # that is 3 digits or less (or w/ 2 decimal), then use as volume number
|
||||||
|
var volumeMatch = title.match(/^(\d{1,3}(?:\.\d{1,2})?) - ./)
|
||||||
|
if (volumeMatch && volumeMatch.length > 1) {
|
||||||
|
volumeNumber = volumeMatch[1]
|
||||||
|
title = title.replace(`${volumeNumber} - `, '')
|
||||||
|
} else {
|
||||||
|
// Match volumes with decimal (OLD: /(-? ?)\b((?:Book|Vol.?|Volume) (\d{1,3}))\b( ?-?)/i)
|
||||||
var volumeMatch = title.match(/(-? ?)\b((?:Book|Vol.?|Volume) (\d{0,3}(?:\.\d{1,2})?))\b( ?-?)/i)
|
var volumeMatch = title.match(/(-? ?)\b((?:Book|Vol.?|Volume) (\d{0,3}(?:\.\d{1,2})?))\b( ?-?)/i)
|
||||||
if (volumeMatch && volumeMatch.length > 3 && volumeMatch[2] && volumeMatch[3]) {
|
if (volumeMatch && volumeMatch.length > 3 && volumeMatch[2] && volumeMatch[3]) {
|
||||||
volumeNumber = volumeMatch[3]
|
volumeNumber = volumeMatch[3]
|
||||||
@ -224,6 +233,7 @@ function getAudiobookDataFromDir(folderPath, dir, parseSubtitle = false) {
|
|||||||
title = title.replace(replaceChunk, '').trim()
|
title = title.replace(replaceChunk, '').trim()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
var publishYear = null
|
var publishYear = null
|
||||||
|
Loading…
Reference in New Issue
Block a user