diff --git a/app/src/main/java/io/legado/app/help/ExoPlayerHelper.kt b/app/src/main/java/io/legado/app/help/ExoPlayerHelper.kt index 1b664f46f..32d267027 100644 --- a/app/src/main/java/io/legado/app/help/ExoPlayerHelper.kt +++ b/app/src/main/java/io/legado/app/help/ExoPlayerHelper.kt @@ -15,9 +15,13 @@ import io.legado.app.help.http.okHttpClient object ExoPlayerHelper { - fun createMediaSource(uri: Uri, overrideExtension: String? = null): MediaSource { + fun createMediaSource( + uri: Uri, + overrideExtension: String? = null, + userAgent: String + ): MediaSource { val mediaItem = MediaItem.fromUri(uri) - val dataSourceFactory = OkHttpDataSource.Factory(okHttpClient) + val dataSourceFactory = OkHttpDataSource.Factory(okHttpClient).setUserAgent(userAgent) val mediaSourceFactory = when (inferContentType(uri, overrideExtension)) { C.TYPE_SS -> SsMediaSource.Factory(dataSourceFactory) C.TYPE_DASH -> DashMediaSource.Factory(dataSourceFactory) diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt index 3ecb96f80..99b636a48 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt @@ -410,6 +410,10 @@ class AnalyzeUrl( return GlideUrl(urlHasQuery, headers.build()) } + fun getUserAgent(): String { + return headerMap[UA_NAME] ?: AppConfig.userAgent + } + override fun getSource(): BaseSource? { return source } diff --git a/app/src/main/java/io/legado/app/service/AudioPlayService.kt b/app/src/main/java/io/legado/app/service/AudioPlayService.kt index 6dc7cbbd5..73fd349b7 100644 --- a/app/src/main/java/io/legado/app/service/AudioPlayService.kt +++ b/app/src/main/java/io/legado/app/service/AudioPlayService.kt @@ -131,7 +131,8 @@ class AudioPlayService : BaseService(), useWebView = true ) val uri = Uri.parse(analyzeUrl.url) - val mediaSource = ExoPlayerHelper.createMediaSource(uri) + val mediaSource = ExoPlayerHelper + .createMediaSource(uri, userAgent = analyzeUrl.getUserAgent()) exoPlayer.setMediaSource(mediaSource) exoPlayer.playWhenReady = true exoPlayer.prepare()