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),