[skip ci] chore(lib/playlist-utils): Prevent problems with multiple headers (#2151)

This commit is contained in:
Claudemirovsky
2023-09-06 06:30:21 -03:00
committed by GitHub
parent 2978c90350
commit fff54d8efb

View File

@ -83,9 +83,8 @@ class PlaylistUtils(private val client: OkHttpClient, private val headers: Heade
): List<Video> { ): List<Video> {
val masterHeaders = masterHeadersGen(headers, referer) val masterHeaders = masterHeadersGen(headers, referer)
val masterPlaylist = client.newCall( val masterPlaylist = client.newCall(GET(playlistUrl, masterHeaders)).execute()
GET(playlistUrl, headers = masterHeaders) .use { it.body.string() }
).execute().body.string()
// Check if there isn't multiple streams available // Check if there isn't multiple streams available
if (PLAYLIST_SEPARATOR !in masterPlaylist) { if (PLAYLIST_SEPARATOR !in masterPlaylist) {
@ -96,7 +95,9 @@ class PlaylistUtils(private val client: OkHttpClient, private val headers: Heade
) )
} }
val masterBase = "https://${playlistUrl.toHttpUrl().host}${playlistUrl.toHttpUrl().encodedPath}" val playlistHttpUrl = playlistUrl.toHttpUrl()
val masterBase = "https://${playlistHttpUrl.host}${playlistHttpUrl.encodedPath}"
.substringBeforeLast("/") + "/" .substringBeforeLast("/") + "/"
// Get subtitles // Get subtitles
@ -145,10 +146,10 @@ class PlaylistUtils(private val client: OkHttpClient, private val headers: Heade
fun generateMasterHeaders(baseHeaders: Headers, referer: String): Headers { fun generateMasterHeaders(baseHeaders: Headers, referer: String): Headers {
return baseHeaders.newBuilder().apply { return baseHeaders.newBuilder().apply {
add("Accept", "*/*") set("Accept", "*/*")
if (referer.isNotEmpty()) { if (referer.isNotEmpty()) {
add("Origin", "https://${referer.toHttpUrl().host}") set("Origin", "https://${referer.toHttpUrl().host}")
add("Referer", referer) set("Referer", referer)
} }
}.build() }.build()
} }
@ -275,9 +276,8 @@ class PlaylistUtils(private val client: OkHttpClient, private val headers: Heade
): List<Video> { ): List<Video> {
val mpdHeaders = mpdHeadersGen(headers, referer) val mpdHeaders = mpdHeadersGen(headers, referer)
val doc = client.newCall( val doc = client.newCall(GET(mpdUrl, mpdHeaders)).execute()
GET(mpdUrl, headers = mpdHeaders) .use { it.asJsoup() }
).execute().asJsoup()
// Get audio tracks // Get audio tracks
val audioTracks = audioList + doc.select("Representation[mimetype~=audio]").map { audioSrc -> val audioTracks = audioList + doc.select("Representation[mimetype~=audio]").map { audioSrc ->
@ -288,14 +288,15 @@ class PlaylistUtils(private val client: OkHttpClient, private val headers: Heade
return doc.select("Representation[mimetype~=video]").map { videoSrc -> return doc.select("Representation[mimetype~=video]").map { videoSrc ->
val bandwidth = videoSrc.attr("bandwidth") val bandwidth = videoSrc.attr("bandwidth")
val res = videoSrc.attr("height") + "p" val res = videoSrc.attr("height") + "p"
val videoUrl = videoSrc.text()
Video( Video(
videoSrc.text(), videoUrl,
videoNameGen(res, bandwidth), videoNameGen(res, bandwidth),
videoSrc.text(), videoUrl,
audioTracks = audioTracks, audioTracks = audioTracks,
subtitleTracks = subtitleList, subtitleTracks = subtitleList,
headers = videoHeadersGen(headers, referer, videoSrc.text()) headers = videoHeadersGen(headers, referer, videoUrl),
) )
} }
} }