Compare commits

...

6 commits

Author SHA1 Message Date
advplyr
3801ef062a
Merge pull request #4596 from renesat/fix/redirect-url
Some checks are pending
CodeQL / Analyze (push) Waiting to run
Run Component Tests / Run Component Tests (push) Waiting to run
Build and Push Docker Image / build (push) Waiting to run
Verify all i18n files are alphabetized / update_translations (push) Waiting to run
Integration Test / build and test (push) Waiting to run
Run Unit Tests / Run Unit Tests (push) Waiting to run
Fix freeze on some audio sources
2025-08-19 18:11:13 -04:00
advplyr
e4b9ac5446 Add episode updated translation for podcast match #4606 2025-08-19 16:52:50 -05:00
advplyr
9987d219f8 Remove success toast on podcast episodes removed #4606 2025-08-19 16:50:43 -05:00
advplyr
dc7045c562
Merge pull request #4608 from laxandrea/remove-token-from-hls-url
Remove token from hls url
2025-08-19 17:29:10 -04:00
laxandrea
2cc6e56bd1 remove token from hls url
- following PR #4263
2025-08-19 15:29:49 +02:00
renesat
8d1f460640
Fix freeze on some audio sources 2025-08-16 18:56:23 +02:00
6 changed files with 9 additions and 8 deletions

View file

@ -94,7 +94,6 @@ export default {
} }
this.processing = false this.processing = false
this.$toast.success(`${this.episodes.length} episode${this.episodes.length > 1 ? 's' : ''} removed`)
this.show = false this.show = false
this.$emit('clearSelected') this.$emit('clearSelected')
} }

View file

@ -114,7 +114,7 @@ export default {
.$patch(`/api/podcasts/${this.libraryItem.id}/episode/${this.episodeId}`, updatePayload) .$patch(`/api/podcasts/${this.libraryItem.id}/episode/${this.episodeId}`, updatePayload)
.then(() => { .then(() => {
this.isProcessing = false this.isProcessing = false
this.$toast.success('Podcast episode updated') this.$toast.success(this.$strings.ToastPodcastEpisodeUpdated)
this.$emit('selectTab', 'details') this.$emit('selectTab', 'details')
}) })
.catch((error) => { .catch((error) => {

View file

@ -1096,6 +1096,7 @@
"ToastPlaylistUpdateSuccess": "Playlist updated", "ToastPlaylistUpdateSuccess": "Playlist updated",
"ToastPodcastCreateFailed": "Failed to create podcast", "ToastPodcastCreateFailed": "Failed to create podcast",
"ToastPodcastCreateSuccess": "Podcast created successfully", "ToastPodcastCreateSuccess": "Podcast created successfully",
"ToastPodcastEpisodeUpdated": "Episode updated",
"ToastPodcastGetFeedFailed": "Failed to get podcast feed", "ToastPodcastGetFeedFailed": "Failed to get podcast feed",
"ToastPodcastNoEpisodesInFeed": "No episodes found in RSS feed", "ToastPodcastNoEpisodesInFeed": "No episodes found in RSS feed",
"ToastPodcastNoRssFeed": "Podcast does not have an RSS feed", "ToastPodcastNoRssFeed": "Podcast does not have an RSS feed",

View file

@ -146,7 +146,7 @@ class Stream extends EventEmitter {
async generatePlaylist() { async generatePlaylist() {
await fs.ensureDir(this.streamPath) 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 return this.clientPlaylistUri
} }

View file

@ -118,6 +118,7 @@ module.exports.downloadPodcastEpisode = (podcastEpisodeDownload) => {
method: 'GET', method: 'GET',
responseType: 'stream', responseType: 'stream',
headers: { headers: {
'Accept': '*/*',
'User-Agent': userAgent 'User-Agent': userAgent
}, },
timeout: global.PodcastDownloadTimeout timeout: global.PodcastDownloadTimeout

View file

@ -1,6 +1,6 @@
const fs = require('../../libs/fsExtra') 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 ext = hlsSegmentType === 'fmp4' ? 'm4s' : 'ts'
var lines = [ var lines = [
@ -18,18 +18,18 @@ function getPlaylistStr(segmentName, duration, segmentLength, hlsSegmentType, to
var lastSegment = duration - (numSegments * segmentLength) var lastSegment = duration - (numSegments * segmentLength)
for (let i = 0; i < numSegments; i++) { for (let i = 0; i < numSegments; i++) {
lines.push(`#EXTINF:6,`) lines.push(`#EXTINF:6,`)
lines.push(`${segmentName}-${i}.${ext}?token=${token}`) lines.push(`${segmentName}-${i}.${ext}`)
} }
if (lastSegment > 0) { if (lastSegment > 0) {
lines.push(`#EXTINF:${lastSegment},`) lines.push(`#EXTINF:${lastSegment},`)
lines.push(`${segmentName}-${numSegments}.${ext}?token=${token}`) lines.push(`${segmentName}-${numSegments}.${ext}`)
} }
lines.push('#EXT-X-ENDLIST') lines.push('#EXT-X-ENDLIST')
return lines.join('\n') return lines.join('\n')
} }
function generatePlaylist(outputPath, segmentName, duration, segmentLength, hlsSegmentType, token) { function generatePlaylist(outputPath, segmentName, duration, segmentLength, hlsSegmentType) {
var playlistStr = getPlaylistStr(segmentName, duration, segmentLength, hlsSegmentType, token) var playlistStr = getPlaylistStr(segmentName, duration, segmentLength, hlsSegmentType)
return fs.writeFile(outputPath, playlistStr) return fs.writeFile(outputPath, playlistStr)
} }
module.exports = generatePlaylist module.exports = generatePlaylist