From 7bf5ecaf4cd6d4d9db7bc72e81a9e3a0657910b7 Mon Sep 17 00:00:00 2001 From: paronos Date: Fri, 28 Dec 2018 23:28:44 +0100 Subject: [PATCH] fix search/tags, add missing languages (#685) [mangadex] Fix search/tags, add missing languages --- src/all/mangadex/build.gradle | 2 +- .../extension/all/mangadex/Mangadex.kt | 37 +++++++++----- .../all/mangadex/MangadexLanguages.kt | 50 +++++++++++++++---- 3 files changed, 67 insertions(+), 22 deletions(-) diff --git a/src/all/mangadex/build.gradle b/src/all/mangadex/build.gradle index 3ab2c90b4..cea2c0e4f 100644 --- a/src/all/mangadex/build.gradle +++ b/src/all/mangadex/build.gradle @@ -5,7 +5,7 @@ ext { appName = 'Tachiyomi: MangaDex' pkgNameSuffix = 'all.mangadex' extClass = '.MangadexFactory' - extVersionCode = 43 + extVersionCode = 44 libVersion = '1.2' } diff --git a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/Mangadex.kt b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/Mangadex.kt index 3903252a4..35c626b00 100644 --- a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/Mangadex.kt +++ b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/Mangadex.kt @@ -159,15 +159,26 @@ open class Mangadex(override val lang: String, private val internalLang: String, is TextField -> url.addQueryParameter(filter.key, filter.state) is Demographic -> { if (filter.state != 0) { - url.addQueryParameter("demo", filter.state.toString()) + url.addQueryParameter("demo_id", filter.state.toString()) + } + } + is PublicationStatus -> { + if (filter.state != 0) { + url.addQueryParameter("status_id", filter.state.toString()) } } is OriginalLanguage -> { if (filter.state != 0) { val number: String = SOURCE_LANG_LIST.first { it -> it.first == filter.values[filter.state] }.second - url.addQueryParameter("source_lang", number) + url.addQueryParameter("lang_id", number) } } + is TagInclusionMode -> { + url.addQueryParameter("tag_mode_inc", arrayOf("all", "any")[filter.state]) + } + is TagExclusionMode -> { + url.addQueryParameter("tag_mode_exc", arrayOf("all", "any")[filter.state]) + } is ContentList -> { filter.state.forEach { content -> if (content.isExcluded()) { @@ -284,13 +295,8 @@ open class Mangadex(override val lang: String, private val internalLang: String, manga.status = parseStatus(status) } - val genres = mutableListOf() - val genreList = getGenreList() - mangaJson.get("genres").asJsonArray.forEach { id -> - genreList.find { it -> it.id == id.string }?.let { genre -> - genres.add(genre.name) - } - } + val genres = (if (mangaJson.get("hentai").int == 1) listOf("Hentai") else listOf()) + + mangaJson.get("genres").asJsonArray.mapNotNull { GENRES.get(it.toString()) } manga.genre = genres.joinToString(", ") return manga @@ -467,7 +473,10 @@ open class Mangadex(override val lang: String, private val internalLang: String, private class GenreList(genres: List) : Filter.Group("Genres", genres) private class R18 : Filter.Select("R18+", arrayOf("Default", "Show all", "Show only", "Show none")) private class Demographic : Filter.Select("Demographic", arrayOf("All", "Shounen", "Shoujo", "Seinen", "Josei")) + private class PublicationStatus : Filter.Select("Publication status", arrayOf("All", "Ongoing", "Completed", "Cancelled", "Hiatus")) private class ThemeList(themes: List) : Filter.Group("Themes", themes) + private class TagInclusionMode : Filter.Select("Tag inclusion mode", arrayOf("All (and)", "Any (or)"), 0) + private class TagExclusionMode : Filter.Select("Tag exclusion mode", arrayOf("All (and)", "Any (or)"), 1) class SortFilter : Filter.Sort("Sort", sortables.map { it.first }.toTypedArray(), @@ -481,11 +490,14 @@ open class Mangadex(override val lang: String, private val internalLang: String, R18(), SortFilter(), Demographic(), + PublicationStatus(), OriginalLanguage(), ContentList(getContentList()), FormatList(getFormatList()), GenreList(getGenreList()), - ThemeList(getThemeList()) + ThemeList(getThemeList()), + TagInclusionMode(), + TagExclusionMode() ) private fun getContentList() = listOf( @@ -514,12 +526,10 @@ open class Mangadex(override val lang: String, private val internalLang: String, Tag("2", "Action"), Tag("3", "Adventure"), Tag("5", "Comedy"), - Tag("6", "Cooking"), Tag("8", "Drama"), Tag("10", "Fantasy"), Tag("13", "Historical"), Tag("14", "Horror"), - Tag("15", "Josei"), Tag("17", "Mecha"), Tag("18", "Medical"), Tag("20", "Mystery"), @@ -543,6 +553,8 @@ open class Mangadex(override val lang: String, private val internalLang: String, ).sortedWith(compareBy { it.name }) private fun getThemeList() = listOf( + Tag("6", "Cooking"), + Tag("11", "Gyaru"), Tag("12", "Harem"), Tag("16", "Martial Arts"), Tag("19", "Music"), @@ -578,6 +590,7 @@ open class Mangadex(override val lang: String, private val internalLang: String, Tag("83", "Incest") ).sortedWith(compareBy { it.name }) + private val GENRES = (getContentList() + getFormatList() + getGenreList() + getThemeList()).map { it.id to it.name }.toMap() companion object { private val WHITESPACE_REGEX = "\\s".toRegex() diff --git a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangadexLanguages.kt b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangadexLanguages.kt index ce11fb225..22f5ad4e0 100644 --- a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangadexLanguages.kt +++ b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangadexLanguages.kt @@ -11,12 +11,13 @@ class MangaDexGerman : Mangadex("de", "de", 8) class MangaDexFrench : Mangadex("fr", "fr", 10) class MangaDexVietnamese : Mangadex("vi", "vn", 12) class MangaDexSpanishSpain : Mangadex("es", "es", 15) -class MangaDexPortuguese : Mangadex("pt", "br", 16) +class MangaDexSpanishLTAM : Mangadex("es-419", "mx", 29) +class MangaDexCatalan : Mangadex("ca", "ct", 33) +class MangaDexPortuguesePortugal : Mangadex("pt", "pt", 17) +class MangaDexPortugueseBrazil : Mangadex("pt-BR", "br", 16) class MangaDexSwedish : Mangadex("sv", "se", 18) class MangaDexTurkish : Mangadex("tr", "tr", 26) class MangaDexIndonesian : Mangadex("id", "id", 27) -class MangaDexSpanishLTAM : Mangadex("es-419", "mx", 29) -class MangaDexCatalan : Mangadex("ca", "ct", 33) class MangaDexHungarian : Mangadex("hu", "hu", 9) class MangaDexBulgarian : Mangadex("bg", "bg", 14) class MangaDexFilipino : Mangadex("fil", "ph", 34) @@ -24,7 +25,22 @@ class MangaDexDutch : Mangadex("nl", "nl", 5) class MangaDexArabic : Mangadex("ar", "sa", 19) class MangaDexChineseSimp : Mangadex("zh-Hans", "cn", 21) class MangaDexChineseTrad : Mangadex("zh-Hant", "hk", 35) -class MangaDexThai: Mangadex("th", "th", 32) +class MangaDexThai : Mangadex("th", "th", 32) +class MangaDexBengali : Mangadex("bn", "bd", 22) +class MangaDexBurmese : Mangadex("my", "mm", 37) +class MangaDexCzech : Mangadex("cs", "cz", 24) +class MangaDexDanish : Mangadex("da", "dk", 20) +class MangaDexFinnish : Mangadex("fi", "fi", 11) +class MangaDexGreek : Mangadex("el", "gr", 13) +class MangaDexJapanese : Mangadex("ja", "jp", 2) +class MangaDexKorean : Mangadex("ko", "kr", 28) +class MangaDexLithuanian : Mangadex("lt", "lt", 38) +class MangaDexMalay : Mangadex("ms", "my", 31) +class MangaDexMongolian : Mangadex("mn", "mn", 25) +class MangaDexPersian : Mangadex("fa", "ir", 30) +class MangaDexRomanian : Mangadex("ro", "ro", 23) +class MangaDexSerboCroatian : Mangadex("sh", "rs", 4) +class MangaDexUkrainian : Mangadex("uk", "ua", 36) fun getAllMangaDexLanguages() = listOf( MangaDexEnglish(), @@ -35,12 +51,13 @@ fun getAllMangaDexLanguages() = listOf( MangaDexFrench(), MangaDexVietnamese(), MangaDexSpanishSpain(), - MangaDexPortuguese(), + MangaDexSpanishLTAM(), + MangaDexCatalan(), + MangaDexPortuguesePortugal(), + MangaDexPortugueseBrazil(), MangaDexSwedish(), MangaDexTurkish(), MangaDexIndonesian(), - MangaDexSpanishLTAM(), - MangaDexCatalan(), MangaDexHungarian(), MangaDexBulgarian(), MangaDexFilipino(), @@ -48,5 +65,20 @@ fun getAllMangaDexLanguages() = listOf( MangaDexArabic(), MangaDexChineseSimp(), MangaDexChineseTrad(), - MangaDexThai() -) \ No newline at end of file + MangaDexThai(), + MangaDexBengali(), + MangaDexBurmese(), + MangaDexCzech(), + MangaDexDanish(), + MangaDexFinnish(), + MangaDexGreek(), + MangaDexJapanese(), + MangaDexKorean(), + MangaDexLithuanian(), + MangaDexMalay(), + MangaDexMongolian(), + MangaDexPersian(), + MangaDexRomanian(), + MangaDexSerboCroatian(), + MangaDexUkrainian() +)