Merge pull request #768 from chrisk325/patch-3

fix: http streams redirect
This commit is contained in:
Nayif 2026-04-12 19:36:08 +05:30 committed by GitHub
commit 17c38babe5
2 changed files with 23 additions and 4 deletions

View file

@ -7,6 +7,14 @@ import androidx.media3.datasource.DefaultHttpDataSource
import com.nuvio.app.features.trailer.YoutubeChunkedDataSourceFactory
internal object PlatformPlaybackDataSourceFactory {
private val DEFAULT_STREAM_HEADERS = mapOf(
"User-Agent" to "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " +
"AppleWebKit/537.36 (KHTML, like Gecko) " +
"Chrome/120.0.0.0 Safari/537.36",
"Referer" to "https://www.strem.io/"
)
fun create(
context: Context,
defaultRequestHeaders: Map<String, String>,
@ -16,7 +24,9 @@ internal object PlatformPlaybackDataSourceFactory {
val networkFactory: DataSource.Factory = if (useYoutubeChunkedPlayback) {
YoutubeChunkedDataSourceFactory(defaultRequestHeaders = defaultRequestHeaders)
} else {
DefaultHttpDataSource.Factory().setDefaultRequestProperties(defaultRequestHeaders)
DefaultHttpDataSource.Factory()
.setAllowCrossProtocolRedirects(true)
.setDefaultRequestProperties(DEFAULT_STREAM_HEADERS + defaultRequestHeaders)
}
val baseFactory: DataSource.Factory = DefaultDataSource.Factory(context, networkFactory)
return if (defaultResponseHeaders.isEmpty()) {
@ -28,4 +38,4 @@ internal object PlatformPlaybackDataSourceFactory {
)
}
}
}
}

View file

@ -6,6 +6,14 @@ import androidx.media3.datasource.DefaultDataSource
import androidx.media3.datasource.DefaultHttpDataSource
internal object PlatformPlaybackDataSourceFactory {
private val DEFAULT_STREAM_HEADERS = mapOf(
"User-Agent" to "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " +
"AppleWebKit/537.36 (KHTML, like Gecko) " +
"Chrome/120.0.0.0 Safari/537.36",
"Referer" to "https://www.strem.io/"
)
fun create(
context: Context,
defaultRequestHeaders: Map<String, String>,
@ -13,7 +21,8 @@ internal object PlatformPlaybackDataSourceFactory {
useYoutubeChunkedPlayback: Boolean,
): DataSource.Factory {
val httpFactory = DefaultHttpDataSource.Factory()
.setDefaultRequestProperties(defaultRequestHeaders)
.setAllowCrossProtocolRedirects(true)
.setDefaultRequestProperties(DEFAULT_STREAM_HEADERS + defaultRequestHeaders)
val baseFactory: DataSource.Factory = DefaultDataSource.Factory(context, httpFactory)
return if (defaultResponseHeaders.isEmpty()) {
baseFactory
@ -24,4 +33,4 @@ internal object PlatformPlaybackDataSourceFactory {
)
}
}
}
}