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'
pkgNameSuffix = 'en.hiveworks'
extClass = '.Hiveworks'
extVersionCode = 3
extVersionCode = 4
libVersion = '1.2'
}

View File

@ -86,9 +86,13 @@ class Hiveworks : ParsedHttpSource() {
val uri = Uri.parse(baseUrl).buildUpon()
if (filters.isNotEmpty()) uri.appendPath("home")
//Append uri filters
filters.forEach {
if (it is UriFilter)
it.addToUri(uri)
filters.forEach { filter ->
when (filter) {
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()) {
searchQuery = query
@ -97,20 +101,19 @@ class Hiveworks : ParsedHttpSource() {
return GET(uri.toString(), headers)
}
override fun searchMangaSelector() = popularMangaSelector()
override fun searchMangaSelector() = popularMangaSelector() + ", div.originalsblock"
override fun searchMangaNextPageSelector() = popularMangaNextPageSelector()
override fun searchMangaParse(response: Response): MangasPage {
val url = response.request().url().toString()
val document = response.asJsoup()
val selectManga = document.select(searchMangaSelector())
val filterManga = if (url.endsWith("localSearch")) {
selectManga.filter { it.text().contains(searchQuery, true) }
val mangas = if (url.endsWith("localSearch")) {
selectManga.filter { it.text().contains(searchQuery, true) }.map { element -> searchMangaFromElement(element) }
} else if (url.contains("originals")) {
selectManga.map { element -> searchOriginalMangaFromElement(element) }
} else {
selectManga
}
val mangas = filterManga.map { element ->
searchMangaFromElement(element)
selectManga.map { element -> searchMangaFromElement(element) }
}
val hasNextPage = searchMangaNextPageSelector()?.let { selector ->
@ -121,6 +124,14 @@ class Hiveworks : ParsedHttpSource() {
}
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
@ -152,11 +163,9 @@ class Hiveworks : ParsedHttpSource() {
override fun mangaDetailsParse(document: Document): SManga = throw Exception("Not Used")
private fun mangaDetailsParse(response: Response, url: String): SManga {
val document = response.asJsoup()
return document.select(popularMangaSelector()).first {
url == it.select("a.comiclink").first().attr("abs:href")
}.let {
mangaFromElement(it)
}
return document.select(popularMangaSelector())
.firstOrNull { url == it.select("a.comiclink").first().attr("abs:href") }
?.let { mangaFromElement(it) } ?: SManga.create()
}
@ -248,9 +257,19 @@ class Hiveworks : ParsedHttpSource() {
RatingFilter(),
GenreFilter(),
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>>,
val firstIsUnspecified: Boolean = true,
defaultValue: Int = 0) :