Fix:Podcast episode downloads where RSS feed uses the same title #1802

This commit is contained in:
advplyr 2023-05-28 11:24:51 -05:00
parent 7a0f27e3cc
commit ea79948122
3 changed files with 14 additions and 2 deletions

View File

@ -84,6 +84,13 @@ class PodcastManager {
SocketAuthority.emitter('episode_download_started', podcastEpisodeDownload.toJSONForClient())
this.currentDownload = podcastEpisodeDownload
// If this file already exists then append the episode id to the filename
// e.g. "/tagesschau 20 Uhr.mp3" becomes "/tagesschau 20 Uhr (ep_asdfasdf).mp3"
// this handles podcasts where every title is the same (ref https://github.com/advplyr/audiobookshelf/issues/1802)
if (await fs.pathExists(this.currentDownload.targetPath)) {
this.currentDownload.appendEpisodeId = true
}
// Ignores all added files to this dir
this.watcher.addIgnoreDir(this.currentDownload.libraryItem.path)

View File

@ -15,6 +15,8 @@ class PodcastEpisodeDownload {
this.isFinished = false
this.failed = false
this.appendEpisodeId = false
this.startedAt = null
this.createdAt = null
this.finishedAt = null
@ -29,6 +31,7 @@ class PodcastEpisodeDownload {
libraryId: this.libraryId || null,
isFinished: this.isFinished,
failed: this.failed,
appendEpisodeId: this.appendEpisodeId,
startedAt: this.startedAt,
createdAt: this.createdAt,
finishedAt: this.finishedAt,
@ -52,7 +55,9 @@ class PodcastEpisodeDownload {
}
get targetFilename() {
return sanitizeFilename(`${this.podcastEpisode.title}.${this.fileExtension}`)
const appendage = this.appendEpisodeId ? ` (${this.podcastEpisode.id})` : ''
const filename = `${this.podcastEpisode.title}${appendage}.${this.fileExtension}`
return sanitizeFilename(filename)
}
get targetPath() {
return Path.join(this.libraryItem.path, this.targetFilename)

View File

@ -109,7 +109,7 @@ class PodcastEpisode {
}
get size() { return this.audioFile.metadata.size }
get enclosureUrl() {
return this.enclosure ? this.enclosure.url : null
return this.enclosure?.url || null
}
get pubYear() {
if (!this.publishedAt) return null