[skip ci] chore(lib/playlist-utils): Prevent problems with multiple headers (#2151)
This commit is contained in:
@ -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),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user