diff --git a/src/ja/mangaraw/build.gradle b/src/ja/mangaraw/build.gradle index ff2907019..c9f1e3a12 100644 --- a/src/ja/mangaraw/build.gradle +++ b/src/ja/mangaraw/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'MangaRaw' pkgNameSuffix = 'ja.mangaraw' extClass = '.MangaRawFactory' - extVersionCode = 4 + extVersionCode = 5 } apply from: "$rootDir/common.gradle" diff --git a/src/ja/mangaraw/src/eu/kanade/tachiyomi/extension/ja/mangaraw/MangaRaw.kt b/src/ja/mangaraw/src/eu/kanade/tachiyomi/extension/ja/mangaraw/MangaRaw.kt index d8e7ee2c2..54052f5b1 100644 --- a/src/ja/mangaraw/src/eu/kanade/tachiyomi/extension/ja/mangaraw/MangaRaw.kt +++ b/src/ja/mangaraw/src/eu/kanade/tachiyomi/extension/ja/mangaraw/MangaRaw.kt @@ -7,29 +7,27 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import okhttp3.Headers -import okhttp3.OkHttpClient -import okhttp3.Protocol +import okhttp3.Request import org.jsoup.nodes.Document import org.jsoup.nodes.Element abstract class MangaRaw( override val name: String, - override val baseUrl: String + override val baseUrl: String, ) : ParsedHttpSource() { + protected open val imageSelector = ".wp-block-image > img" + override val lang = "ja" override val supportsLatest = true - override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .protocols(listOf(Protocol.HTTP_1_1)) - .build() - override fun headersBuilder(): Headers.Builder { return super.headersBuilder().add("Referer", baseUrl) } - override fun popularMangaRequest(page: Int) = GET("$baseUrl/seachlist/page/$page/?cat=-1", headers) + override fun popularMangaRequest(page: Int): Request = + GET("$baseUrl/seachlist/page/$page/?cat=-1", headers) override fun popularMangaSelector() = "article" @@ -49,7 +47,8 @@ abstract class MangaRaw( override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() - override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = GET("$baseUrl/page/$page/?s=$query", headers) + override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = + GET("$baseUrl/page/$page/?s=$query", headers) override fun searchMangaSelector() = popularMangaSelector() @@ -58,8 +57,10 @@ abstract class MangaRaw( override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() override fun mangaDetailsParse(document: Document) = SManga.create().apply { - genre = document.select("p.has-text-color:has(strong) a").joinToString { it.text() } - description = document.select("p.has-text-color:not(:has(strong))").first().text() + // All manga details are located in the same

tag + // So here are some jank way of extracting them + description = document.select("#main > article > div > div > div > div > p").html() + .substringAfterLast("
") thumbnail_url = document.select(".wp-block-image img").attr("abs:src") } @@ -71,13 +72,14 @@ abstract class MangaRaw( } override fun pageListParse(document: Document): List { - return document.select(".wp-block-image > img").mapIndexed { i, element -> + return document.select(imageSelector).mapIndexed { i, element -> val attribute = if (element.hasAttr("data-src")) "data-src" else "src" Page(i, "", element.attr(attribute)) } } - override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not Used") + override fun imageUrlParse(document: Document): String = + throw UnsupportedOperationException("Not Used") override fun getFilterList() = FilterList() } diff --git a/src/ja/mangaraw/src/eu/kanade/tachiyomi/extension/ja/mangaraw/MangaRawFactory.kt b/src/ja/mangaraw/src/eu/kanade/tachiyomi/extension/ja/mangaraw/MangaRawFactory.kt index b2a6d144c..4a556b00d 100644 --- a/src/ja/mangaraw/src/eu/kanade/tachiyomi/extension/ja/mangaraw/MangaRawFactory.kt +++ b/src/ja/mangaraw/src/eu/kanade/tachiyomi/extension/ja/mangaraw/MangaRawFactory.kt @@ -1,14 +1,13 @@ package eu.kanade.tachiyomi.extension.ja.mangaraw +import eu.kanade.tachiyomi.extension.ja.mangaraw.sources.Comick +import eu.kanade.tachiyomi.extension.ja.mangaraw.sources.MangaPro import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceFactory class MangaRawFactory : SourceFactory { override fun createSources(): List = listOf( - Manga1000(), - Manga1001() + Comick(), + MangaPro() ) } - -class Manga1000 : MangaRaw("Manga1000", "https://manga1000.com") -class Manga1001 : MangaRaw("Manga1001", "https://manga1001.com") diff --git a/src/ja/mangaraw/src/eu/kanade/tachiyomi/extension/ja/mangaraw/sources/Comick.kt b/src/ja/mangaraw/src/eu/kanade/tachiyomi/extension/ja/mangaraw/sources/Comick.kt new file mode 100644 index 000000000..857d5885e --- /dev/null +++ b/src/ja/mangaraw/src/eu/kanade/tachiyomi/extension/ja/mangaraw/sources/Comick.kt @@ -0,0 +1,15 @@ +package eu.kanade.tachiyomi.extension.ja.mangaraw.sources + +import eu.kanade.tachiyomi.extension.ja.mangaraw.MangaRaw +import okhttp3.Request + +// Comick has a slightly different layout in html, even though it looks exactly the same to MangaRaw visually +class Comick : MangaRaw("Comick", "https://comick.top") { + + override val imageSelector = + "#main > article > div > div > div.entry-content > center > p > img" + + // comick.top doesn't have a popular manga page + // redirect to latest manga request + override fun popularMangaRequest(page: Int): Request = latestUpdatesRequest(page) +} diff --git a/src/ja/mangaraw/src/eu/kanade/tachiyomi/extension/ja/mangaraw/sources/MangaPro.kt b/src/ja/mangaraw/src/eu/kanade/tachiyomi/extension/ja/mangaraw/sources/MangaPro.kt new file mode 100644 index 000000000..d6d56c00a --- /dev/null +++ b/src/ja/mangaraw/src/eu/kanade/tachiyomi/extension/ja/mangaraw/sources/MangaPro.kt @@ -0,0 +1,18 @@ +package eu.kanade.tachiyomi.extension.ja.mangaraw.sources + +import eu.kanade.tachiyomi.extension.ja.mangaraw.MangaRaw +import eu.kanade.tachiyomi.source.model.SManga +import org.jsoup.nodes.Document + +class MangaPro : MangaRaw("MangaPro", "https://mangapro.top") { + override fun mangaDetailsParse(document: Document) = SManga.create().apply { + // Extract the author, take out the colon and quotes + author = document.select("#main > article > div > div > div > div > p").html() + .substringAfter("").substringBefore("
").drop(1) + genre = document.select("#main > article > div > div > div > div > p > a") + .joinToString(separator = ", ", transform = { it.text() }) + description = document.select("#main > article > div > div > div > div > p").html() + .substringAfterLast("
") + thumbnail_url = document.select(".wp-block-image img").attr("abs:src") + } +}