mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-03-01 05:29:41 +00:00
feat: auto-populate series ASIN from Audible metadata
- Update Audible provider to return series ASIN in search results - Pass series ASIN through Match.vue when selecting metadata - Update Book.updateSeriesFromRequest to forward ASIN to Series model - Update Scanner to use series ASIN during quick match When using the Audible metadata provider, the series ASIN is now automatically captured and stored with the series.
This commit is contained in:
parent
edbd49c4c1
commit
d5a2ea9feb
4 changed files with 38 additions and 7 deletions
|
|
@ -303,17 +303,35 @@ class Scanner {
|
|||
Logger.info(`[Scanner] quickMatchBookBuildUpdatePayload: Updated series sequence for "${existingSeries.name}" to ${seriesMatchItem.sequence} in "${libraryItem.media.title}"`)
|
||||
hasSeriesUpdates = true
|
||||
}
|
||||
// Update series ASIN if provided and not already set
|
||||
if (seriesMatchItem.asin && !existingSeries.audibleSeriesAsin) {
|
||||
existingSeries.set({ audibleSeriesAsin: seriesMatchItem.asin })
|
||||
if (existingSeries.changed()) {
|
||||
await existingSeries.save()
|
||||
SocketAuthority.emitter('series_updated', existingSeries.toOldJSON())
|
||||
Logger.info(`[Scanner] quickMatchBookBuildUpdatePayload: Updated series "${existingSeries.name}" with ASIN ${seriesMatchItem.asin}`)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
let seriesItem = await Database.seriesModel.getByNameAndLibrary(seriesMatchItem.series, libraryItem.libraryId)
|
||||
if (!seriesItem) {
|
||||
seriesItem = await Database.seriesModel.create({
|
||||
name: seriesMatchItem.series,
|
||||
nameIgnorePrefix: getTitleIgnorePrefix(seriesMatchItem.series),
|
||||
libraryId: libraryItem.libraryId
|
||||
libraryId: libraryItem.libraryId,
|
||||
audibleSeriesAsin: seriesMatchItem.asin || null
|
||||
})
|
||||
// Update filter data
|
||||
Database.addSeriesToFilterData(libraryItem.libraryId, seriesItem.name, seriesItem.id)
|
||||
SocketAuthority.emitter('series_added', seriesItem.toOldJSON())
|
||||
} else if (seriesMatchItem.asin && !seriesItem.audibleSeriesAsin) {
|
||||
// Series exists but has no ASIN, update it
|
||||
seriesItem.set({ audibleSeriesAsin: seriesMatchItem.asin })
|
||||
if (seriesItem.changed()) {
|
||||
await seriesItem.save()
|
||||
SocketAuthority.emitter('series_updated', seriesItem.toOldJSON())
|
||||
Logger.info(`[Scanner] quickMatchBookBuildUpdatePayload: Updated series "${seriesItem.name}" with ASIN ${seriesMatchItem.asin}`)
|
||||
}
|
||||
}
|
||||
const bookSeries = await Database.bookSeriesModel.create({
|
||||
seriesId: seriesItem.id,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue