diff --git a/multisrc/overrides/grouple/allhentai/src/AllHentai.kt b/multisrc/overrides/grouple/allhentai/src/AllHentai.kt index e9a7e007b..4084b14f1 100644 --- a/multisrc/overrides/grouple/allhentai/src/AllHentai.kt +++ b/multisrc/overrides/grouple/allhentai/src/AllHentai.kt @@ -12,7 +12,7 @@ class AllHentai : GroupLe("AllHentai", "http://23.allhen.online", "ru") { override val id: Long = 1809051393403180443 override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/search/advanced".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/search/advanced?offset=${70 * (page - 1)}".toHttpUrlOrNull()!!.newBuilder() (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> when (filter) { is GenreList -> filter.state.forEach { genre -> @@ -50,7 +50,7 @@ class AllHentai : GroupLe("AllHentai", "http://23.allhen.online", "ru") { if (query.isNotEmpty()) { url.addQueryParameter("q", query) } - return if (url.toString().contains("?")) + return if (url.toString().contains("&")) GET(url.toString().replace("=%3D", "="), headers) else popularMangaRequest(page) } diff --git a/multisrc/overrides/grouple/mintmanga/src/MintManga.kt b/multisrc/overrides/grouple/mintmanga/src/MintManga.kt index 8eeb71a25..4862a2674 100644 --- a/multisrc/overrides/grouple/mintmanga/src/MintManga.kt +++ b/multisrc/overrides/grouple/mintmanga/src/MintManga.kt @@ -12,7 +12,7 @@ class MintManga : GroupLe("MintManga", "https://mintmanga.live", "ru") { override val id: Long = 6 override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/search/advanced".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/search/advanced?offset=${70 * (page - 1)}".toHttpUrlOrNull()!!.newBuilder() (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> when (filter) { is GenreList -> filter.state.forEach { genre -> @@ -53,7 +53,7 @@ class MintManga : GroupLe("MintManga", "https://mintmanga.live", "ru") { if (query.isNotEmpty()) { url.addQueryParameter("q", query) } - return if (url.toString().contains("?")) + return if (url.toString().contains("&")) GET(url.toString().replace("=%3D", "="), headers) else popularMangaRequest(page) } @@ -85,10 +85,13 @@ class MintManga : GroupLe("MintManga", "https://mintmanga.live", "ru") { Genre("Для взрослых", "s_mature"), Genre("Завершенная", "s_completed"), Genre("Переведено", "s_translated"), + Genre("Заброшен перевод", "s_abandoned_popular"), Genre("Длинная", "s_many_chapters"), Genre("Ожидает загрузки", "s_wait_upload"), + Genre("Белые жанры", "s_not_pessimized") ) private fun getMore() = listOf( + Genre("Анонс", "el_6641"), Genre("В цвете", "el_4614"), Genre("Веб", "el_1355"), Genre("Выпуск приостановлен", "el_5232"), @@ -103,28 +106,27 @@ class MintManga : GroupLe("MintManga", "https://mintmanga.live", "ru") { ) private fun getCategoryList() = listOf( + Genre("OEL-манга", "el_6637"), + Genre("Додзинси", "el_1332"), + Genre("Арт", "el_2220"), Genre("Ёнкома", "el_2741"), - Genre("Комикс западный", "el_1903"), - Genre("Комикс русский", "el_2173"), + Genre("Комикс", "el_1903"), Genre("Манхва", "el_1873"), Genre("Маньхуа", "el_1875"), Genre("Ранобэ", "el_5688"), ) private fun getGenreList() = listOf( - Genre("арт", "el_2220"), - Genre("бара", "el_1353"), Genre("боевик", "el_1346"), Genre("боевые искусства", "el_1334"), - Genre("вампиры", "el_1339"), Genre("гарем", "el_1333"), Genre("гендерная интрига", "el_1347"), Genre("героическое фэнтези", "el_1337"), Genre("детектив", "el_1343"), Genre("дзёсэй", "el_1349"), - Genre("додзинси", "el_1332"), Genre("драма", "el_1310"), Genre("игра", "el_5229"), + Genre("исэкай", "el_6420"), Genre("история", "el_1311"), Genre("киберпанк", "el_1351"), Genre("комедия", "el_1328"), @@ -144,9 +146,11 @@ class MintManga : GroupLe("MintManga", "https://mintmanga.live", "ru") { Genre("сёнэн-ай", "el_1330"), Genre("спорт", "el_1321"), Genre("сэйнэн", "el_1329"), + Genre("сянься", "el_6631"), Genre("трагедия", "el_1344"), Genre("триллер", "el_1341"), Genre("ужасы", "el_1317"), + Genre("уся", "el_6632"), Genre("фэнтези", "el_1323"), Genre("школа", "el_1319"), Genre("эротика", "el_1340"), diff --git a/multisrc/overrides/grouple/readmanga/src/ReadManga.kt b/multisrc/overrides/grouple/readmanga/src/ReadManga.kt index 911b102f3..db61b1247 100644 --- a/multisrc/overrides/grouple/readmanga/src/ReadManga.kt +++ b/multisrc/overrides/grouple/readmanga/src/ReadManga.kt @@ -12,7 +12,7 @@ class ReadManga : GroupLe("ReadManga", "https://readmanga.live", "ru") { override val id: Long = 5 override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/search/advanced".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/search/advanced?offset=${70 * (page - 1)}".toHttpUrlOrNull()!!.newBuilder() (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> when (filter) { is GenreList -> filter.state.forEach { genre -> @@ -53,7 +53,7 @@ class ReadManga : GroupLe("ReadManga", "https://readmanga.live", "ru") { if (query.isNotEmpty()) { url.addQueryParameter("q", query) } - return if (url.toString().contains("?")) + return if (url.toString().contains("&")) GET(url.toString().replace("=%3D", "="), headers) else popularMangaRequest(page) } @@ -86,14 +86,16 @@ class ReadManga : GroupLe("ReadManga", "https://readmanga.live", "ru") { Genre("Для взрослых", "s_mature"), Genre("Завершенная", "s_completed"), Genre("Переведено", "s_translated"), + Genre("Заброшен перевод", "s_abandoned_popular"), Genre("Длинная", "s_many_chapters"), Genre("Ожидает загрузки", "s_wait_upload"), - Genre("Продается", "s_sale") + Genre("Продается", "s_sale"), + Genre("Белые жанры", "s_not_pessimized") ) private fun getMore() = listOf( + Genre("Анонс", "el_9578"), Genre("В цвете", "el_7290"), Genre("Веб", "el_2160"), - Genre("Выпуск приостановлен", "el_8033"), Genre("Сборник", "el_2157") ) @@ -104,26 +106,27 @@ class ReadManga : GroupLe("ReadManga", "https://readmanga.live", "ru") { ) private fun getCategoryList() = listOf( + Genre("OEL-манга", "el_9577"), + Genre("Додзинси", "el_2141"), + Genre("Арт", "el_5685"), Genre("Ёнкома", "el_2161"), - Genre("Комикс западный", "el_3515"), + Genre("Комикс", "el_3515"), Genre("Манхва", "el_3001"), Genre("Маньхуа", "el_3002"), Genre("Ранобэ", "el_8575"), ) private fun getGenreList() = listOf( - Genre("арт", "el_5685"), Genre("боевик", "el_2155"), Genre("боевые искусства", "el_2143"), - Genre("вампиры", "el_2148"), Genre("гарем", "el_2142"), Genre("гендерная интрига", "el_2156"), Genre("героическое фэнтези", "el_2146"), Genre("детектив", "el_2152"), Genre("дзёсэй", "el_2158"), - Genre("додзинси", "el_2141"), Genre("драма", "el_2118"), Genre("игра", "el_2154"), + Genre("исэкай", "el_9450"), Genre("история", "el_2119"), Genre("киберпанк", "el_8032"), Genre("кодомо", "el_2137"), @@ -144,12 +147,13 @@ class ReadManga : GroupLe("ReadManga", "https://readmanga.live", "ru") { Genre("сёнэн-ай", "el_2139"), Genre("спорт", "el_2129"), Genre("сэйнэн", "el_2138"), + Genre("сянься", "el_9561"), Genre("трагедия", "el_2153"), Genre("триллер", "el_2150"), Genre("ужасы", "el_2125"), + Genre("уся", "el_9560"), Genre("фэнтези", "el_2131"), Genre("школа", "el_2127"), - Genre("этти", "el_2149"), - Genre("юри", "el_2123") + Genre("этти", "el_2149") ) } diff --git a/multisrc/overrides/grouple/rumix/src/RuMIX.kt b/multisrc/overrides/grouple/rumix/src/RuMIX.kt index 9ab06a1e6..0224e4616 100644 --- a/multisrc/overrides/grouple/rumix/src/RuMIX.kt +++ b/multisrc/overrides/grouple/rumix/src/RuMIX.kt @@ -9,11 +9,11 @@ import okhttp3.Request class RuMIX : GroupLe("RuMIX", "https://rumix.me", "ru") { override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/search/advanced".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/search/advanced?offset=${70 * (page - 1)}".toHttpUrlOrNull()!!.newBuilder() if (query.isNotEmpty()) { url.addQueryParameter("q", query) } - return if (url.toString().contains("?")) + return if (url.toString().contains("&")) GET(url.toString().replace("=%3D", "="), headers) else popularMangaRequest(page) } diff --git a/multisrc/overrides/grouple/selfmanga/src/SelfManga.kt b/multisrc/overrides/grouple/selfmanga/src/SelfManga.kt index 762a2eb44..7cb1d361d 100644 --- a/multisrc/overrides/grouple/selfmanga/src/SelfManga.kt +++ b/multisrc/overrides/grouple/selfmanga/src/SelfManga.kt @@ -12,7 +12,7 @@ class SelfManga : GroupLe("SelfManga", "https://selfmanga.live", "ru") { override val id: Long = 5227602742162454547 override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/search/advanced".toHttpUrlOrNull()!!.newBuilder() + val url = "$baseUrl/search/advanced?offset=${70 * (page - 1)}".toHttpUrlOrNull()!!.newBuilder() (if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> when (filter) { is GenreList -> filter.state.forEach { genre -> @@ -31,7 +31,7 @@ class SelfManga : GroupLe("SelfManga", "https://selfmanga.live", "ru") { if (query.isNotEmpty()) { url.addQueryParameter("q", query) } - return if (url.toString().contains("?")) + return if (url.toString().contains("&")) GET(url.toString().replace("=%3D", "="), headers) else popularMangaRequest(page) } @@ -56,7 +56,6 @@ class SelfManga : GroupLe("SelfManga", "https://selfmanga.live", "ru") { private fun getGenreList() = listOf( Genre("боевик", "el_2155"), Genre("боевые искусства", "el_2143"), - Genre("вампиры", "el_2148"), Genre("гарем", "el_2142"), Genre("гендерная интрига", "el_2156"), Genre("героическое фэнтези", "el_2146"), diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt index 2fa7672e3..46d3f68b6 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt @@ -90,7 +90,6 @@ abstract class GroupLe( override fun searchMangaFromElement(element: Element): SManga = popularMangaFromElement(element) - // max 200 results (exception OrderBy) override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() override fun mangaDetailsParse(document: Document): SManga { @@ -120,9 +119,13 @@ abstract class GroupLe( } val rawAgeValue = infoElement.select(".elem_limitation .element-link").first()?.text() val rawAgeStop = when (rawAgeValue) { - "PG" -> "16+" - "PG-13" -> "12+" - else -> "0+" + "NC-17" -> "18+, " + "R18+" -> "18+, " + "R" -> "16+, " + "G" -> "16+, " + "PG" -> "16+, " + "PG-13" -> "12+, " + else -> "" } val manga = SManga.create() var authorElement = infoElement.select("span.elem_author").first()?.text() @@ -132,25 +135,28 @@ abstract class GroupLe( manga.title = document.select("h1.names .name").text() manga.author = authorElement manga.artist = infoElement.select("span.elem_illustrator").first()?.text() - manga.genre = category + ", " + rawAgeStop + ", " + infoElement.select("span.elem_genre").text().split(",").joinToString { it.trim() } + manga.genre = category + ", " + rawAgeStop + infoElement.select("span.elem_genre").text().split(",").joinToString { it.trim() } var altName = "" if (infoElement.select(".another-names").isNotEmpty()) { altName = "Альтернативные названия:\n" + infoElement.select(".another-names").text() + "\n\n" } manga.description = ratingStar + " " + ratingValue + "[ⓘ" + ratingValueOver + "]" + " (голосов: " + ratingVotes + ")\n" + altName + document.select("div#tab-description .manga-description").text() - manga.status = parseStatus(infoElement.html()) + manga.status = when { + infoElement.html().contains("Запрещена публикация произведения по копирайту") || infoElement.html().contains("ЗАПРЕЩЕНА К ПУБЛИКАЦИИ НА ТЕРРИТОРИИ РФ!") -> SManga.LICENSED + infoElement.html().contains("Сингл") -> SManga.COMPLETED + else -> + when (infoElement.select("p:contains(Перевод:) span").first()?.text()) { + "продолжается" -> SManga.ONGOING + "начат" -> SManga.ONGOING + "переведено" -> SManga.COMPLETED + "приостановлен" -> SManga.ON_HIATUS + else -> SManga.UNKNOWN + } + } manga.thumbnail_url = infoElement.select("img").attr("data-full") return manga } - private fun parseStatus(element: String): Int = when { - element.contains("Запрещена публикация произведения по копирайту") || element.contains("ЗАПРЕЩЕНА К ПУБЛИКАЦИИ НА ТЕРРИТОРИИ РФ!") -> SManga.LICENSED - element.contains("Перевод: продолжается") -> SManga.ONGOING - element.contains("Сингл") || element.contains("Перевод: завер") || element.contains("Перевод: переведено") -> SManga.COMPLETED - element.contains("Перевод: приостановлен") -> SManga.ON_HIATUS - else -> SManga.UNKNOWN - } - override fun fetchChapterList(manga: SManga): Observable> { return if (manga.status != SManga.LICENSED) { client.newCall(chapterListRequest(manga)) diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLeGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLeGenerator.kt index e4f9b6516..4aa1f6531 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLeGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLeGenerator.kt @@ -9,7 +9,7 @@ class GroupLeGenerator : ThemeSourceGenerator { override val themeClass = "GroupLe" - override val baseVersionCode: Int = 4 + override val baseVersionCode: Int = 5 override val sources = listOf( SingleLang("ReadManga", "https://readmanga.live", "ru", overrideVersionCode = 46),