allmovies: fix video links

This commit is contained in:
jmir1
2022-04-25 16:47:03 +02:00
parent 788a549a6e
commit 3a59c8426b
2 changed files with 18 additions and 30 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'AllMovies' extName = 'AllMovies'
pkgNameSuffix = 'en.allmovies' pkgNameSuffix = 'en.allmovies'
extClass = '.AllMovies' extClass = '.AllMovies'
extVersionCode = 8 extVersionCode = 9
libVersion = '12' libVersion = '12'
} }

View File

@ -66,10 +66,9 @@ class AllMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val episodeList = mutableListOf<SEpisode>() val episodeList = mutableListOf<SEpisode>()
val seriesLink = document.select("link[rel=canonical]").attr("abs:href") val seriesLink = document.select("link[rel=canonical]").attr("abs:href")
if (seriesLink.contains("/series/")) { if (seriesLink.contains("/series/")) {
val seasonUrl = seriesLink
val seasonsHtml = client.newCall( val seasonsHtml = client.newCall(
GET( GET(
seasonUrl, seriesLink,
headers = Headers.headersOf("Referer", document.location()) headers = Headers.headersOf("Referer", document.location())
) )
).execute().asJsoup() ).execute().asJsoup()
@ -79,45 +78,36 @@ class AllMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
episodeList.addAll(seasonEpList) episodeList.addAll(seasonEpList)
} }
} else { } else {
val movieUrl = seriesLink
val episode = SEpisode.create() val episode = SEpisode.create()
episode.name = document.select("div.TPMvCn h1.Title").text() episode.name = document.select("div.TPMvCn h1.Title").text()
episode.episode_number = 1F episode.episode_number = 1F
episode.setUrlWithoutDomain(movieUrl) episode.setUrlWithoutDomain(seriesLink)
episodeList.add(episode) episodeList.add(episode)
} }
return episodeList return episodeList.reversed()
} }
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used") override fun episodeFromElement(element: Element): SEpisode {
val episode = SEpisode.create()
episode.episode_number = element.select("td > span.Num").text().toFloat()
val seasonNum = element.ownerDocument().select("div.Title span").text()
episode.name = "Season $seasonNum" + "x" + element.select("td span.Num").text() + " : " + element.select("td.MvTbTtl > a").text()
episode.setUrlWithoutDomain(element.select("td.MvTbPly > a.ClA").attr("abs:href"))
return episode
}
private fun parseEpisodesFromSeries(element: Element): List<SEpisode> { private fun parseEpisodesFromSeries(element: Element): List<SEpisode> {
val seasonId = element.attr("abs:href") val seasonId = element.attr("abs:href")
val seasonName = element.text() val episodesHtml = client.newCall(GET(seasonId)).execute().asJsoup()
val episodesUrl = seasonId
val episodesHtml = client.newCall(
GET(
episodesUrl,
)
).execute().asJsoup()
val episodeElements = episodesHtml.select("tr.Viewed") val episodeElements = episodesHtml.select("tr.Viewed")
return episodeElements.map { episodeFromElement(it, seasonName) } return episodeElements.map { episodeFromElement(it) }
}
private fun episodeFromElement(element: Element, seasonName: String): SEpisode {
val episode = SEpisode.create()
episode.episode_number = element.select("td > span.Num").text().toFloat()
val SeasonNum = element.ownerDocument().select("div.Title span").text()
episode.name = "Season $SeasonNum" + "x" + element.select("td span.Num").text() + " : " + element.select("td.MvTbTtl > a").text()
episode.setUrlWithoutDomain(element.select("td.MvTbPly > a.ClA").attr("abs:href"))
return episode
} }
// Video urls // Video urls
override fun videoListRequest(episode: SEpisode): Request { override fun videoListRequest(episode: SEpisode): Request {
val document = client.newCall(GET(baseUrl + episode.url)).execute().asJsoup() val document = client.newCall(GET(baseUrl + episode.url)).execute().asJsoup()
val iframe = document.select("iframe[src^=\"/?trembed\"]").attr("abs:src") val iframe = document.select("iframe[src*=/?trembed]").attr("abs:src")
return GET(iframe) return GET(iframe)
} }
@ -147,13 +137,11 @@ class AllMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val data = script.data() val data = script.data()
val masterUrl = masterExtractor(data) val masterUrl = masterExtractor(data)
val masterPlaylist = client.newCall(GET(masterUrl)).execute().body!!.string() val masterPlaylist = client.newCall(GET(masterUrl)).execute().body!!.string()
val videoList = mutableListOf<Video>()
masterPlaylist.substringAfter("#EXT-X-STREAM-INF:").split("#EXT-X-STREAM-INF:").forEach { masterPlaylist.substringAfter("#EXT-X-STREAM-INF:").split("#EXT-X-STREAM-INF:").forEach {
val quality = it.substringAfter("RESOLUTION=").substringAfter("x").substringBefore(",") + "p" val quality = it.substringAfter("RESOLUTION=").substringAfter("x").substringBefore(",") + "p"
val videoUrl = it.substringAfter("\n").substringBefore("\n") val videoUrl = it.substringAfter("\n").substringBefore("\n")
videoList.add(Video(videoUrl, quality, videoUrl, null)) videoList.add(Video(videoUrl, quality, videoUrl, null))
} }
return videoList
} }
} }
} }
@ -172,7 +160,7 @@ class AllMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val numbers = numbersRegex.findAll(code).map { val numbers = numbersRegex.findAll(code).map {
it.value.toInt() it.value.toInt()
}.toList() }.toList()
var a = numbers[0] val a = numbers[0]
var c = numbers[1] - 1 var c = numbers[1] - 1
while (c >= 0) { while (c >= 0) {
@ -252,8 +240,8 @@ class AllMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val url = "$baseUrl/category/".toHttpUrlOrNull()!!.newBuilder() val url = "$baseUrl/category/".toHttpUrlOrNull()!!.newBuilder()
filters.forEach { filter -> filters.forEach { filter ->
when (filter) { when (filter) {
is GenreFilter -> url.addPathSegment(filter.toUriPart()) is GenreFilter -> url.addPathSegment(filter.toUriPart())
else -> {}
} }
} }
url.addPathSegment("page") url.addPathSegment("page")
@ -282,7 +270,7 @@ class AllMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// Latest // Latest
override fun latestUpdatesNextPageSelector(): String? = throw Exception("Not used") override fun latestUpdatesNextPageSelector(): String = throw Exception("Not used")
override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not used") override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not used")