hitomi: locales

This commit is contained in:
AwkwardPeak7
2023-12-23 20:29:16 +05:00
parent a40a8d329a
commit b61c5e8f12

View File

@@ -30,6 +30,45 @@ class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSo
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> {
return coroutineScope {
('a'..'z').map { alphabet ->
@@ -68,19 +107,25 @@ class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSo
if (filter.tags.isEmpty()) {
when (filter.sortOrder) {
SortOrder.POPULARITY -> {
getGalleryIDsFromNozomi("popular", "today", "all", offset.nextOffsetRange())
getGalleryIDsFromNozomi("popular", "today", filter.locale.getSiteLang(), offset.nextOffsetRange())
}
else -> {
getGalleryIDsFromNozomi(null, "index", "all", offset.nextOffsetRange())
getGalleryIDsFromNozomi(null, "index", filter.locale.getSiteLang(), offset.nextOffsetRange())
}
}
} else {
if (offset == 0) {
cachedSearchIds = hitomiSearch(
filter.tags.joinToString(" ") { it.key },
filter.sortOrder == SortOrder.POPULARITY
).toList()
val query = filter.tags.joinToString(" ") { it.key }.let {
val lang = filter.locale.getSiteLang()
if (lang != "all") {
"$it language:$lang"
} else {
it
}
}
cachedSearchIds = hitomiSearch(query,filter.sortOrder == SortOrder.POPULARITY).toList()
}
cachedSearchIds.subList(offset, min(offset+25, cachedSearchIds.size))
}
@@ -88,10 +133,7 @@ class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSo
is MangaListFilter.Search -> {
if (offset == 0) {
cachedSearchIds = hitomiSearch(
filter.query,
filter.sortOrder == SortOrder.POPULARITY
).toList()
cachedSearchIds = hitomiSearch(filter.query, filter.sortOrder == SortOrder.POPULARITY).toList()
}
cachedSearchIds.subList(offset, min(offset+25, cachedSearchIds.size))
}