diff --git a/src/fr/japscan/build.gradle b/src/fr/japscan/build.gradle index 852cb9fb8..963c6235f 100644 --- a/src/fr/japscan/build.gradle +++ b/src/fr/japscan/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Japscan' extClass = '.Japscan' - extVersionCode = 44 + extVersionCode = 45 } apply from: "$rootDir/common.gradle" diff --git a/src/fr/japscan/src/eu/kanade/tachiyomi/extension/fr/japscan/Japscan.kt b/src/fr/japscan/src/eu/kanade/tachiyomi/extension/fr/japscan/Japscan.kt index 3638dc48c..46bb14ead 100644 --- a/src/fr/japscan/src/eu/kanade/tachiyomi/extension/fr/japscan/Japscan.kt +++ b/src/fr/japscan/src/eu/kanade/tachiyomi/extension/fr/japscan/Japscan.kt @@ -10,7 +10,6 @@ import android.webkit.JavascriptInterface import android.webkit.WebView import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.POST -import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.model.Filter @@ -33,7 +32,6 @@ import okhttp3.Request import okhttp3.Response import org.jsoup.nodes.Document import org.jsoup.nodes.Element -import rx.Observable import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy @@ -81,23 +79,12 @@ class Japscan : ConfigurableSource, ParsedHttpSource() { // Popular override fun popularMangaRequest(page: Int): Request { - return GET("$baseUrl/mangas/", headers) + return GET("$baseUrl/mangas/?sort=popular&p=$page", headers) } - override fun popularMangaParse(response: Response): MangasPage { - val document = response.asJsoup() - pageNumberDoc = document + override fun popularMangaNextPageSelector() = ".pagination > li:last-child:not(.disabled)" - val mangas = document.select(popularMangaSelector()).map { element -> - popularMangaFromElement(element) - } - val hasNextPage = false - return MangasPage(mangas, hasNextPage) - } - - override fun popularMangaNextPageSelector(): String? = null - - override fun popularMangaSelector() = "#top_mangas_week li" + override fun popularMangaSelector() = ".mangas-list .manga-block:not(:has(a[href='']))" override fun popularMangaFromElement(element: Element): SManga { val manga = SManga.create() @@ -110,47 +97,15 @@ class Japscan : ConfigurableSource, ParsedHttpSource() { } // Latest - private lateinit var latestDirectory: List - - override fun fetchLatestUpdates(page: Int): Observable { - return if (page == 1) { - client.newCall(latestUpdatesRequest(page)) - .asObservableSuccess() - .map { latestUpdatesParse(it) } - } else { - Observable.just(parseLatestDirectory(page)) - } - } - override fun latestUpdatesRequest(page: Int): Request { - return GET(baseUrl, headers) + return GET("$baseUrl/mangas/?sort=updated&p=$page", headers) } - override fun latestUpdatesParse(response: Response): MangasPage { - val document = response.asJsoup() - - latestDirectory = document.select(latestUpdatesSelector()) - .distinctBy { element -> element.select("a").attr("href") } - - return parseLatestDirectory(1) - } - - private fun parseLatestDirectory(page: Int): MangasPage { - val manga = mutableListOf() - val end = ((page * 24) - 1).let { if (it <= latestDirectory.lastIndex) it else latestDirectory.lastIndex } - - for (i in (((page - 1) * 24)..end)) { - manga.add(latestUpdatesFromElement(latestDirectory[i])) - } - - return MangasPage(manga, end < latestDirectory.lastIndex) - } - - override fun latestUpdatesSelector() = "#chapters h3.mb-0" + override fun latestUpdatesSelector() = popularMangaSelector() override fun latestUpdatesFromElement(element: Element): SManga = popularMangaFromElement(element) - override fun latestUpdatesNextPageSelector(): String = throw UnsupportedOperationException() + override fun latestUpdatesNextPageSelector(): String = popularMangaNextPageSelector() // Search override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { @@ -180,7 +135,7 @@ class Japscan : ConfigurableSource, ParsedHttpSource() { } } - override fun searchMangaNextPageSelector(): String = "li.page-item:last-child:not(li.active)" + override fun searchMangaNextPageSelector(): String = popularMangaSelector() override fun searchMangaSelector(): String = "div.card div.p-2" @@ -225,7 +180,8 @@ class Japscan : ConfigurableSource, ParsedHttpSource() { val infoElement = document.selectFirst("#main .card-body")!! val manga = SManga.create() - manga.thumbnail_url = infoElement.select("img").attr("abs:src") + val path = document.location().replaceFirst("$baseUrl/", "") + manga.thumbnail_url = "$baseUrl/imgs/${path.replace(Regex("/$"),".jpg").replace("manga","mangas")}".lowercase(Locale.ROOT) val infoRows = infoElement.select(".row, .d-flex") infoRows.select("p").forEach { el -> @@ -341,28 +297,6 @@ class Japscan : ConfigurableSource, ParsedHttpSource() { private class PageList(pages: Array) : Filter.Select("Page #", arrayOf(0, *pages)) - override fun getFilterList(): FilterList { - val totalPages = pageNumberDoc?.select("li.page-item:last-child a")?.text() - val pageList = mutableListOf() - return if (!totalPages.isNullOrEmpty()) { - for (i in 0 until totalPages.toInt()) { - pageList.add(i + 1) - } - FilterList( - Filter.Header("Page alphabétique"), - PageList(pageList.toTypedArray()), - ) - } else { - FilterList( - Filter.Header("Page alphabétique"), - TextField("Page #"), - Filter.Header("Appuyez sur reset pour la liste"), - ) - } - } - - private var pageNumberDoc: Document? = null - // Prefs override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) { val chapterListPref = androidx.preference.ListPreference(screen.context).apply {