Added json file support

This commit is contained in:
Keagan Hilliard 2022-11-02 19:40:50 -06:00
parent c6e9fe6513
commit c1938f78c2
3 changed files with 87 additions and 25 deletions

View file

@ -120,20 +120,22 @@ class AbMergeManager {
}
}
var chaptersFilePath = null
if (libraryItem.media.chapters.length) {
chaptersFilePath = Path.join(task.data.itemCachePath, 'chapters.txt')
try {
await toneHelpers.writeToneChaptersFile(libraryItem.media.chapters, chaptersFilePath)
} catch (error) {
Logger.error(`[AbMergeManager] Write chapters.txt failed`, error)
chaptersFilePath = null
}
var toneJsonPath = null
try {
toneJsonPath = Path.join(itemCacheDir, 'metadata.json')
await toneHelpers.writeToneMetadataJsonFile(libraryItem, toneJsonPath)
} catch (error) {
Logger.error(`[AudioMetadataManager] Write metadata.json failed`, error)
toneJsonPath = null
}
const toneMetadataObject = toneHelpers.getToneMetadataObject(libraryItem, chaptersFilePath)
toneMetadataObject.TrackNumber = 1
task.data.toneMetadataObject = toneMetadataObject
task.data.toneJsonObject = {
'ToneJsonFile': toneJsonPath,
'TrackNumber': 1,
}
Logger.debug(`[AbMergeManager] Book "${libraryItem.media.metadata.title}" tone metadata object=`, toneMetadataObject)
@ -190,7 +192,7 @@ class AbMergeManager {
}
// Write metadata to merged file
const success = await toneHelpers.tagAudioFile(task.data.tempFilepath, task.data.toneMetadataObject)
const success = await toneHelpers.tagAudioFile(task.data.tempFilepath, task.data.toneJsonObject)
if (!success) {
Logger.error(`[AbMergeManager] Failed to write metadata to file "${task.data.tempFilepath}"`)
task.setFailed('Failed to write metadata to m4b file')

View file

@ -43,23 +43,18 @@ class AudioMetadataMangaer {
this.emitter('audio_metadata_started', itemAudioMetadataPayload)
// Write chapters file
var chaptersFilePath = null
var toneJsonPath = null
const itemCacheDir = Path.join(global.MetadataPath, `cache/items/${libraryItem.id}`)
await fs.ensureDir(itemCacheDir)
if (libraryItem.media.chapters.length) {
chaptersFilePath = Path.join(itemCacheDir, 'chapters.txt')
try {
await toneHelpers.writeToneChaptersFile(libraryItem.media.chapters, chaptersFilePath)
} catch (error) {
Logger.error(`[AudioMetadataManager] Write chapters.txt failed`, error)
chaptersFilePath = null
}
try {
toneJsonPath = Path.join(itemCacheDir, 'metadata.json')
await toneHelpers.writeToneMetadataJsonFile(libraryItem, toneJsonPath)
} catch (error) {
Logger.error(`[AudioMetadataManager] Write metadata.json failed`, error)
toneJsonPath = null
}
const toneMetadataObject = toneHelpers.getToneMetadataObject(libraryItem, chaptersFilePath)
Logger.debug(`[AudioMetadataManager] Book "${libraryItem.media.metadata.title}" tone metadata object=`, toneMetadataObject)
const results = []
for (const af of audioFiles) {
const result = await this.updateAudioFileMetadataWithTone(libraryItem.id, af, toneMetadataObject, itemCacheDir)
@ -74,7 +69,7 @@ class AudioMetadataMangaer {
this.emitter('audio_metadata_finished', itemAudioMetadataPayload)
}
async updateAudioFileMetadataWithTone(libraryItemId, audioFile, toneMetadataObject, itemCacheDir) {
async updateAudioFileMetadataWithTone(libraryItemId, audioFile, toneJsonPath, itemCacheDir) {
const resultPayload = {
libraryItemId,
index: audioFile.index,
@ -93,8 +88,8 @@ class AudioMetadataMangaer {
}
const _toneMetadataObject = {
...toneMetadataObject,
'TrackNumber': audioFile.index
'ToneJsonFile': toneJsonPath,
'TrackNumber': audioFile.index,
}
resultPayload.success = await toneHelpers.tagAudioFile(audioFile.metadata.path, _toneMetadataObject)