Hive Works - Manga not found (#2475)

* Hive Works - Manga not found

* Hiveworks - Add Lists

- Add Originals, Kids, Completed Lists

* Use firstOrNull
This commit is contained in:
happywillow0 2020-03-23 05:41:34 -04:00 committed by GitHub
parent 4b6e3c6309
commit 519cc3972e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 17 deletions

View File

@ -5,7 +5,7 @@ ext {
appName = 'Tachiyomi: Hiveworks Comics' appName = 'Tachiyomi: Hiveworks Comics'
pkgNameSuffix = 'en.hiveworks' pkgNameSuffix = 'en.hiveworks'
extClass = '.Hiveworks' extClass = '.Hiveworks'
extVersionCode = 3 extVersionCode = 4
libVersion = '1.2' libVersion = '1.2'
} }

View File

@ -86,9 +86,13 @@ class Hiveworks : ParsedHttpSource() {
val uri = Uri.parse(baseUrl).buildUpon() val uri = Uri.parse(baseUrl).buildUpon()
if (filters.isNotEmpty()) uri.appendPath("home") if (filters.isNotEmpty()) uri.appendPath("home")
//Append uri filters //Append uri filters
filters.forEach { filters.forEach { filter ->
if (it is UriFilter) when (filter) {
it.addToUri(uri) is UriFilter -> filter.addToUri(uri)
is OriginalsFilter -> if (filter.state) return GET("$baseUrl/originals", headers)
is KidsFilter -> if (filter.state) return GET("$baseUrl/kids", headers)
is CompletedFilter -> if (filter.state) return GET("$baseUrl/completed", headers)
}
} }
if (query.isNotEmpty()) { if (query.isNotEmpty()) {
searchQuery = query searchQuery = query
@ -97,20 +101,19 @@ class Hiveworks : ParsedHttpSource() {
return GET(uri.toString(), headers) return GET(uri.toString(), headers)
} }
override fun searchMangaSelector() = popularMangaSelector() override fun searchMangaSelector() = popularMangaSelector() + ", div.originalsblock"
override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() override fun searchMangaNextPageSelector() = popularMangaNextPageSelector()
override fun searchMangaParse(response: Response): MangasPage { override fun searchMangaParse(response: Response): MangasPage {
val url = response.request().url().toString() val url = response.request().url().toString()
val document = response.asJsoup() val document = response.asJsoup()
val selectManga = document.select(searchMangaSelector()) val selectManga = document.select(searchMangaSelector())
val filterManga = if (url.endsWith("localSearch")) { val mangas = if (url.endsWith("localSearch")) {
selectManga.filter { it.text().contains(searchQuery, true) } selectManga.filter { it.text().contains(searchQuery, true) }.map { element -> searchMangaFromElement(element) }
} else if (url.contains("originals")) {
selectManga.map { element -> searchOriginalMangaFromElement(element) }
} else { } else {
selectManga selectManga.map { element -> searchMangaFromElement(element) }
}
val mangas = filterManga.map { element ->
searchMangaFromElement(element)
} }
val hasNextPage = searchMangaNextPageSelector()?.let { selector -> val hasNextPage = searchMangaNextPageSelector()?.let { selector ->
@ -121,6 +124,14 @@ class Hiveworks : ParsedHttpSource() {
} }
override fun searchMangaFromElement(element: Element) = mangaFromElement(element) override fun searchMangaFromElement(element: Element) = mangaFromElement(element)
private fun searchOriginalMangaFromElement(element: Element): SManga = SManga.create().apply {
thumbnail_url = element.select("img")[1].attr("abs:src")
title = element.select("div.header").text().substringBefore("by").trim()
author = element.select("div.header").text().substringAfter("by").trim()
artist = author
description = element.select("div.description").text().trim()
url = element.select("a").first().attr("href")
}
// Common // Common
@ -152,11 +163,9 @@ class Hiveworks : ParsedHttpSource() {
override fun mangaDetailsParse(document: Document): SManga = throw Exception("Not Used") override fun mangaDetailsParse(document: Document): SManga = throw Exception("Not Used")
private fun mangaDetailsParse(response: Response, url: String): SManga { private fun mangaDetailsParse(response: Response, url: String): SManga {
val document = response.asJsoup() val document = response.asJsoup()
return document.select(popularMangaSelector()).first { return document.select(popularMangaSelector())
url == it.select("a.comiclink").first().attr("abs:href") .firstOrNull { url == it.select("a.comiclink").first().attr("abs:href") }
}.let { ?.let { mangaFromElement(it) } ?: SManga.create()
mangaFromElement(it)
}
} }
@ -248,9 +257,19 @@ class Hiveworks : ParsedHttpSource() {
RatingFilter(), RatingFilter(),
GenreFilter(), GenreFilter(),
TitleFilter(), TitleFilter(),
SortFilter() SortFilter(),
Filter.Separator(),
Filter.Header("Extra Lists"),
OriginalsFilter(),
KidsFilter(),
CompletedFilter()
) )
private class OriginalsFilter : Filter.CheckBox("Original Comics")
private class KidsFilter : Filter.CheckBox("Kids Comics")
private class CompletedFilter : Filter.CheckBox("Completed Comics")
private open class UriSelectFilter(displayName: String, val uriParam: String, val vals: Array<Pair<String, String>>, private open class UriSelectFilter(displayName: String, val uriParam: String, val vals: Array<Pair<String, String>>,
val firstIsUnspecified: Boolean = true, val firstIsUnspecified: Boolean = true,
defaultValue: Int = 0) : defaultValue: Int = 0) :