diff --git a/AnimeIndoProvider/build.gradle.kts b/AnimeIndoProvider/build.gradle.kts index dcce6f01..a1d971bc 100644 --- a/AnimeIndoProvider/build.gradle.kts +++ b/AnimeIndoProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 6 +version = 7 cloudstream { diff --git a/AnimeIndoProvider/src/main/kotlin/com/hexated/AnimeIndoProvider.kt b/AnimeIndoProvider/src/main/kotlin/com/hexated/AnimeIndoProvider.kt index 2764b8d4..5dd1126c 100644 --- a/AnimeIndoProvider/src/main/kotlin/com/hexated/AnimeIndoProvider.kt +++ b/AnimeIndoProvider/src/main/kotlin/com/hexated/AnimeIndoProvider.kt @@ -106,7 +106,7 @@ class AnimeIndoProvider : MainAPI() { val posterUrl = this.select("img[itemprop=image]").attr("src").toString() val type = getType(this.select("div.type").text().trim()) val epNum = - this.selectFirst("span.episode")?.ownText()?.replace(Regex("[^0-9]"), "")?.trim() + this.selectFirst("span.episode")?.ownText()?.replace(Regex("\\D"), "")?.trim() ?.toIntOrNull() return newAnimeSearchResponse(title, href, type) { this.posterUrl = posterUrl @@ -116,18 +116,22 @@ class AnimeIndoProvider : MainAPI() { } override suspend fun search(query: String): List { - val link = "$mainUrl/?s=$query" - val document = request(link).document - - return document.select(".site-main.relat > article").map { - val title = it.selectFirst("div.title > h2")!!.ownText().trim() - val href = it.selectFirst("a")!!.attr("href") - val posterUrl = it.selectFirst("img")!!.attr("src").toString() - val type = getType(it.select("div.type").text().trim()) - newAnimeSearchResponse(title, href, type) { - this.posterUrl = posterUrl + val anime = mutableListOf() + (1..2).forEach { page -> + val link = "$mainUrl/page/$page/?s=$query" + val document = request(link).document + val media = document.select(".site-main.relat > article").mapNotNull { + val title = it.selectFirst("div.title > h2")!!.ownText().trim() + val href = it.selectFirst("a")!!.attr("href") + val posterUrl = it.selectFirst("img")!!.attr("src").toString() + val type = getType(it.select("div.type").text().trim()) + newAnimeSearchResponse(title, href, type) { + this.posterUrl = posterUrl + } } + if(media.isNotEmpty()) anime.addAll(media) } + return anime } override suspend fun load(url: String): LoadResponse? { @@ -140,7 +144,7 @@ class AnimeIndoProvider : MainAPI() { val type = document.selectFirst("div.info-content > div.spe > span:contains(Type:)")?.ownText() ?.trim()?.lowercase() ?: "tv" val year = document.selectFirst("div.info-content > div.spe > span:contains(Released:)")?.ownText()?.let { - Regex("\\d,\\s([0-9]*)").find(it)?.groupValues?.get(1)?.toIntOrNull() + Regex("\\d,\\s(\\d*)").find(it)?.groupValues?.get(1)?.toIntOrNull() } val status = getStatus(document.selectFirst("div.info-content > div.spe > span:nth-child(1)")!!.ownText().trim()) val description = document.select("div[itemprop=description] > p").text() @@ -151,7 +155,7 @@ class AnimeIndoProvider : MainAPI() { val header = it.selectFirst("span.lchx > a") ?: return@mapNotNull null val episode = header.text().trim().replace("Episode", "").trim().toIntOrNull() val link = fixUrl(header.attr("href")) - Episode(link, episode = episode) + Episode(link, header.text(), episode = episode) }.reversed() return newAnimeLoadResponse(title, url, getType(type)) { diff --git a/AnimeSailProvider/build.gradle.kts b/AnimeSailProvider/build.gradle.kts index 803ab6be..98e2d095 100644 --- a/AnimeSailProvider/build.gradle.kts +++ b/AnimeSailProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 5 +version = 6 cloudstream { diff --git a/AnimeSailProvider/src/main/kotlin/com/hexated/AnimeSailProvider.kt b/AnimeSailProvider/src/main/kotlin/com/hexated/AnimeSailProvider.kt index 1d089b08..a84030c1 100644 --- a/AnimeSailProvider/src/main/kotlin/com/hexated/AnimeSailProvider.kt +++ b/AnimeSailProvider/src/main/kotlin/com/hexated/AnimeSailProvider.kt @@ -86,7 +86,7 @@ class AnimeSailProvider : MainAPI() { val title = this.select(".tt > h2").text().trim() val posterUrl = fixUrlNull(this.selectFirst("div.limit img")?.attr("src")) val epNum = this.selectFirst(".tt > h2")?.text()?.let { - Regex("Episode\\s?([0-9]+)").find(it)?.groupValues?.getOrNull(1)?.toIntOrNull() + Regex("Episode\\s?(\\d+)").find(it)?.groupValues?.getOrNull(1)?.toIntOrNull() } return newAnimeSearchResponse(title, href, TvType.Anime) { this.posterUrl = posterUrl @@ -116,11 +116,10 @@ class AnimeSailProvider : MainAPI() { val (malId, anilistId, image, cover) = getTracker(title, type, year) val episodes = document.select("ul.daftar > li").map { - val episode = Regex("Episode\\s?([0-9]+)").find( - it.select("a").text().trim() - )?.groupValues?.getOrNull(0) val link = fixUrl(it.select("a").attr("href")) - Episode(link, episode = episode?.toIntOrNull()) + val name = it.select("a").text() + val episode = Regex("(\\d+[.,]?\\d*)").find(name)?.groupValues?.getOrNull(0)?.toIntOrNull() + Episode(link, name, episode = episode) }.reversed() return newAnimeLoadResponse(title, url, getType(type)) { diff --git a/KuronimeProvider/build.gradle.kts b/KuronimeProvider/build.gradle.kts index 021cef02..01606fee 100644 --- a/KuronimeProvider/build.gradle.kts +++ b/KuronimeProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 5 +version = 6 cloudstream { diff --git a/KuronimeProvider/src/main/kotlin/com/hexated/KuronimeProvider.kt b/KuronimeProvider/src/main/kotlin/com/hexated/KuronimeProvider.kt index e7304148..70dff536 100644 --- a/KuronimeProvider/src/main/kotlin/com/hexated/KuronimeProvider.kt +++ b/KuronimeProvider/src/main/kotlin/com/hexated/KuronimeProvider.kt @@ -129,8 +129,8 @@ class KuronimeProvider : MainAPI() { val episodes = document.select("div.bixbox.bxcl > ul > li").mapNotNull { val link = it.selectFirst("a")?.attr("href") ?: return@mapNotNull null val name = it.selectFirst("a")?.text() ?: return@mapNotNull null -// val episode = Regex("(\\d+[.,]?\\d*)").find(name)?.groupValues?.getOrNull(0)?.toIntOrNull() - Episode(link, name) + val episode = Regex("(\\d+[.,]?\\d*)").find(name)?.groupValues?.getOrNull(0)?.toIntOrNull() + Episode(link, name, episode = episode) }.reversed() return newAnimeLoadResponse(title, url, getType(type)) { @@ -194,7 +194,7 @@ class KuronimeProvider : MainAPI() { safeApiCall { when { it.startsWith("https://animeku.org") -> invokeKuroSource(it, callback) - else -> loadExtractor(it, mainUrl, subtitleCallback, callback) + else -> loadExtractor("$it/", mainUrl, subtitleCallback, callback) } } } diff --git a/NeonimeProvider/build.gradle.kts b/NeonimeProvider/build.gradle.kts index ee8fb66d..efe9fdd7 100644 --- a/NeonimeProvider/build.gradle.kts +++ b/NeonimeProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 5 +version = 6 cloudstream { diff --git a/NeonimeProvider/src/main/kotlin/com/hexated/NeonimeProvider.kt b/NeonimeProvider/src/main/kotlin/com/hexated/NeonimeProvider.kt index a162f2db..c54f055f 100644 --- a/NeonimeProvider/src/main/kotlin/com/hexated/NeonimeProvider.kt +++ b/NeonimeProvider/src/main/kotlin/com/hexated/NeonimeProvider.kt @@ -144,10 +144,10 @@ class NeonimeProvider : MainAPI() { val year = document.select("#info a[href*=\"-year/\"]").text().toIntOrNull() val (malId, anilistId, image, cover) = getTracker(title, "tv", year) val episodes = document.select("ul.episodios > li").mapNotNull { - val header = it.selectFirst(".episodiotitle > a")?.ownText().toString() - val name = Regex("(Episode\\s?\\d+)").find(header)?.groupValues?.getOrNull(0) ?: header val link = fixUrl(it.selectFirst(".episodiotitle > a")!!.attr("href")) - Episode(link, name) + val name = it.selectFirst(".episodiotitle > a")?.ownText().toString() + val episode = Regex("(\\d+[.,]?\\d*)").find(name)?.groupValues?.getOrNull(0)?.toIntOrNull() + Episode(link, name, episode = episode) }.reversed() return newAnimeLoadResponse(title, url, TvType.Anime) { diff --git a/NontonAnimeIDProvider/build.gradle.kts b/NontonAnimeIDProvider/build.gradle.kts index f2057d47..706e0e7f 100644 --- a/NontonAnimeIDProvider/build.gradle.kts +++ b/NontonAnimeIDProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 9 +version = 10 cloudstream { diff --git a/NontonAnimeIDProvider/src/main/kotlin/com/hexated/NontonAnimeIDProvider.kt b/NontonAnimeIDProvider/src/main/kotlin/com/hexated/NontonAnimeIDProvider.kt index 9969e8c9..441c7f2f 100644 --- a/NontonAnimeIDProvider/src/main/kotlin/com/hexated/NontonAnimeIDProvider.kt +++ b/NontonAnimeIDProvider/src/main/kotlin/com/hexated/NontonAnimeIDProvider.kt @@ -11,7 +11,7 @@ import org.jsoup.Jsoup import org.jsoup.nodes.Element class NontonAnimeIDProvider : MainAPI() { - override var mainUrl = "https://nontonanimeid.click" + override var mainUrl = "https://nontonanimeid.best" override var name = "NontonAnimeID" override val hasQuickSearch = false override val hasMainPage = true @@ -122,7 +122,7 @@ class NontonAnimeIDProvider : MainAPI() { val poster = document.selectFirst(".poster > img")?.attr("data-src") val tags = document.select(".tagline > a").map { it.text() } - val year = Regex("\\d, ([0-9]*)").find( + val year = Regex("\\d, (\\d*)").find( document.select(".bottomtitle > span:nth-child(5)").text() )?.groupValues?.get(1)?.toIntOrNull() val status = getStatus( @@ -138,7 +138,7 @@ class NontonAnimeIDProvider : MainAPI() { val episodes = if (document.select("button.buttfilter").isNotEmpty()) { val id = document.select("input[name=series_id]").attr("value") val numEp = - document.selectFirst(".latestepisode > a")?.text()?.replace(Regex("[^0-9]"), "") + document.selectFirst(".latestepisode > a")?.text()?.replace(Regex("\\D"), "") .toString() Jsoup.parse( app.post( @@ -151,7 +151,7 @@ class NontonAnimeIDProvider : MainAPI() { ) ).parsed().content ).select("li").map { - val episode = Regex("Episode\\s?([0-9]+)").find( + val episode = Regex("Episode\\s?(\\d+)").find( it.selectFirst("a")?.text().toString() )?.groupValues?.getOrNull(0) ?: it.selectFirst("a")?.text() val link = fixUrl(it.selectFirst("a")!!.attr("href")) @@ -159,7 +159,7 @@ class NontonAnimeIDProvider : MainAPI() { }.reversed() } else { document.select("ul.misha_posts_wrap2 > li").map { - val episode = Regex("Episode\\s?([0-9]+)").find( + val episode = Regex("Episode\\s?(\\d+)").find( it.selectFirst("a")?.text().toString() )?.groupValues?.getOrNull(0) ?: it.selectFirst("a")?.text() val link = it.select("a").attr("href") diff --git a/OploverzProvider/build.gradle.kts b/OploverzProvider/build.gradle.kts index 609f40ba..c19dafb2 100644 --- a/OploverzProvider/build.gradle.kts +++ b/OploverzProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 6 +version = 7 cloudstream { diff --git a/OploverzProvider/src/main/kotlin/com/hexated/OploverzProvider.kt b/OploverzProvider/src/main/kotlin/com/hexated/OploverzProvider.kt index 9dc7a2fe..90f509d7 100644 --- a/OploverzProvider/src/main/kotlin/com/hexated/OploverzProvider.kt +++ b/OploverzProvider/src/main/kotlin/com/hexated/OploverzProvider.kt @@ -150,10 +150,10 @@ class OploverzProvider : MainAPI() { val (malId, anilistId, image, cover) = getTracker(title, typeCheck, year) val episodes = document.select(".eplister > ul > li").map { - val header = it.select(".epl-title").text() - val episode = Regex("Episode\\s?0?0?([0-9]+)").find(header)?.groupValues?.getOrNull(0) val link = fixUrl(it.select("a").attr("href")) - Episode(link, episode = episode?.toIntOrNull()) + val name = it.select(".epl-title").text() + val episode = Regex("(\\d+[.,]?\\d*)").find(name)?.groupValues?.getOrNull(0)?.toIntOrNull() + Episode(link, name, episode = episode) }.reversed() val recommendations =