From 1b4ccdf0d81a0aa7273117962b1530b4ff9ff314 Mon Sep 17 00:00:00 2001 From: Eshlender <35057681+e-shl@users.noreply.github.com> Date: Fri, 24 Mar 2023 07:36:49 +0500 Subject: [PATCH] [RU]Remanga don't skip paid chapter (#15795) * [RU]Remanga don't skip paid chapter * all paid * summary is better * summary is better 2 * update filters --- src/ru/remanga/build.gradle | 2 +- .../tachiyomi/extension/ru/remanga/Remanga.kt | 41 +++++++++++-------- .../tachiyomi/extension/ru/remanga/dto/Dto.kt | 2 + 3 files changed, 28 insertions(+), 17 deletions(-) diff --git a/src/ru/remanga/build.gradle b/src/ru/remanga/build.gradle index b87b78ac1..62e084ece 100644 --- a/src/ru/remanga/build.gradle +++ b/src/ru/remanga/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'Remanga' pkgNameSuffix = 'ru.remanga' extClass = '.Remanga' - extVersionCode = 65 + extVersionCode = 66 } dependencies { diff --git a/src/ru/remanga/src/eu/kanade/tachiyomi/extension/ru/remanga/Remanga.kt b/src/ru/remanga/src/eu/kanade/tachiyomi/extension/ru/remanga/Remanga.kt index e2c56ec2c..9ebff05e3 100644 --- a/src/ru/remanga/src/eu/kanade/tachiyomi/extension/ru/remanga/Remanga.kt +++ b/src/ru/remanga/src/eu/kanade/tachiyomi/extension/ru/remanga/Remanga.kt @@ -415,7 +415,7 @@ class Remanga : ConfigurableSource, HttpSource() { try { json.decodeFromString<SeriesExWrapperDto<List<ExBookDto>>>(client.newCall(GET("$exManga/chapter/history/$mangaID", exHeaders())).execute().body.string()).data } catch (_: Exception) { - throw Exception("Домен $exManga сервиса exmanga недоступен, выберите другой в настройках расширения") + throw Exception("Домен $exManga сервиса ExManga недоступен, выберите другой в настройках расширения") } } else { emptyList() @@ -489,7 +489,15 @@ class Remanga : ConfigurableSource, HttpSource() { } } if (!preferences.getBoolean(PAID_PREF, false)) { - chaptersList = chaptersList.filter { !it.name.contains("\uD83D\uDCB2") } + chaptersList = chaptersList.filter { + !it.name.contains("\uD83D\uDCB2") || ( + it.name.substringBefore( + ". Глава", + ).toIntOrNull()!! <= + (exChapters.firstOrNull()?.tome ?: -2) && + it.chapter_number < exChapters.firstOrNull()?.chapter?.toFloatOrNull()!! + ) + } } return chaptersList } @@ -516,7 +524,7 @@ class Remanga : ConfigurableSource, HttpSource() { } return result } catch (e: SerializationException) { - throw IOException("Главы больше нет на exmanga. Попробуйте обновить список глав (свайп сверху).") + throw IOException("Главы больше нет на ExManga. Попробуйте обновить список глав (свайп сверху).") } } else { if (urlChapter.contains("#is_bought") and (preferences.getBoolean(exPAID_PREF, true))) { @@ -557,8 +565,8 @@ class Remanga : ConfigurableSource, HttpSource() { } else { if (chapter.name.contains("\uD83D\uDCB2")) { val noEX = if (preferences.getBoolean(exPAID_PREF, true)) { - "Если вы покупаете главу, то вы делитесь с другими пользователями exmanga." - } else { "Функции exmanga отключены." } + "Расширение отправляет данные на удаленный сервер ExManga только при открытии глав покупаемой манги." + } else { "Функции ExManga отключены." } throw IOException("Глава платная. $noEX") } GET(baseUrl + "/api/titles/chapters/" + chapter.url.substringAfterLast("/ch").substringBefore("#is_bought") + "/", headers) @@ -652,10 +660,9 @@ class Remanga : ConfigurableSource, HttpSource() { SearchFilter("Манхва", "1"), SearchFilter("Маньхуа", "2"), SearchFilter("Западный комикс", "3"), - SearchFilter("Русскомикс", "4"), + SearchFilter("Рукомикс", "4"), SearchFilter("Индонезийский комикс", "5"), - SearchFilter("Новелла", "6"), - SearchFilter("Другое", "7"), + SearchFilter("Другое", "6"), ) private fun getStatusList() = listOf( @@ -770,7 +777,6 @@ class Remanga : ConfigurableSource, HttpSource() { ) private fun getGenreList() = listOf( - SearchFilter("боевик", "2"), SearchFilter("боевые искусства", "3"), SearchFilter("гарем", "5"), SearchFilter("гендерная интрига", "6"), @@ -779,7 +785,6 @@ class Remanga : ConfigurableSource, HttpSource() { SearchFilter("дзёсэй", "9"), SearchFilter("додзинси", "10"), SearchFilter("драма", "11"), - SearchFilter("игра", "12"), SearchFilter("история", "13"), SearchFilter("киберпанк", "14"), SearchFilter("кодомо", "15"), @@ -787,6 +792,7 @@ class Remanga : ConfigurableSource, HttpSource() { SearchFilter("махо-сёдзё", "17"), SearchFilter("меха", "18"), SearchFilter("мистика", "19"), + SearchFilter("мурим", "51"), SearchFilter("научная фантастика", "20"), SearchFilter("повседневность", "21"), SearchFilter("постапокалиптика", "22"), @@ -806,11 +812,12 @@ class Remanga : ConfigurableSource, HttpSource() { SearchFilter("ужасы", "36"), SearchFilter("фантастика", "37"), SearchFilter("фэнтези", "38"), - SearchFilter("школа", "39"), + SearchFilter("школьная жизнь", "39"), + SearchFilter("экшен", "2"), SearchFilter("элементы юмора", "16"), + SearchFilter("эротика", "42"), SearchFilter("этти", "40"), SearchFilter("юри", "41"), - SearchFilter("яой", "43"), ) private class MyList(favorites: Array<String>) : Filter.Select<String>("Закладки (только)", favorites) private data class MyListUnit(val name: String, val id: String) @@ -869,7 +876,7 @@ class Remanga : ConfigurableSource, HttpSource() { } val paidChapterShow = androidx.preference.CheckBoxPreference(screen.context).apply { key = PAID_PREF - title = "Показывать платные главы" + title = "Показывать все платные главы" summary = "Показывает не купленные\uD83D\uDCB2 главы(может вызвать ошибки при обновлении/автозагрузке)" setDefaultValue(false) @@ -880,8 +887,10 @@ class Remanga : ConfigurableSource, HttpSource() { } val exChapterShow = androidx.preference.CheckBoxPreference(screen.context).apply { key = exPAID_PREF - title = "Показывать главы из exmanga" - summary = "Показывает главы купленные другими людьми и поделившиеся ими через браузерное расширение exmanga. Также отключает отправку ваших глав из Tachiyomi в exmanga." + title = "Показывать главы из ExManga" + summary = "Показывает главы купленные другими людьми и поделившиеся ими через браузерное расширение ExManga. \n\n" + + "ⓘЧастично отображает не купленные\uD83D\uDCB2 главы для соблюдения порядка глав. \n\n" + + "ⓘТакже отправляет купленные главы из Tachiyomi в ExManga." setDefaultValue(true) setOnPreferenceChangeListener { _, newValue -> @@ -891,7 +900,7 @@ class Remanga : ConfigurableSource, HttpSource() { } val domainExPref = ListPreference(screen.context).apply { key = exDOMAIN_PREF - title = "Выбор домена для exmanga" + title = "Выбор домена для ExManga" entries = arrayOf("Россия (exmanga.ru)", "Украина (ex.euromc.com.ua)") entryValues = arrayOf(baseRuss, baseUkr) summary = "%s" diff --git a/src/ru/remanga/src/eu/kanade/tachiyomi/extension/ru/remanga/dto/Dto.kt b/src/ru/remanga/src/eu/kanade/tachiyomi/extension/ru/remanga/dto/Dto.kt index 9c83730f2..751ad8d31 100644 --- a/src/ru/remanga/src/eu/kanade/tachiyomi/extension/ru/remanga/dto/Dto.kt +++ b/src/ru/remanga/src/eu/kanade/tachiyomi/extension/ru/remanga/dto/Dto.kt @@ -104,6 +104,8 @@ data class SeriesExWrapperDto<T>( @Serializable data class ExBookDto( val id: Long, + val tome: Int, + val chapter: String, ) @Serializable