From 1e3786d7136d92805cbe798571322b46075d0c6c Mon Sep 17 00:00:00 2001 From: happywillow0 <45346080+happywillow0@users.noreply.github.com> Date: Sat, 22 Feb 2020 09:45:13 -0500 Subject: [PATCH] Add Search to JapScan (#2270) Add Search to JapScan --- src/fr/japscan/build.gradle | 2 +- .../tachiyomi/extension/fr/japscan/Japscan.kt | 37 +++++++++++++------ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/fr/japscan/build.gradle b/src/fr/japscan/build.gradle index d7a4196ff..5784631a7 100644 --- a/src/fr/japscan/build.gradle +++ b/src/fr/japscan/build.gradle @@ -5,7 +5,7 @@ ext { appName = 'Tachiyomi: Japscan' pkgNameSuffix = 'fr.japscan' extClass = '.Japscan' - extVersionCode = 15 + extVersionCode = 16 libVersion = '1.2' } 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 ca49018ec..0ca54be5b 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 @@ -105,9 +105,9 @@ class Japscan : ParsedHttpSource() { override fun latestUpdatesSelector() = "#chapters > div > h3.text-truncate" override fun latestUpdatesFromElement(element: Element): SManga = popularMangaFromElement(element) - //"Search" + //Search override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - if (query.isNullOrEmpty()) { + if (query.isEmpty()) { val uri = Uri.parse(baseUrl).buildUpon() .appendPath("mangas") filters.forEach { filter -> @@ -117,21 +117,32 @@ class Japscan : ParsedHttpSource() { } } return GET(uri.toString(), headers) - } else - throw Exception("Search unavailable, use filter to browse by page") + } else { + val uri = Uri.parse("https://duckduckgo.com/lite/").buildUpon() + .appendQueryParameter("q","$query site:www.japscan.co/manga/") + .appendQueryParameter("kd","-1") + return GET(uri.toString(), headers) + } } override fun searchMangaNextPageSelector(): String? = null //"li.page-item:last-child:not(li.active)" - override fun searchMangaSelector(): String = "div.card div.p-2" - override fun searchMangaFromElement(element: Element): SManga = SManga.create().apply { - thumbnail_url = baseUrl+element.select("img").attr("src").substringAfter(baseUrl) - element.select("p a").let { - title = it.text() - url = it.attr("href") + override fun searchMangaSelector(): String = "div.card div.p-2, a.result-link" + override fun searchMangaFromElement(element: Element): SManga = + if (element.attr("class")=="result-link") { + SManga.create().apply { + title = element.text().substringAfter(" ").substringBefore(" | JapScan") + setUrlWithoutDomain(element.attr("abs:href")) + } + } else { + SManga.create().apply { + thumbnail_url = element.select("img").attr("abs:src") + element.select("p a").let { + title = it.text() + url = it.attr("href") + } + } } - } - override fun mangaDetailsParse(document: Document): SManga { val infoElement = document.select("div#main > .card > .card-body").first() @@ -255,10 +266,12 @@ class Japscan : ParsedHttpSource() { pagelist.add(i+1) } FilterList( + Filter.Header("Recherche par Duck Duck Go"), Filter.Header("Page alphabétique"), PageList(pagelist.toTypedArray()) ) } else FilterList( + Filter.Header("Recherche par Duck Duck Go"), Filter.Header("Page alphabétique"), TextField("Page #", "page"), Filter.Header("Appuyez sur reset pour la liste")