[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> {
val masterHeaders = masterHeadersGen(headers, referer)
val masterPlaylist = client.newCall(
GET(playlistUrl, headers = masterHeaders)
).execute().body.string()
val masterPlaylist = client.newCall(GET(playlistUrl, masterHeaders)).execute()
.use { it.body.string() }
// Check if there isn't multiple streams available
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("/") + "/"
// Get subtitles
@ -145,10 +146,10 @@ class PlaylistUtils(private val client: OkHttpClient, private val headers: Heade
fun generateMasterHeaders(baseHeaders: Headers, referer: String): Headers {
return baseHeaders.newBuilder().apply {
add("Accept", "*/*")
set("Accept", "*/*")
if (referer.isNotEmpty()) {
add("Origin", "https://${referer.toHttpUrl().host}")
add("Referer", referer)
set("Origin", "https://${referer.toHttpUrl().host}")
set("Referer", referer)
}
}.build()
}
@ -275,9 +276,8 @@ class PlaylistUtils(private val client: OkHttpClient, private val headers: Heade
): List<Video> {
val mpdHeaders = mpdHeadersGen(headers, referer)
val doc = client.newCall(
GET(mpdUrl, headers = mpdHeaders)
).execute().asJsoup()
val doc = client.newCall(GET(mpdUrl, mpdHeaders)).execute()
.use { it.asJsoup() }
// Get audio tracks
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 ->
val bandwidth = videoSrc.attr("bandwidth")
val res = videoSrc.attr("height") + "p"
val videoUrl = videoSrc.text()
Video(
videoSrc.text(),
videoUrl,
videoNameGen(res, bandwidth),
videoSrc.text(),
videoUrl,
audioTracks = audioTracks,
subtitleTracks = subtitleList,
headers = videoHeadersGen(headers, referer, videoSrc.text())
headers = videoHeadersGen(headers, referer, videoUrl),
)
}
}