mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2024-12-20 19:06:06 +01:00
Fix:Downloading podcast episode when file extension is mp3 but enclosure type is not mp3 #3711
This commit is contained in:
parent
e616b53877
commit
329bbea043
@ -25,7 +25,9 @@ const LibraryItem = require('../objects/LibraryItem')
|
|||||||
|
|
||||||
class PodcastManager {
|
class PodcastManager {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
/** @type {PodcastEpisodeDownload[]} */
|
||||||
this.downloadQueue = []
|
this.downloadQueue = []
|
||||||
|
/** @type {PodcastEpisodeDownload} */
|
||||||
this.currentDownload = null
|
this.currentDownload = null
|
||||||
|
|
||||||
this.failedCheckMap = {}
|
this.failedCheckMap = {}
|
||||||
@ -63,6 +65,11 @@ class PodcastManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {PodcastEpisodeDownload} podcastEpisodeDownload
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
async startPodcastEpisodeDownload(podcastEpisodeDownload) {
|
async startPodcastEpisodeDownload(podcastEpisodeDownload) {
|
||||||
if (this.currentDownload) {
|
if (this.currentDownload) {
|
||||||
this.downloadQueue.push(podcastEpisodeDownload)
|
this.downloadQueue.push(podcastEpisodeDownload)
|
||||||
@ -106,7 +113,7 @@ class PodcastManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let success = false
|
let success = false
|
||||||
if (this.currentDownload.urlFileExtension === 'mp3') {
|
if (this.currentDownload.isMp3) {
|
||||||
// Download episode and tag it
|
// Download episode and tag it
|
||||||
success = await ffmpegHelpers.downloadPodcastEpisode(this.currentDownload).catch((error) => {
|
success = await ffmpegHelpers.downloadPodcastEpisode(this.currentDownload).catch((error) => {
|
||||||
Logger.error(`[PodcastManager] Podcast Episode download failed`, error)
|
Logger.error(`[PodcastManager] Podcast Episode download failed`, error)
|
||||||
|
@ -53,6 +53,20 @@ class PodcastEpisodeDownload {
|
|||||||
if (globals.SupportedAudioTypes.includes(extname)) return extname
|
if (globals.SupportedAudioTypes.includes(extname)) return extname
|
||||||
return 'mp3'
|
return 'mp3'
|
||||||
}
|
}
|
||||||
|
get enclosureType() {
|
||||||
|
const enclosureType = this.podcastEpisode?.enclosure?.type
|
||||||
|
return typeof enclosureType === 'string' ? enclosureType : null
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* RSS feed may have an episode with file extension of mp3 but the specified enclosure type is not mpeg.
|
||||||
|
* @see https://github.com/advplyr/audiobookshelf/issues/3711
|
||||||
|
*
|
||||||
|
* @returns {boolean}
|
||||||
|
*/
|
||||||
|
get isMp3() {
|
||||||
|
if (this.enclosureType && !this.enclosureType.includes('mpeg')) return false
|
||||||
|
return this.fileExtension === 'mp3'
|
||||||
|
}
|
||||||
|
|
||||||
get targetFilename() {
|
get targetFilename() {
|
||||||
const appendage = this.appendEpisodeId ? ` (${this.podcastEpisode.id})` : ''
|
const appendage = this.appendEpisodeId ? ` (${this.podcastEpisode.id})` : ''
|
||||||
|
Loading…
Reference in New Issue
Block a user