Zbulu multisrc fixes (#8949)
* Fix chapter date parsing * Fix search request building
This commit is contained in:
parent
47f5ac549f
commit
6935c22ba4
|
@ -14,8 +14,8 @@ import okhttp3.Request
|
|||
import okhttp3.Response
|
||||
import org.jsoup.nodes.Document
|
||||
import org.jsoup.nodes.Element
|
||||
import java.text.ParseException
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Calendar
|
||||
import java.util.Locale
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
|
@ -75,28 +75,20 @@ abstract class Zbulu(
|
|||
// Search
|
||||
|
||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||
val url = if (query.isNotBlank()) {
|
||||
"$baseUrl/?s=$query"
|
||||
} else {
|
||||
lateinit var ret: String
|
||||
lateinit var genre: String
|
||||
filters.forEach { filter ->
|
||||
when (filter) {
|
||||
is AuthorField -> {
|
||||
if (filter.state.isNotBlank()) {
|
||||
ret = "$baseUrl/author/${filter.state.replace(" ", "-")}/page-$page"
|
||||
val filterList = if (filters.isEmpty()) getFilterList() else filters
|
||||
val authorFilter = filterList.find { it is AuthorFilter } as AuthorFilter
|
||||
val genreFilter = filterList.find { it is GenreFilter } as GenreFilter
|
||||
|
||||
val url = when {
|
||||
query.isNotBlank() -> "$baseUrl/?s=$query"
|
||||
authorFilter.state.isNotBlank() -> "$baseUrl/author/${authorFilter.state.replace(" ", "-")}/page-$page"
|
||||
genreFilter.state != 0 -> {
|
||||
val genre = genreFilter.toUriPart().let { if (it == "completed") "completed" else "genre/$it" }
|
||||
"$baseUrl/$genre/page-$page"
|
||||
}
|
||||
else -> "$baseUrl/manga-list/page-$page/"
|
||||
}
|
||||
is GenreFilter -> {
|
||||
if (filter.toUriPart().isNotBlank() && filter.state != 0) {
|
||||
filter.toUriPart().let { genre = if (it == "completed") "completed" else "genre/$it" }
|
||||
ret = "$baseUrl/$genre/page-$page"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ret
|
||||
}
|
||||
|
||||
return GET(url, headers)
|
||||
}
|
||||
|
||||
|
@ -156,21 +148,42 @@ abstract class Zbulu(
|
|||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
val dateFormat by lazy {
|
||||
SimpleDateFormat("MM/dd/yyyy", Locale.US)
|
||||
}
|
||||
}
|
||||
|
||||
private fun String?.toDate(): Long {
|
||||
return if (this.isNullOrEmpty()) {
|
||||
0
|
||||
if (this.isNullOrEmpty()) return 0L
|
||||
val date = this
|
||||
return if (date.contains("ago")) {
|
||||
val value = date.split(' ')[0].toInt()
|
||||
when {
|
||||
"second" in date -> Calendar.getInstance().apply {
|
||||
add(Calendar.SECOND, value * -1)
|
||||
}.timeInMillis
|
||||
"minute" in date -> Calendar.getInstance().apply {
|
||||
add(Calendar.MINUTE, value * -1)
|
||||
}.timeInMillis
|
||||
"hour" in date -> Calendar.getInstance().apply {
|
||||
add(Calendar.HOUR_OF_DAY, value * -1)
|
||||
}.timeInMillis
|
||||
"day" in date -> Calendar.getInstance().apply {
|
||||
add(Calendar.DATE, value * -1)
|
||||
}.timeInMillis
|
||||
"week" in date -> Calendar.getInstance().apply {
|
||||
add(Calendar.DATE, value * 7 * -1)
|
||||
}.timeInMillis
|
||||
"month" in date -> Calendar.getInstance().apply {
|
||||
add(Calendar.MONTH, value * -1)
|
||||
}.timeInMillis
|
||||
"year" in date -> Calendar.getInstance().apply {
|
||||
add(Calendar.YEAR, value * -1)
|
||||
}.timeInMillis
|
||||
else -> {
|
||||
0L
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// In the event site displays invalid date
|
||||
try {
|
||||
dateFormat.parse(this)?.time ?: 0
|
||||
} catch (_: ParseException) {
|
||||
0
|
||||
dateFormat.parse(date)?.time ?: 0
|
||||
} catch (_: Exception) {
|
||||
0L
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -187,13 +200,13 @@ abstract class Zbulu(
|
|||
|
||||
// Filters
|
||||
|
||||
private class AuthorField : Filter.Text("Author")
|
||||
private class AuthorFilter : Filter.Text("Author")
|
||||
|
||||
override fun getFilterList() = FilterList(
|
||||
Filter.Header("Cannot combine search types!"),
|
||||
Filter.Header("Author name must be exact."),
|
||||
Filter.Separator("-----------------"),
|
||||
AuthorField(),
|
||||
Filter.Separator(),
|
||||
AuthorFilter(),
|
||||
GenreFilter()
|
||||
)
|
||||
|
||||
|
@ -257,4 +270,10 @@ abstract class Zbulu(
|
|||
Filter.Select<String>(displayName, vals.map { it.first }.toTypedArray()) {
|
||||
fun toUriPart() = vals[state].second
|
||||
}
|
||||
|
||||
companion object {
|
||||
val dateFormat by lazy {
|
||||
SimpleDateFormat("MM/dd/yyyy", Locale.US)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ class ZbuluGenerator : ThemeSourceGenerator {
|
|||
|
||||
override val themeClass = "Zbulu"
|
||||
|
||||
override val baseVersionCode: Int = 2
|
||||
override val baseVersionCode: Int = 3
|
||||
|
||||
override val sources = listOf(
|
||||
SingleLang("HolyManga", "https://w15.holymanga.net", "en", overrideVersionCode = 1),
|
||||
|
|
Loading…
Reference in New Issue