From afe875763847ee9500215c66b0dfc5062c76b412 Mon Sep 17 00:00:00 2001 From: Mike <51273546+SnakeDoc83@users.noreply.github.com> Date: Sat, 20 Jun 2020 00:34:14 -0400 Subject: [PATCH] FMReader - fix RawLH & KissLove, remove MangaBone (#3579) --- src/all/fmreader/build.gradle | 2 +- .../extension/all/fmreader/FMReader.kt | 19 ++++++++++++++++++- .../extension/all/fmreader/FMReaderFactory.kt | 7 ++++--- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/all/fmreader/build.gradle b/src/all/fmreader/build.gradle index c669b1b42..a52cfcea5 100644 --- a/src/all/fmreader/build.gradle +++ b/src/all/fmreader/build.gradle @@ -5,7 +5,7 @@ ext { appName = 'Tachiyomi: FMReader (multiple aggregators)' pkgNameSuffix = 'all.fmreader' extClass = '.FMReaderFactory' - extVersionCode = 16 + extVersionCode = 17 libVersion = '1.2' } diff --git a/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReader.kt b/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReader.kt index cdc232130..9ee5b4f20 100644 --- a/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReader.kt +++ b/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReader.kt @@ -1,5 +1,6 @@ package eu.kanade.tachiyomi.extension.all.fmreader +import android.util.Base64 import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList @@ -9,6 +10,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup +import java.nio.charset.Charset import java.util.Calendar import okhttp3.Headers import okhttp3.HttpUrl @@ -33,7 +35,7 @@ abstract class FMReader( override val client: OkHttpClient = network.cloudflareClient override fun headersBuilder() = Headers.Builder().apply { - add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64) Gecko/20100101 Firefox/75.0") + add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64) Gecko/20100101 Firefox/77.0") add("Referer", baseUrl) } @@ -259,6 +261,21 @@ abstract class FMReader( } } + protected fun base64PageListParse(document: Document): List { + fun Element.decoded(): String { + val attr = if (this.hasAttr("data-original")) "data-original" else "data-src" + return if (!this.attr(attr).contains(".")) { + Base64.decode(this.attr(attr), Base64.DEFAULT).toString(Charset.defaultCharset()) + } else { + this.attr("abs:$attr") + } + } + + return document.select(pageListImageSelector).mapIndexed { i, img -> + Page(i, document.location(), img.decoded()) + } + } + override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not used") private class TextField(name: String, val key: String) : Filter.Text(name) diff --git a/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReaderFactory.kt b/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReaderFactory.kt index c51162eaa..1725dd06d 100644 --- a/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReaderFactory.kt +++ b/src/all/fmreader/src/eu/kanade/tachiyomi/extension/all/fmreader/FMReaderFactory.kt @@ -25,7 +25,6 @@ class FMReaderFactory : SourceFactory { override fun createSources(): List = listOf( LHTranslation(), KissLove(), - MangaBone(), ReadComicOnlineOrg(), HanaScan(), RawLH(), @@ -47,8 +46,9 @@ class FMReaderFactory : SourceFactory { class LHTranslation : FMReader("LHTranslation", "https://lhtranslation.net", "en") -class KissLove : FMReader("KissLove", "https://kisslove.net", "ja") -class MangaBone : FMReader("MangaBone", "https://mangabone.com", "en") +class KissLove : FMReader("KissLove", "https://kisslove.net", "ja") { + override fun pageListParse(document: Document): List = base64PageListParse(document) +} class ReadComicOnlineOrg : FMReader("ReadComicOnline.org", "https://readcomiconline.org", "en") { override val client: OkHttpClient = network.cloudflareClient.newBuilder() @@ -94,6 +94,7 @@ class HanaScan : FMReader("HanaScan (RawQQ)", "https://hanascan.com", "ja") { class RawLH : FMReader("RawLH", "https://loveheaven.net", "ja") { override fun popularMangaNextPageSelector() = "div.col-md-8 button" + override fun pageListParse(document: Document): List = base64PageListParse(document) // Referer needs to be chapter URL override fun imageRequest(page: Page): Request = GET(page.imageUrl!!, headersBuilder().set("Referer", page.url).build()) }