diff --git a/src/fr/nekosama/build.gradle b/src/fr/nekosama/build.gradle index 73e3b9d28..f8c5b3a88 100644 --- a/src/fr/nekosama/build.gradle +++ b/src/fr/nekosama/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'NekoSama' pkgNameSuffix = 'fr.nekosama' extClass = '.NekoSama' - extVersionCode = 2 + extVersionCode = 3 libVersion = '13' containsNsfw = false } diff --git a/src/fr/nekosama/src/eu/kanade/tachiyomi/animeextension/fr/nekosama/NekoSama.kt b/src/fr/nekosama/src/eu/kanade/tachiyomi/animeextension/fr/nekosama/NekoSama.kt index f43fb5f23..c1be22639 100644 --- a/src/fr/nekosama/src/eu/kanade/tachiyomi/animeextension/fr/nekosama/NekoSama.kt +++ b/src/fr/nekosama/src/eu/kanade/tachiyomi/animeextension/fr/nekosama/NekoSama.kt @@ -38,7 +38,7 @@ class NekoSama : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override val lang = "fr" - override val supportsLatest = false + override val supportsLatest = true override val client: OkHttpClient = network.cloudflareClient @@ -50,7 +50,13 @@ class NekoSama : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override fun popularAnimeSelector(): String = "div.anime" - override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/anime/") + override fun popularAnimeRequest(page: Int): Request { + return if (page > 1) { + GET("$baseUrl/anime/$page") + } else { + GET("$baseUrl/anime/") + } + } override fun popularAnimeFromElement(element: Element): SAnime { val anime = SAnime.create() @@ -58,13 +64,13 @@ class NekoSama : ConfigurableAnimeSource, ParsedAnimeHttpSource() { element.select("div.info a").attr("href") ) anime.title = element.select("div.info a div").text() - val thumb1 = element.select("div.cover a div img").attr("data-src") - val thumb2 = element.select("div.cover a div img").attr("src") + val thumb1 = element.select("div.cover a div img:not(.placeholder)").attr("data-src") + val thumb2 = element.select("div.cover a div img:not(.placeholder)").attr("src") anime.thumbnail_url = thumb1.ifBlank { thumb2 } return anime } - override fun popularAnimeNextPageSelector(): String = "div.nekosama.pagination a svg" + override fun popularAnimeNextPageSelector(): String = "div.nekosama.pagination a.active ~ a" override fun episodeListParse(response: Response): List { val pageBody = response.asJsoup() @@ -79,7 +85,7 @@ class NekoSama : ConfigurableAnimeSource, ParsedAnimeHttpSource() { episode_number = try { it.episode!!.substringAfter(". ").toFloat() } catch (e: Exception) { (0..10).random() }.toFloat() } - } + }.reversed() } override fun episodeListSelector() = throw Exception("not used") @@ -95,13 +101,14 @@ class NekoSama : ConfigurableAnimeSource, ParsedAnimeHttpSource() { val secondVideo = script.substringAfter("else {").substringAfter("video[0] = '").substringBefore("'").lowercase() when { firstVideo.contains("streamtape") -> StreamTapeExtractor(client).videoFromUrl(firstVideo, "StreamTape")?.let { videoList.add(it) } - firstVideo.contains("pstream") -> videoList.add(pstreamExtractor(firstVideo)) + firstVideo.contains("pstream") || firstVideo.contains("veestream") -> videoList.addAll(pstreamExtractor(firstVideo)) } when { secondVideo.contains("streamtape") -> StreamTapeExtractor(client).videoFromUrl(secondVideo, "StreamTape")?.let { videoList.add(it) } - secondVideo.contains("pstream") -> videoList.add(pstreamExtractor(secondVideo)) + secondVideo.contains("pstream") || secondVideo.contains("veestream") -> videoList.addAll(pstreamExtractor(secondVideo)) } - return videoList + + return videoList.sort() } override fun videoListSelector() = throw Exception("not used") @@ -111,21 +118,15 @@ class NekoSama : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override fun videoFromElement(element: Element) = throw Exception("not used") override fun List