mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-12-07 04:19:41 +00:00
Fix issue with episode downloads without streams, fallback to regular dl on ffprobe fail
This commit is contained in:
parent
85d5531bc1
commit
a456865ec0
2 changed files with 28 additions and 21 deletions
|
|
@ -127,10 +127,20 @@ class PodcastManager {
|
|||
})
|
||||
let success = !!ffmpegDownloadResponse?.success
|
||||
|
||||
// If failed due to ffmpeg error, retry without tagging
|
||||
if (success) {
|
||||
// Attempt to ffprobe and add podcast episode audio file
|
||||
success = await this.scanAddPodcastEpisodeAudioFile()
|
||||
if (!success) {
|
||||
Logger.error(`[PodcastManager] Failed to scan and add podcast episode audio file - removing file`)
|
||||
await fs.remove(this.currentDownload.targetPath)
|
||||
}
|
||||
}
|
||||
|
||||
// If failed due to ffmpeg or ffprobe error, retry without tagging
|
||||
// e.g. RSS feed may have incorrect file extension and file type
|
||||
// See https://github.com/advplyr/audiobookshelf/issues/3837
|
||||
if (!success && ffmpegDownloadResponse?.isFfmpegError) {
|
||||
// e.g. Ffmpeg may be download the file without streams causing the ffprobe to fail
|
||||
if (!success && !ffmpegDownloadResponse?.isRequestError) {
|
||||
Logger.info(`[PodcastManager] Retrying episode download without tagging`)
|
||||
// Download episode only
|
||||
success = await downloadFile(this.currentDownload.url, this.currentDownload.targetPath)
|
||||
|
|
@ -139,23 +149,20 @@ class PodcastManager {
|
|||
Logger.error(`[PodcastManager] Podcast Episode download failed`, error)
|
||||
return false
|
||||
})
|
||||
|
||||
if (success) {
|
||||
success = await this.scanAddPodcastEpisodeAudioFile()
|
||||
if (!success) {
|
||||
Logger.error(`[PodcastManager] Failed to scan and add podcast episode audio file - removing file`)
|
||||
await fs.remove(this.currentDownload.targetPath)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (success) {
|
||||
success = await this.scanAddPodcastEpisodeAudioFile()
|
||||
if (!success) {
|
||||
await fs.remove(this.currentDownload.targetPath)
|
||||
this.currentDownload.setFinished(false)
|
||||
const taskFailedString = {
|
||||
text: 'Failed',
|
||||
key: 'MessageTaskFailed'
|
||||
}
|
||||
task.setFailed(taskFailedString)
|
||||
} else {
|
||||
Logger.info(`[PodcastManager] Successfully downloaded podcast episode "${this.currentDownload.episodeTitle}"`)
|
||||
this.currentDownload.setFinished(true)
|
||||
task.setFinished()
|
||||
}
|
||||
Logger.info(`[PodcastManager] Successfully downloaded podcast episode "${this.currentDownload.episodeTitle}"`)
|
||||
this.currentDownload.setFinished(true)
|
||||
task.setFinished()
|
||||
} else {
|
||||
const taskFailedString = {
|
||||
text: 'Failed',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue