hitomi: locales

AwkwardPeak7 2 years ago
parent a40a8d329a
commit b61c5e8f12
No known key found for this signature in database

@ -30,6 +30,45 @@ class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSo
SortOrder.POPULARITY, SortOrder.POPULARITY,
) )
private val localeMap: Map<Locale, String> = mapOf(
Locale("id") to "indonesian",
Locale("jv") to "javanese",
Locale("ca") to "catalan",
Locale("ceb") to "cebuano",
Locale("cs") to "czech",
Locale("da") to "danish",
Locale("de") to "german",
Locale("et") to "estonian",
Locale.ENGLISH to "english",
Locale("es") to "spanish",
Locale("eo") to "esperanto",
Locale("fr") to "french",
Locale("it") to "italian",
Locale("hi") to "hindi",
Locale("hu") to "hungarian",
Locale("pl") to "polish",
Locale("pt") to "portuguese",
Locale("vi") to "vietnamese",
Locale("tr") to "turkish",
Locale("ru") to "russian",
Locale("uk") to "ukrainian",
Locale("ar") to "arabic",
Locale.KOREAN to "korean",
Locale.CHINESE to "chinese",
Locale.JAPANESE to "japanese",
)
private fun Locale?.getSiteLang(): String {
return when (this) {
null -> "all"
else -> localeMap[this] ?: "all"
}
}
override suspend fun getAvailableLocales(): Set<Locale> {
return localeMap.keys
}
override suspend fun getAvailableTags(): Set<MangaTag> { override suspend fun getAvailableTags(): Set<MangaTag> {
return coroutineScope { return coroutineScope {
('a'..'z').map { alphabet -> ('a'..'z').map { alphabet ->
@ -68,19 +107,25 @@ class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSo
if (filter.tags.isEmpty()) { if (filter.tags.isEmpty()) {
when (filter.sortOrder) { when (filter.sortOrder) {
SortOrder.POPULARITY -> { SortOrder.POPULARITY -> {
getGalleryIDsFromNozomi("popular", "today", "all", offset.nextOffsetRange()) getGalleryIDsFromNozomi("popular", "today", filter.locale.getSiteLang(), offset.nextOffsetRange())
} }
else -> { else -> {
getGalleryIDsFromNozomi(null, "index", "all", offset.nextOffsetRange()) getGalleryIDsFromNozomi(null, "index", filter.locale.getSiteLang(), offset.nextOffsetRange())
} }
} }
} else { } else {
if (offset == 0) { if (offset == 0) {
cachedSearchIds = hitomiSearch( val query = filter.tags.joinToString(" ") { it.key }.let {
filter.tags.joinToString(" ") { it.key }, val lang = filter.locale.getSiteLang()
filter.sortOrder == SortOrder.POPULARITY if (lang != "all") {
).toList() "$it language:$lang"
} else {
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))
} }
@ -88,10 +133,7 @@ class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSo
is MangaListFilter.Search -> { is MangaListFilter.Search -> {
if (offset == 0) { if (offset == 0) {
cachedSearchIds = hitomiSearch( cachedSearchIds = hitomiSearch(filter.query, filter.sortOrder == SortOrder.POPULARITY).toList()
filter.query,
filter.sortOrder == SortOrder.POPULARITY
).toList()
} }
cachedSearchIds.subList(offset, min(offset+25, cachedSearchIds.size)) cachedSearchIds.subList(offset, min(offset+25, cachedSearchIds.size))
} }

Loading…
Cancel
Save