sora: fix some sources & solved #299

This commit is contained in:
helo 2023-09-28 21:05:17 +07:00
parent 39de0eb2b6
commit ab50fee8a5
18 changed files with 110 additions and 152 deletions

View file

@ -1,5 +1,5 @@
// use an integer for version numbers
version = 18
version = 19
cloudstream {

View file

@ -44,46 +44,24 @@ class NontonAnimeIDProvider : MainAPI() {
}
}
override val mainPage = mainPageOf(
"" to "Latest Update",
"ongoing-list/" to " Ongoing List",
"popular-series/" to "Popular Series",
)
override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document
val homePageList = ArrayList<HomePageList>()
document.select("section#postbaru").forEach { block ->
val header = block.selectFirst("h2")!!.text().trim()
val animes = block.select("article.animeseries").mapNotNull {
it.toSearchResult()
}
if (animes.isNotEmpty()) homePageList.add(HomePageList(header, animes))
val document = app.get("$mainUrl/${request.data}").document
val home = document.select(".animeseries").mapNotNull {
it.toSearchResult()
}
document.select("aside#sidebar_right > div.side").forEach { block ->
val header = block.selectFirst("h3")!!.ownText().trim()
val animes = block.select("div.bor").mapNotNull {
it.toSearchResultPopular()
}
if (animes.isNotEmpty()) homePageList.add(HomePageList(header, animes))
}
return HomePageResponse(homePageList)
return newHomePageResponse(request.name, home, hasNext = false)
}
private fun Element.toSearchResult(): AnimeSearchResponse? {
private fun Element.toSearchResult(): AnimeSearchResponse {
val href = fixUrl(this.selectFirst("a")!!.attr("href"))
val title = this.selectFirst("h3.title")?.text() ?: return null
val posterUrl = fixUrl(this.select("img").attr("src"))
return newAnimeSearchResponse(title, href, TvType.Anime) {
this.posterUrl = posterUrl
addDubStatus(dubExist = false, subExist = true)
}
}
private fun Element.toSearchResultPopular(): AnimeSearchResponse? {
val href = fixUrl(this.selectFirst("a")!!.attr("href"))
val title = this.selectFirst("h4")?.text()?.trim() ?: return null
val posterUrl = fixUrl(this.select("img").attr("src"))
val title = this.selectFirst(".title")?.text() ?: ""
val posterUrl = fixUrlNull(this.selectFirst("img")?.attr("data-src"))
return newAnimeSearchResponse(title, href, TvType.Anime) {
this.posterUrl = posterUrl
@ -207,7 +185,6 @@ class NontonAnimeIDProvider : MainAPI() {
): Boolean {
val document = app.get(data).document
val sources = ArrayList<String>()
document.select(".container1 > ul > li:not(.boxtab)").apmap {
val dataPost = it.attr("data-post")
@ -220,17 +197,14 @@ class NontonAnimeIDProvider : MainAPI() {
"action" to "player_ajax",
"post" to dataPost,
"nume" to dataNume,
"type" to dataType
"type" to dataType,
"nonce" to "e4dd8e45c2"
),
referer = data,
headers = mapOf("X-Requested-With" to "XMLHttpRequest")
).document.select("iframe").attr("src")
).document.selectFirst("iframe")?.attr("src")
sources.add(fixUrl(iframe))
}
sources.apmap {
loadExtractor(it, "$mainUrl/", subtitleCallback, callback)
loadExtractor(iframe ?: return@apmap , "$mainUrl/", subtitleCallback, callback)
}
return true
@ -255,3 +229,15 @@ class KotakAnimeid2 : Hxfile() {
override val mainUrl = "https://embed2.kotakanimeid.com"
override val requiresReferer = true
}
class KotakAnimeidCom : Hxfile() {
override val name = "KotakAnimeid"
override val mainUrl = "https://nontonanimeid.com"
override val requiresReferer = true
}
class EmbedKotakAnimeid : Hxfile() {
override val name = "EmbedKotakAnimeid"
override val mainUrl = "https://embed2.kotakanimeid.com"
override val requiresReferer = true
}

View file

@ -11,5 +11,7 @@ class NontonAnimeIDProviderPlugin: Plugin() {
// All providers should be added in this manner. Please don't edit the providers list directly.
registerMainAPI(NontonAnimeIDProvider())
registerExtractorAPI(KotakAnimeid2())
registerExtractorAPI(KotakAnimeidCom())
registerExtractorAPI(EmbedKotakAnimeid())
}
}