FMReader - fix RawLH & KissLove, remove MangaBone (#3579)

This commit is contained in:
Mike 2020-06-20 00:34:14 -04:00 committed by GitHub
parent 82e8daf2a9
commit afe8757638
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 5 deletions

View File

@ -5,7 +5,7 @@ ext {
appName = 'Tachiyomi: FMReader (multiple aggregators)' appName = 'Tachiyomi: FMReader (multiple aggregators)'
pkgNameSuffix = 'all.fmreader' pkgNameSuffix = 'all.fmreader'
extClass = '.FMReaderFactory' extClass = '.FMReaderFactory'
extVersionCode = 16 extVersionCode = 17
libVersion = '1.2' libVersion = '1.2'
} }

View File

@ -1,5 +1,6 @@
package eu.kanade.tachiyomi.extension.all.fmreader package eu.kanade.tachiyomi.extension.all.fmreader
import android.util.Base64
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList 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.model.SManga
import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
import java.nio.charset.Charset
import java.util.Calendar import java.util.Calendar
import okhttp3.Headers import okhttp3.Headers
import okhttp3.HttpUrl import okhttp3.HttpUrl
@ -33,7 +35,7 @@ abstract class FMReader(
override val client: OkHttpClient = network.cloudflareClient override val client: OkHttpClient = network.cloudflareClient
override fun headersBuilder() = Headers.Builder().apply { 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) add("Referer", baseUrl)
} }
@ -259,6 +261,21 @@ abstract class FMReader(
} }
} }
protected fun base64PageListParse(document: Document): List<Page> {
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") override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not used")
private class TextField(name: String, val key: String) : Filter.Text(name) private class TextField(name: String, val key: String) : Filter.Text(name)

View File

@ -25,7 +25,6 @@ class FMReaderFactory : SourceFactory {
override fun createSources(): List<Source> = listOf( override fun createSources(): List<Source> = listOf(
LHTranslation(), LHTranslation(),
KissLove(), KissLove(),
MangaBone(),
ReadComicOnlineOrg(), ReadComicOnlineOrg(),
HanaScan(), HanaScan(),
RawLH(), RawLH(),
@ -47,8 +46,9 @@ class FMReaderFactory : SourceFactory {
class LHTranslation : FMReader("LHTranslation", "https://lhtranslation.net", "en") class LHTranslation : FMReader("LHTranslation", "https://lhtranslation.net", "en")
class KissLove : FMReader("KissLove", "https://kisslove.net", "ja") class KissLove : FMReader("KissLove", "https://kisslove.net", "ja") {
class MangaBone : FMReader("MangaBone", "https://mangabone.com", "en") override fun pageListParse(document: Document): List<Page> = base64PageListParse(document)
}
class ReadComicOnlineOrg : FMReader("ReadComicOnline.org", "https://readcomiconline.org", "en") { class ReadComicOnlineOrg : FMReader("ReadComicOnline.org", "https://readcomiconline.org", "en") {
override val client: OkHttpClient = network.cloudflareClient.newBuilder() 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") { class RawLH : FMReader("RawLH", "https://loveheaven.net", "ja") {
override fun popularMangaNextPageSelector() = "div.col-md-8 button" override fun popularMangaNextPageSelector() = "div.col-md-8 button"
override fun pageListParse(document: Document): List<Page> = base64PageListParse(document)
// Referer needs to be chapter URL // Referer needs to be chapter URL
override fun imageRequest(page: Page): Request = GET(page.imageUrl!!, headersBuilder().set("Referer", page.url).build()) override fun imageRequest(page: Page): Request = GET(page.imageUrl!!, headersBuilder().set("Referer", page.url).build())
} }