MangaKatana - fix covers (#3378)

This commit is contained in:
Mike 2020-06-02 04:47:35 -04:00 committed by GitHub
parent 11efc8f282
commit 92132e47c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 15 deletions

View File

@ -5,7 +5,7 @@ ext {
appName = 'Tachiyomi: MangaKatana'
pkgNameSuffix = 'en.mangakatana'
extClass = '.MangaKatana'
extVersionCode = 1
extVersionCode = 2
libVersion = '1.2'
}

View File

@ -6,8 +6,12 @@ import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import java.lang.Exception
import java.text.SimpleDateFormat
import java.util.Locale
import okhttp3.MediaType
import okhttp3.OkHttpClient
import okhttp3.ResponseBody
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
@ -20,7 +24,19 @@ class MangaKatana : ParsedHttpSource() {
override val supportsLatest = true
override val client = network.cloudflareClient
override val client: OkHttpClient = network.cloudflareClient.newBuilder().addNetworkInterceptor { chain ->
val originalResponse = chain.proceed(chain.request())
if (originalResponse.headers("Content-Type").contains("application/octet-stream")) {
val orgBody = originalResponse.body()!!.bytes()
val extension = chain.request().url().toString().substringAfterLast(".")
val newBody = ResponseBody.create(MediaType.parse("image/$extension"), orgBody)
originalResponse.newBuilder()
.body(newBody)
.build()
} else {
originalResponse
}
}.build()
override fun latestUpdatesSelector() = "div#book_list > div.item"
@ -29,7 +45,7 @@ class MangaKatana : ParsedHttpSource() {
override fun latestUpdatesFromElement(element: Element) = SManga.create().apply {
setUrlWithoutDomain(element.select("div.text > h3 > a").attr("href"))
title = element.select("div.text > h3 > a").text()
thumbnail_url = element.select("img").attr("abs:data-src")
thumbnail_url = element.select("img").attr("abs:src")
}
override fun latestUpdatesNextPageSelector() = ".next.page-numbers"
@ -55,7 +71,7 @@ class MangaKatana : ParsedHttpSource() {
description = document.select(".summary > p").text()
status = parseStatus(document.select(".value.status").text())
genre = document.select(".genres > a").joinToString { it.text() }
thumbnail_url = document.select(".cover > img").attr("abs:data-src")
thumbnail_url = document.select("div.media div.cover img").attr("abs:src")
}
private fun parseStatus(status: String) = when {
@ -69,7 +85,7 @@ class MangaKatana : ParsedHttpSource() {
override fun chapterFromElement(element: Element) = SChapter.create().apply {
setUrlWithoutDomain(element.select("a").attr("href"))
name = element.select("a").text()
date_upload = dateFormat.parse(element.select(".update_time").text()).time ?: 0
date_upload = dateFormat.parse(element.select(".update_time").text()).time
}
companion object {
@ -79,18 +95,14 @@ class MangaKatana : ParsedHttpSource() {
}
override fun pageListParse(document: Document): List<Page> {
val html = document.toString()
// Thanks to https://github.com/manga-py/manga-py
val regex = Regex("var\\s+\\w+\\s?=\\s?(\\[['\"].+?['\"]).?\\]\\s?;")
val match = regex.find(html)?.destructured?.toList()?.get(0)?.removePrefix("[")
return match!!.split(",").mapIndexed { i, string ->
Page(i, "", string.reversed().replace("\"", "").replace("'", ""))
// image URLs are in an array with each URL being reversed (e.g. 1.jpg becomes gpj.1)
val script = document.select("script:containsData(var ytaw)").firstOrNull()?.data()
?: throw Exception("Image array not found")
val regex = Regex("""'(.[^']*ptth)'""")
return regex.findAll(script).toList().mapIndexed { i, mr ->
Page(i, "", mr.groupValues[1].reversed())
}
}
override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not Used")
override fun getFilterList() = FilterList()
}