From b61c5e8f12319ac2bfbd9cd0222a35d0cd4d5eb9 Mon Sep 17 00:00:00 2001 From: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com> Date: Sat, 23 Dec 2023 20:29:16 +0500 Subject: [PATCH] hitomi: locales --- .../parsers/site/all/HitomiLaParser.kt | 62 ++++++++++++++++--- 1 file changed, 52 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HitomiLaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HitomiLaParser.kt index 2c16566d..5ecee0ce 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HitomiLaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HitomiLaParser.kt @@ -30,6 +30,45 @@ class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSo SortOrder.POPULARITY, ) + private val localeMap: Map = 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 { + return localeMap.keys + } + override suspend fun getAvailableTags(): Set { 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)) }