allmovies: fix video links
This commit is contained in:
@ -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'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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")
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user