hitomi: better locale in tag search

pull/426/head
AwkwardPeak7 2 years ago
parent 495c9fad33
commit 039075086e
No known key found for this signature in database

@ -122,17 +122,12 @@ class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSo
} }
} else { } else {
if (offset == 0) { if (offset == 0) {
val query = cachedSearchIds =
filter.tags.joinToString(" ") { it.key }.let { hitomiSearch(
val lang = filter.locale.getSiteLang() filter.tags.joinToString(" ") { it.key },
if (lang != "all") { filter.sortOrder == SortOrder.POPULARITY,
"$it language:$lang" filter.locale.getSiteLang(),
} else { ).toList()
it
}
}
cachedSearchIds = hitomiSearch(query, filter.sortOrder == SortOrder.POPULARITY).toList()
} }
cachedSearchIds.subList(offset, min(offset + 25, cachedSearchIds.size)) cachedSearchIds.subList(offset, min(offset + 25, cachedSearchIds.size))
} }
@ -157,6 +152,7 @@ class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSo
private suspend fun hitomiSearch( private suspend fun hitomiSearch(
query: String, query: String,
sortByPopularity: Boolean = false, sortByPopularity: Boolean = false,
language: String = "all",
): Set<Int> = ): Set<Int> =
coroutineScope { coroutineScope {
val terms = val terms =
@ -184,7 +180,7 @@ class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSo
positiveTerms.map { positiveTerms.map {
async { async {
runCatching { runCatching {
getGalleryIDsForQuery(it) getGalleryIDsForQuery(it, language)
}.getOrDefault(emptySet()) }.getOrDefault(emptySet())
} }
} }
@ -193,15 +189,15 @@ class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSo
negativeTerms.map { negativeTerms.map {
async { async {
runCatching { runCatching {
getGalleryIDsForQuery(it) getGalleryIDsForQuery(it, language)
}.getOrDefault(emptySet()) }.getOrDefault(emptySet())
} }
} }
val results = val results =
when { when {
sortByPopularity -> getGalleryIDsFromNozomi(null, "popular", "all") sortByPopularity -> getGalleryIDsFromNozomi(null, "popular", language)
positiveTerms.isEmpty() -> getGalleryIDsFromNozomi(null, "index", "all") positiveTerms.isEmpty() -> getGalleryIDsFromNozomi(null, "index", language)
else -> emptySet() else -> emptySet()
}.toMutableSet() }.toMutableSet()
@ -230,7 +226,10 @@ class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSo
} }
// search.js // search.js
private suspend fun getGalleryIDsForQuery(query: String): Set<Int> { private suspend fun getGalleryIDsForQuery(
query: String,
language: String = "all",
): Set<Int> {
query.replace("_", " ").let { query.replace("_", " ").let {
if (it.indexOf(':') > -1) { if (it.indexOf(':') > -1) {
val sides = it.split(":") val sides = it.split(":")
@ -238,7 +237,7 @@ class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSo
var tag = sides[1] var tag = sides[1]
var area: String? = ns var area: String? = ns
var language = "all" var lang = language
when (ns) { when (ns) {
"female", "male" -> { "female", "male" -> {
area = "tag" area = "tag"
@ -246,12 +245,12 @@ class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSo
} }
"language" -> { "language" -> {
area = null area = null
language = tag lang = tag
tag = "index" tag = "index"
} }
} }
return getGalleryIDsFromNozomi(area, tag, language) return getGalleryIDsFromNozomi(area, tag, lang)
} }
val key = hashTerm(it) val key = hashTerm(it)

Loading…
Cancel
Save