diff --git a/src/fr/nekosama/build.gradle b/src/fr/nekosama/build.gradle index 35bb764f..897a8109 100644 --- a/src/fr/nekosama/build.gradle +++ b/src/fr/nekosama/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'NekoSama' extClass = '.NekoSama' - extVersionCode = 10 + extVersionCode = 11 isNsfw = true } 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 f65d5864..aeb8b90e 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 @@ -15,16 +15,14 @@ import eu.kanade.tachiyomi.lib.fusevideoextractor.FusevideoExtractor import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.util.asJsoup +import eu.kanade.tachiyomi.util.parseAs import kotlinx.serialization.Serializable -import kotlinx.serialization.json.Json import okhttp3.Request import okhttp3.Response import org.jsoup.nodes.Document import org.jsoup.nodes.Element import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import uy.kohesive.injekt.injectLazy -import java.lang.Exception class NekoSama : ConfigurableAnimeSource, ParsedAnimeHttpSource() { @@ -36,13 +34,12 @@ class NekoSama : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override val supportsLatest = true - private val json: Json by injectLazy() - private val preferences by lazy { Injekt.get().getSharedPreferences("source_$id", 0x0000) } - override fun popularAnimeSelector(): String = "div.anime" + // ============================== Popular =============================== + override fun popularAnimeSelector() = "div.anime" override fun popularAnimeRequest(page: Int): Request { return if (page > 1) { @@ -52,70 +49,20 @@ class NekoSama : ConfigurableAnimeSource, ParsedAnimeHttpSource() { } } - override fun popularAnimeFromElement(element: Element): SAnime { - val anime = SAnime.create() - anime.setUrlWithoutDomain( - 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: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 popularAnimeFromElement(element: Element) = SAnime.create().apply { + with(element.selectFirst("div.info a")!!) { + setUrlWithoutDomain(attr("href")) + title = text() + } + + element.selectFirst("div.cover a div img:not(.placeholder)")?.run { + thumbnail_url = attr("data-src").ifBlank { attr("src") } + } } - override fun popularAnimeNextPageSelector(): String = "div.nekosama.pagination a.active ~ a" - - override fun episodeListParse(response: Response): List { - val pageBody = response.asJsoup() - val episodesJson = pageBody.selectFirst("script:containsData(var episodes =)")!!.data() - .substringAfter("var episodes = ").substringBefore(";") - val json = json.decodeFromString>(episodesJson) - - return json.map { - SEpisode.create().apply { - name = try { it.episode!! } catch (e: Exception) { "episode" } - url = it.url!!.replace("\\", "") - - episode_number = try { it.episode!!.substringAfter(". ").toFloat() } catch (e: Exception) { (0..10).random() }.toFloat() - } - }.reversed() - } - - override fun episodeListSelector() = throw UnsupportedOperationException() - - override fun episodeFromElement(element: Element) = throw UnsupportedOperationException() - - override fun videoListParse(response: Response): List