From 8d1f4606400af8ebb521c39d64e3a4dabc69a00c Mon Sep 17 00:00:00 2001 From: renesat Date: Sat, 16 Aug 2025 18:56:23 +0200 Subject: [PATCH 1/4] Fix freeze on some audio sources --- server/utils/ffmpegHelpers.js | 1 + 1 file changed, 1 insertion(+) diff --git a/server/utils/ffmpegHelpers.js b/server/utils/ffmpegHelpers.js index 357a20845..0c4da5f95 100644 --- a/server/utils/ffmpegHelpers.js +++ b/server/utils/ffmpegHelpers.js @@ -118,6 +118,7 @@ module.exports.downloadPodcastEpisode = (podcastEpisodeDownload) => { method: 'GET', responseType: 'stream', headers: { + 'Accept': '*/*', 'User-Agent': userAgent }, timeout: global.PodcastDownloadTimeout From 2cc6e56bd15f0820aa2f2b266ef8dcaf75a93cd2 Mon Sep 17 00:00:00 2001 From: laxandrea Date: Tue, 19 Aug 2025 15:29:49 +0200 Subject: [PATCH 2/4] remove token from hls url - following PR #4263 --- server/objects/Stream.js | 2 +- server/utils/generators/hlsPlaylistGenerator.js | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/server/objects/Stream.js b/server/objects/Stream.js index 813ecf146..d9bdd583c 100644 --- a/server/objects/Stream.js +++ b/server/objects/Stream.js @@ -146,7 +146,7 @@ class Stream extends EventEmitter { async generatePlaylist() { await fs.ensureDir(this.streamPath) - await hlsPlaylistGenerator(this.playlistPath, 'output', this.totalDuration, this.segmentLength, this.hlsSegmentType, this.userToken) + await hlsPlaylistGenerator(this.playlistPath, 'output', this.totalDuration, this.segmentLength, this.hlsSegmentType) return this.clientPlaylistUri } diff --git a/server/utils/generators/hlsPlaylistGenerator.js b/server/utils/generators/hlsPlaylistGenerator.js index 58c1d69ae..369c1456d 100644 --- a/server/utils/generators/hlsPlaylistGenerator.js +++ b/server/utils/generators/hlsPlaylistGenerator.js @@ -1,6 +1,6 @@ const fs = require('../../libs/fsExtra') -function getPlaylistStr(segmentName, duration, segmentLength, hlsSegmentType, token) { +function getPlaylistStr(segmentName, duration, segmentLength, hlsSegmentType) { var ext = hlsSegmentType === 'fmp4' ? 'm4s' : 'ts' var lines = [ @@ -18,18 +18,18 @@ function getPlaylistStr(segmentName, duration, segmentLength, hlsSegmentType, to var lastSegment = duration - (numSegments * segmentLength) for (let i = 0; i < numSegments; i++) { lines.push(`#EXTINF:6,`) - lines.push(`${segmentName}-${i}.${ext}?token=${token}`) + lines.push(`${segmentName}-${i}.${ext}`) } if (lastSegment > 0) { lines.push(`#EXTINF:${lastSegment},`) - lines.push(`${segmentName}-${numSegments}.${ext}?token=${token}`) + lines.push(`${segmentName}-${numSegments}.${ext}`) } lines.push('#EXT-X-ENDLIST') return lines.join('\n') } -function generatePlaylist(outputPath, segmentName, duration, segmentLength, hlsSegmentType, token) { - var playlistStr = getPlaylistStr(segmentName, duration, segmentLength, hlsSegmentType, token) +function generatePlaylist(outputPath, segmentName, duration, segmentLength, hlsSegmentType) { + var playlistStr = getPlaylistStr(segmentName, duration, segmentLength, hlsSegmentType) return fs.writeFile(outputPath, playlistStr) } module.exports = generatePlaylist \ No newline at end of file From 9987d219f85a8b0d96eb2ed237bee9e15023c288 Mon Sep 17 00:00:00 2001 From: advplyr Date: Tue, 19 Aug 2025 16:50:43 -0500 Subject: [PATCH 3/4] Remove success toast on podcast episodes removed #4606 --- client/components/modals/podcast/RemoveEpisode.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/client/components/modals/podcast/RemoveEpisode.vue b/client/components/modals/podcast/RemoveEpisode.vue index b2cebe84e..0222528e3 100644 --- a/client/components/modals/podcast/RemoveEpisode.vue +++ b/client/components/modals/podcast/RemoveEpisode.vue @@ -94,7 +94,6 @@ export default { } this.processing = false - this.$toast.success(`${this.episodes.length} episode${this.episodes.length > 1 ? 's' : ''} removed`) this.show = false this.$emit('clearSelected') } From e4b9ac5446009ba7d64900879ed4ef5e30e7c3c8 Mon Sep 17 00:00:00 2001 From: advplyr Date: Tue, 19 Aug 2025 16:52:50 -0500 Subject: [PATCH 4/4] Add episode updated translation for podcast match #4606 --- client/components/modals/podcast/tabs/EpisodeMatch.vue | 2 +- client/strings/en-us.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/client/components/modals/podcast/tabs/EpisodeMatch.vue b/client/components/modals/podcast/tabs/EpisodeMatch.vue index dbea4e70b..c7ac60cd3 100644 --- a/client/components/modals/podcast/tabs/EpisodeMatch.vue +++ b/client/components/modals/podcast/tabs/EpisodeMatch.vue @@ -114,7 +114,7 @@ export default { .$patch(`/api/podcasts/${this.libraryItem.id}/episode/${this.episodeId}`, updatePayload) .then(() => { this.isProcessing = false - this.$toast.success('Podcast episode updated') + this.$toast.success(this.$strings.ToastPodcastEpisodeUpdated) this.$emit('selectTab', 'details') }) .catch((error) => { diff --git a/client/strings/en-us.json b/client/strings/en-us.json index 5885445b8..77e9e07a6 100644 --- a/client/strings/en-us.json +++ b/client/strings/en-us.json @@ -1096,6 +1096,7 @@ "ToastPlaylistUpdateSuccess": "Playlist updated", "ToastPodcastCreateFailed": "Failed to create podcast", "ToastPodcastCreateSuccess": "Podcast created successfully", + "ToastPodcastEpisodeUpdated": "Episode updated", "ToastPodcastGetFeedFailed": "Failed to get podcast feed", "ToastPodcastNoEpisodesInFeed": "No episodes found in RSS feed", "ToastPodcastNoRssFeed": "Podcast does not have an RSS feed",