fix search/tags, add missing languages (#685)

[mangadex] Fix search/tags, add missing languages
This commit is contained in:
paronos 2018-12-28 23:28:44 +01:00 committed by Carlos
parent 4d6ffb24c8
commit 7bf5ecaf4c
3 changed files with 67 additions and 22 deletions

View File

@ -5,7 +5,7 @@ ext {
appName = 'Tachiyomi: MangaDex'
pkgNameSuffix = 'all.mangadex'
extClass = '.MangadexFactory'
extVersionCode = 43
extVersionCode = 44
libVersion = '1.2'
}

View File

@ -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<String>()
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<Tag>) : Filter.Group<Tag>("Genres", genres)
private class R18 : Filter.Select<String>("R18+", arrayOf("Default", "Show all", "Show only", "Show none"))
private class Demographic : Filter.Select<String>("Demographic", arrayOf("All", "Shounen", "Shoujo", "Seinen", "Josei"))
private class PublicationStatus : Filter.Select<String>("Publication status", arrayOf("All", "Ongoing", "Completed", "Cancelled", "Hiatus"))
private class ThemeList(themes: List<Tag>) : Filter.Group<Tag>("Themes", themes)
private class TagInclusionMode : Filter.Select<String>("Tag inclusion mode", arrayOf("All (and)", "Any (or)"), 0)
private class TagExclusionMode : Filter.Select<String>("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()

View File

@ -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()
)
MangaDexThai(),
MangaDexBengali(),
MangaDexBurmese(),
MangaDexCzech(),
MangaDexDanish(),
MangaDexFinnish(),
MangaDexGreek(),
MangaDexJapanese(),
MangaDexKorean(),
MangaDexLithuanian(),
MangaDexMalay(),
MangaDexMongolian(),
MangaDexPersian(),
MangaDexRomanian(),
MangaDexSerboCroatian(),
MangaDexUkrainian()
)