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:
parent
4b6e3c6309
commit
519cc3972e
@ -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'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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) :
|
||||||
|
Loading…
x
Reference in New Issue
Block a user