Wiemanga refactor (#1811)

Wiemanga refactor
This commit is contained in:
Mike 2019-11-23 07:45:21 -05:00 committed by Carlos
parent f6c80ee3a4
commit 3904539066
2 changed files with 52 additions and 44 deletions

View File

@ -5,7 +5,7 @@ ext {
appName = 'Tachiyomi: WieManga' appName = 'Tachiyomi: WieManga'
pkgNameSuffix = 'de.wiemanga' pkgNameSuffix = 'de.wiemanga'
extClass = '.WieManga' extClass = '.WieManga'
extVersionCode = 3 extVersionCode = 4
libVersion = '1.2' libVersion = '1.2'
} }

View File

@ -6,10 +6,13 @@ import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter 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 okhttp3.Headers
import okhttp3.OkHttpClient
import okhttp3.Request import okhttp3.Request
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Locale
class WieManga : ParsedHttpSource() { class WieManga : ParsedHttpSource() {
@ -23,9 +26,11 @@ class WieManga : ParsedHttpSource() {
override val supportsLatest = true override val supportsLatest = true
private fun imageHeader(refer: String) = super.headersBuilder() override val client: OkHttpClient = network.cloudflareClient
.add("Referer", refer)
.build() override fun headersBuilder(): Headers.Builder = super.headersBuilder()
.add("Accept-Language", "en-US,en;q=0.5")
.add("Referer", baseUrl)
override fun popularMangaSelector() = ".booklist td > div" override fun popularMangaSelector() = ".booklist td > div"
@ -40,23 +45,22 @@ class WieManga : ParsedHttpSource() {
} }
override fun popularMangaFromElement(element: Element): SManga { override fun popularMangaFromElement(element: Element): SManga {
val image = element.select("dt img")
val title = element.select("dd a:first-child")
val manga = SManga.create() val manga = SManga.create()
manga.setUrlWithoutDomain(title.attr("href"))
manga.title = title.text() element.select("dd a:first-child").let {
manga.thumbnail_url = image.attr("src") manga.setUrlWithoutDomain(it.attr("href"))
manga.title = it.text()
}
manga.thumbnail_url = element.select("dt img").attr("abs:src")
return manga return manga
} }
override fun latestUpdatesFromElement(element: Element): SManga { override fun latestUpdatesFromElement(element: Element): SManga = popularMangaFromElement(element)
return popularMangaFromElement(element)
}
override fun popularMangaNextPageSelector() = null override fun popularMangaNextPageSelector(): String? = null
override fun latestUpdatesNextPageSelector() = null override fun latestUpdatesNextPageSelector(): String? = null
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
return GET("$baseUrl/search/?wd=$query", headers) return GET("$baseUrl/search/?wd=$query", headers)
@ -65,51 +69,57 @@ class WieManga : ParsedHttpSource() {
override fun searchMangaSelector() = ".searchresult td > div" override fun searchMangaSelector() = ".searchresult td > div"
override fun searchMangaFromElement(element: Element): SManga { override fun searchMangaFromElement(element: Element): SManga {
val image = element.select(".resultimg img")
val title = element.select(".resultbookname")
val manga = SManga.create() val manga = SManga.create()
manga.setUrlWithoutDomain(title.attr("href"))
manga.title = title.text() element.select(".resultbookname").let {
manga.thumbnail_url = image.attr("src") manga.setUrlWithoutDomain(it.attr("href"))
manga.title = it.text()
}
manga.thumbnail_url = element.select(".resultimg img").attr("abs:src")
return manga return manga
} }
override fun searchMangaNextPageSelector() = ".pagetor a.l" override fun searchMangaNextPageSelector() = ".pagetor a.l"
override fun mangaDetailsParse(document: Document): SManga { override fun mangaDetailsParse(document: Document): SManga {
val imageElement = document.select(".bookmessgae tr > td:nth-child(1)").first()
val infoElement = document.select(".bookmessgae tr > td:nth-child(2)").first()
val manga = SManga.create() val manga = SManga.create()
manga.author = infoElement.select("dd:nth-of-type(2) a").first()?.text()
manga.artist = infoElement.select("dd:nth-of-type(3) a").first()?.text()
manga.description = infoElement.select("dl > dt:last-child").first()?.text()?.replaceFirst("Beschreibung", "")
manga.thumbnail_url = imageElement.select("img").first()?.attr("src")
if (manga.author == "RSS") document.select("div.bookmessgae").let { details ->
manga.author = null manga.author = details.select("dd:contains(Autor:) a").text()
manga.artist = details.select("dd:contains(Zeichner:) a").text()
manga.genre = details.select("dd:contains(Genre:) a").joinToString { it.text() }
manga.description = details.select("dt").first()?.ownText()
manga.thumbnail_url = details.select("div.bookfrontpage img").attr("abs:src")
manga.status = parseStatus(details.select("dd:contains(Status:) a").text())
}
if (manga.artist == "RSS")
manga.artist = null
return manga return manga
} }
private fun parseStatus(status: String?) = when {
status == null -> SManga.UNKNOWN
status.contains("ongoing", ignoreCase = true) -> SManga.ONGOING
status.contains("finished", ignoreCase = true) -> SManga.COMPLETED
else -> SManga.UNKNOWN
}
override fun chapterListSelector() = ".chapterlist tr:not(:first-child)" override fun chapterListSelector() = ".chapterlist tr:not(:first-child)"
override fun chapterFromElement(element: Element): SChapter { override fun chapterFromElement(element: Element): SChapter {
val urlElement = element.select(".col1 a").first()
val dateElement = element.select(".col3 a").first()
val chapter = SChapter.create() val chapter = SChapter.create()
chapter.setUrlWithoutDomain(urlElement.attr("href"))
chapter.name = urlElement.text() element.select(".col1 a").first().let {
chapter.date_upload = dateElement?.text()?.let { parseChapterDate(it) } ?: 0 chapter.setUrlWithoutDomain(it.attr("href"))
chapter.name = it.text()
}
chapter.date_upload = element.select(".col3 a").first()?.text()?.let { parseChapterDate(it) } ?: 0
return chapter return chapter
} }
private fun parseChapterDate(date: String): Long { private fun parseChapterDate(date: String): Long {
return SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(date).time return SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.getDefault()).parse(date).time
} }
override fun pageListParse(document: Document): List<Page> { override fun pageListParse(document: Document): List<Page> {
@ -121,10 +131,8 @@ class WieManga : ParsedHttpSource() {
return pages return pages
} }
override fun imageUrlRequest(page: Page): Request { override fun imageUrlParse(document: Document): String {
return GET(page.url, imageHeader(page.url)) return document.select("img#comicpic").first().attr("abs:src")
} }
override fun imageUrlParse(document: Document) = document.select("img#comicpic").first().attr("src")
} }