From 711bbd75c416f7073bd567203a76c0f32bb191e9 Mon Sep 17 00:00:00 2001 From: Pavka Date: Sat, 13 Apr 2019 18:12:51 +0300 Subject: [PATCH] Feature/mangaonlinebiz filters and self manga fix date (#1018) --- src/ru/mangaonlinebiz/build.gradle | 2 +- .../ru/mangaonlinebiz/Mangaonlinebiz.kt | 79 ++++++++++++++++++- src/ru/selfmanga/build.gradle | 2 +- .../extension/ru/selfmanga/Selfmanga.kt | 7 +- 4 files changed, 86 insertions(+), 4 deletions(-) diff --git a/src/ru/mangaonlinebiz/build.gradle b/src/ru/mangaonlinebiz/build.gradle index a828bbc4f..df5f84835 100644 --- a/src/ru/mangaonlinebiz/build.gradle +++ b/src/ru/mangaonlinebiz/build.gradle @@ -5,7 +5,7 @@ ext { appName = 'Tachiyomi: Mangaonlinebiz' pkgNameSuffix = 'ru.mangaonlinebiz' extClass = '.MangaOnlineBiz' - extVersionCode = 3 + extVersionCode = 4 libVersion = '1.2' } diff --git a/src/ru/mangaonlinebiz/src/eu/kanade/tachiyomi/extension/ru/mangaonlinebiz/Mangaonlinebiz.kt b/src/ru/mangaonlinebiz/src/eu/kanade/tachiyomi/extension/ru/mangaonlinebiz/Mangaonlinebiz.kt index bbcc1198d..a8a459019 100644 --- a/src/ru/mangaonlinebiz/src/eu/kanade/tachiyomi/extension/ru/mangaonlinebiz/Mangaonlinebiz.kt +++ b/src/ru/mangaonlinebiz/src/eu/kanade/tachiyomi/extension/ru/mangaonlinebiz/Mangaonlinebiz.kt @@ -26,12 +26,28 @@ class MangaOnlineBiz : ParsedHttpSource() { GET("$baseUrl/genre/all/page/$page", headers) override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - return GET("$baseUrl/search-ajax/?query=$query", headers) + val url = if (query.isNotBlank()) { + "$baseUrl/search-ajax/?query=$query" + } else { + var ret = String() + (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> + when (filter) { + is GenreList -> { + ret = "$baseUrl/genre/${filter.values[filter.state].id}" + } + } + } + ret + } + return GET(url, headers) } override fun popularMangaSelector() = "div.genres a.genre" override fun searchMangaParse(response: Response): MangasPage { + if (!response.request().url().toString().contains("search-ajax")) { + return popularMangaParse(response) + } val jsonData = response.body()!!.string() val json = JsonParser().parse(jsonData).asJsonObject val results = json.getAsJsonArray("results") @@ -122,6 +138,67 @@ class MangaOnlineBiz : ParsedHttpSource() { return resPages } + private class Genre(name: String, val id: String) : Filter.CheckBox(name) { + override fun toString(): String { + return name + } + } + private class GenreList(genres: Array) : Filter.Select("Genres", genres, 0) + override fun getFilterList() = FilterList( + GenreList(getGenreList()) + ) + /* [...document.querySelectorAll(".categories .item")] + * .map(el => `Genre("${el.textContent.trim()}", "${el.getAttribute('href')}")`).join(',\n') + * on https://manga-online.biz/genre/all/ + */ + private fun getGenreList() = arrayOf( + Genre("Все", "all"), + Genre("боевик", "boevik"), + Genre("боевые искусства", "boevye_iskusstva"), + Genre("вампиры", "vampiry"), + Genre("гарем", "garem"), + Genre("гендерная интрига", "gendernaya_intriga"), + Genre("героическое фэнтези", "geroicheskoe_fehntezi"), + Genre("детектив", "detektiv"), + Genre("дзёсэй", "dzyosehj"), + Genre("додзинси", "dodzinsi"), + Genre("драма", "drama"), + Genre("игра", "igra"), + Genre("история", "istoriya"), + Genre("меха", "mekha"), + Genre("мистика", "mistika"), + Genre("научная фантастика", "nauchnaya_fantastika"), + Genre("повседневность", "povsednevnost"), + Genre("постапокалиптика", "postapokaliptika"), + Genre("приключения", "priklyucheniya"), + Genre("психология", "psihologiya"), + Genre("романтика", "romantika"), + Genre("самурайский боевик", "samurajskij_boevik"), + Genre("сверхъестественное", "sverhestestvennoe"), + Genre("сёдзё", "syodzyo"), + Genre("сёдзё-ай", "syodzyo-aj"), + Genre("сёнэн", "syonen"), + Genre("спорт", "sport"), + Genre("сэйнэн", "sejnen"), + Genre("трагедия", "tragediya"), + Genre("триллер", "triller"), + Genre("ужасы", "uzhasy"), + Genre("фантастика", "fantastika"), + Genre("фэнтези", "fentezi"), + Genre("школа", "shkola"), + Genre("этти", "etti"), + Genre("юри", "yuri"), + Genre("военный", "voennyj"), + Genre("жосей", "zhosej"), + Genre("магия", "magiya"), + Genre("полиция", "policiya"), + Genre("смена пола", "smena-pola"), + Genre("супер сила", "super-sila"), + Genre("эччи", "echchi"), + Genre("яой", "yaoj"), + Genre("сёнэн-ай", "syonen-aj") + ) + override fun imageUrlParse(document: Document) = throw Exception("Not Used") override fun searchMangaSelector(): String = throw Exception("Not Used") diff --git a/src/ru/selfmanga/build.gradle b/src/ru/selfmanga/build.gradle index bb5210c2b..c6a2eb1e7 100644 --- a/src/ru/selfmanga/build.gradle +++ b/src/ru/selfmanga/build.gradle @@ -5,7 +5,7 @@ ext { appName = 'Tachiyomi: Selfmanga' pkgNameSuffix = 'ru.selfmanga' extClass = '.Selfmanga' - extVersionCode = 3 + extVersionCode = 4 libVersion = '1.2' } diff --git a/src/ru/selfmanga/src/eu/kanade/tachiyomi/extension/ru/selfmanga/Selfmanga.kt b/src/ru/selfmanga/src/eu/kanade/tachiyomi/extension/ru/selfmanga/Selfmanga.kt index fc1de8c9c..3d471d7d9 100644 --- a/src/ru/selfmanga/src/eu/kanade/tachiyomi/extension/ru/selfmanga/Selfmanga.kt +++ b/src/ru/selfmanga/src/eu/kanade/tachiyomi/extension/ru/selfmanga/Selfmanga.kt @@ -9,6 +9,7 @@ import okhttp3.Request import okhttp3.Response import org.jsoup.nodes.Document import org.jsoup.nodes.Element +import java.text.ParseException import java.text.SimpleDateFormat import java.util.* import java.util.regex.Pattern @@ -112,7 +113,11 @@ class Selfmanga : ParsedHttpSource() { chapter.name = urlText } chapter.date_upload = element.select("td.hidden-xxs").last()?.text()?.let { - SimpleDateFormat("dd/MM/yy", Locale.US).parse(it).time + try { + SimpleDateFormat("dd/MM/yy", Locale.US).parse(it).time + } catch (e: ParseException) { + SimpleDateFormat("dd.MM.yy", Locale.US).parse(it).time + } } ?: 0 return chapter }