diff --git a/src/es/animeflv/build.gradle b/src/es/animeflv/build.gradle index 6f8831a90..8f1e7e704 100644 --- a/src/es/animeflv/build.gradle +++ b/src/es/animeflv/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'AnimeFLV' pkgNameSuffix = 'es.animeflv' extClass = '.AnimeFlv' - extVersionCode = 22 + extVersionCode = 23 libVersion = '12' } diff --git a/src/es/animeflv/src/eu/kanade/tachiyomi/animeextension/es/animeflv/AnimeFlv.kt b/src/es/animeflv/src/eu/kanade/tachiyomi/animeextension/es/animeflv/AnimeFlv.kt index afc15fe31..b1a1f19b9 100644 --- a/src/es/animeflv/src/eu/kanade/tachiyomi/animeextension/es/animeflv/AnimeFlv.kt +++ b/src/es/animeflv/src/eu/kanade/tachiyomi/animeextension/es/animeflv/AnimeFlv.kt @@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.animeextension.es.animeflv.extractors.FembedExtractor import eu.kanade.tachiyomi.animeextension.es.animeflv.extractors.OkruExtractor import eu.kanade.tachiyomi.animeextension.es.animeflv.extractors.StreamSBExtractor import eu.kanade.tachiyomi.animeextension.es.animeflv.extractors.StreamTapeExtractor +import eu.kanade.tachiyomi.animeextension.es.animeflv.extractors.YourUploadExtractor import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilterList @@ -18,7 +19,12 @@ import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.util.asJsoup +import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.jsonArray +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -33,7 +39,7 @@ class AnimeFlv : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override val name = "AnimeFLV" - override val baseUrl = "https://ww3.animeflv.cc" + override val baseUrl = "https://www3.animeflv.net" override val lang = "es" @@ -49,7 +55,7 @@ class AnimeFlv : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override fun popularAnimeSelector(): String = "div.Container ul.ListAnimes li article" - override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/browse?order=5&page=$page") + override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/browse?order=rating&page=$page") override fun popularAnimeFromElement(element: Element): SAnime { val anime = SAnime.create() @@ -68,27 +74,36 @@ class AnimeFlv : ConfigurableAnimeSource, ParsedAnimeHttpSource() { return anime } - override fun popularAnimeNextPageSelector(): String = "ul.pagination li.selected ~ li" + override fun popularAnimeNextPageSelector(): String = "ul.pagination li a[rel=\"next\"]" override fun episodeListParse(response: Response): List { - return super.episodeListParse(response).reversed() - } - - override fun episodeListSelector() = "ul.ListCaps li a" - - override fun episodeFromElement(element: Element): SEpisode { - val episode = SEpisode.create() - val epNum = getNumberFromEpsString(element.select("p").text()) - episode.setUrlWithoutDomain(element.attr("href")) - episode.episode_number = when { - (epNum.isNotEmpty()) -> epNum.toFloat() - else -> 1F + val document = response.asJsoup() + val episodeList = mutableListOf() + document.select("script").forEach { script -> + if (script.data().contains("var anime_info =")) { + val animeInfo = script.data().substringAfter("var anime_info = [").substringBefore("];") + val arrInfo = animeInfo.split(",") + val animeUri = arrInfo[2]!!.replace("\"", "") + val episodes = script.data().substringAfter("var episodes = [").substringBefore("];").trim() + val arrEpisodes = episodes.split("],[") + arrEpisodes!!.forEach { arrEp -> + val noEpisode = arrEp!!.replace("[", "")!!.replace("]", "")!!.split(",")!![0] + val ep = SEpisode.create() + val url = "$baseUrl/ver/$animeUri-$noEpisode" + ep.setUrlWithoutDomain(url) + ep.name = "Episodio $noEpisode" + ep.episode_number = noEpisode.toFloat() + episodeList.add(ep) + } + } } - episode.name = element.select("p").text() - - return episode + return episodeList } + override fun episodeListSelector() = "uwu" + + override fun episodeFromElement(element: Element) = throw Exception("not used") + private fun getNumberFromEpsString(epsStr: String): String { return epsStr.filter { it.isDigit() } } @@ -96,39 +111,61 @@ class AnimeFlv : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override fun videoListParse(response: Response): List