From 4337cece524bbe41edbc3840b57c3ba2101fc662 Mon Sep 17 00:00:00 2001 From: e-shl <35057681+e-shl@users.noreply.github.com> Date: Fri, 25 Feb 2022 16:12:10 +0500 Subject: [PATCH] [RU]Grouple correct Chapter Number (simplificade-fix) (#10929) * [RU]Grouple correct Chapter Number (simplificade-fix) * fix relative rating * mtr back * delete the code under test * disable following redirects --- src/ru/allhentai/build.gradle | 2 +- .../extension/ru/allhentai/AllHentai.kt | 22 ++++++++++------- src/ru/mintmanga/build.gradle | 2 +- .../extension/ru/mintmanga/Mintmanga.kt | 24 +++++++++++-------- src/ru/readmanga/build.gradle | 2 +- .../extension/ru/readmanga/Readmanga.kt | 24 +++++++++++-------- src/ru/selfmanga/build.gradle | 2 +- .../extension/ru/selfmanga/Selfmanga.kt | 23 +++++++++++------- 8 files changed, 59 insertions(+), 42 deletions(-) diff --git a/src/ru/allhentai/build.gradle b/src/ru/allhentai/build.gradle index 453ef6c84..046f3162f 100644 --- a/src/ru/allhentai/build.gradle +++ b/src/ru/allhentai/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'AllHentai' pkgNameSuffix = 'ru.allhentai' extClass = '.AllHentai' - extVersionCode = 15 + extVersionCode = 16 isNsfw = true } diff --git a/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt b/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt index d3f90523e..2e4186c30 100644 --- a/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt +++ b/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt @@ -48,7 +48,15 @@ class AllHentai : ConfigurableSource, ParsedHttpSource() { private val rateLimitInterceptor = RateLimitInterceptor(2) override val client: OkHttpClient = network.client.newBuilder() - .addNetworkInterceptor(rateLimitInterceptor).build() + .addNetworkInterceptor(rateLimitInterceptor) + .addInterceptor { chain -> + val originalRequest = chain.request() + val response = chain.proceed(originalRequest) + if (originalRequest.url.toString().contains("internal/redirect") or (response.code == 301)) + throw Exception("Манга переехала на другой адрес/ссылку!") + response + } + .build() override fun popularMangaSelector() = "div.tile" @@ -178,10 +186,11 @@ class AllHentai : ConfigurableSource, ParsedHttpSource() { private fun chapterFromElement(element: Element, manga: SManga): SChapter { val urlElement = element.select("a").first() + val chapterInf = element.select(".item-data").first() val urlText = urlElement.text() val chapter = SChapter.create() - chapter.setUrlWithoutDomain(urlElement.attr("href")) + chapter.setUrlWithoutDomain(urlElement.attr("href") + "?mtr=true") // mtr is 18+ skip var translators = "" val translatorElement = urlElement.attr("title") @@ -205,6 +214,8 @@ class AllHentai : ConfigurableSource, ParsedHttpSource() { chapter.name = chapter.name.substringAfter("…").trim() } + chapter.chapter_number = chapterInf.attr("num").toFloat() / 10 + chapter.date_upload = element.select("td.d-none").last()?.text()?.let { try { SimpleDateFormat("dd.MM.yy", Locale.US).parse(it)?.time ?: 0L @@ -220,21 +231,14 @@ class AllHentai : ConfigurableSource, ParsedHttpSource() { } override fun prepareNewChapter(chapter: SChapter, manga: SManga) { - val urlChapterNumber = Regex("${manga.url}/vol([0-9])/") - val basic = Regex("""\s*([0-9]+)(\s-\s)([0-9]+)\s*""") val extra = Regex("""\s*([0-9]+\sЭкстра)\s*""") val single = Regex("""\s*Сингл\s*""") when { - basic.containsMatchIn(chapter.name) -> { - chapter.chapter_number = chapter.url.split(urlChapterNumber)[1].toFloat() - } extra.containsMatchIn(chapter.name) -> { - chapter.chapter_number = chapter.url.split(urlChapterNumber)[1].toFloat() chapter.name = chapter.name.replaceFirst(" ", " - " + chapter.chapter_number.toString() + " ") } single.containsMatchIn(chapter.name) -> { - chapter.chapter_number = chapter.url.split(urlChapterNumber)[1].toFloat() chapter.name = chapter.chapter_number.toString() + " " + chapter.name } } diff --git a/src/ru/mintmanga/build.gradle b/src/ru/mintmanga/build.gradle index 970a1e07d..c79203b5c 100644 --- a/src/ru/mintmanga/build.gradle +++ b/src/ru/mintmanga/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Mintmanga' pkgNameSuffix = 'ru.mintmanga' extClass = '.Mintmanga' - extVersionCode = 38 + extVersionCode = 39 } dependencies { diff --git a/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/Mintmanga.kt b/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/Mintmanga.kt index 12eb10bb7..c96725bfe 100644 --- a/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/Mintmanga.kt +++ b/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/Mintmanga.kt @@ -47,7 +47,15 @@ class Mintmanga : ConfigurableSource, ParsedHttpSource() { private val rateLimitInterceptor = RateLimitInterceptor(2) override val client: OkHttpClient = network.client.newBuilder() - .addNetworkInterceptor(rateLimitInterceptor).build() + .addNetworkInterceptor(rateLimitInterceptor) + .addInterceptor { chain -> + val originalRequest = chain.request() + val response = chain.proceed(originalRequest) + if (originalRequest.url.toString().contains("internal/redirect") or (response.code == 301)) + throw Exception("Манга переехала на другой адрес/ссылку!") + response + } + .build() private var uagent: String = preferences.getString(UAGENT_TITLE, UAGENT_DEFAULT)!! override fun headersBuilder() = Headers.Builder().apply { @@ -142,7 +150,7 @@ class Mintmanga : ConfigurableSource, ParsedHttpSource() { "манга" } val ratingValue = infoElement.select(".col-sm-7 .rating-block").attr("data-score").toFloat() * 2 - val ratingValueOver = infoElement.select(".info-icon").attr("data-content").substringAfter("Относительно остальных произведений: ").substringBefore("/5").replace(",", ".").toFloat() * 2 + val ratingValueOver = infoElement.select(".info-icon").attr("data-content").substringBeforeLast("/5
").substringAfterLast(": ").replace(",", ".").toFloat() * 2 val ratingVotes = infoElement.select(".col-sm-7 .user-rating meta[itemprop=\"ratingCount\"]").attr("content") val ratingStar = when { ratingValue > 9.5 -> "★★★★★" @@ -210,10 +218,11 @@ class Mintmanga : ConfigurableSource, ParsedHttpSource() { private fun chapterFromElement(element: Element, manga: SManga): SChapter { val urlElement = element.select("a").first() + val chapterInf = element.select(".item-data").first() val urlText = urlElement.text() val chapter = SChapter.create() - chapter.setUrlWithoutDomain(urlElement.attr("href")) + chapter.setUrlWithoutDomain(urlElement.attr("href") + "?mtr=true") // mtr is 18+ skip var translators = "" val translatorElement = urlElement.attr("title") @@ -237,6 +246,8 @@ class Mintmanga : ConfigurableSource, ParsedHttpSource() { chapter.name = chapter.name.substringAfter("…").trim() } + chapter.chapter_number = chapterInf.attr("num").toFloat() / 10 + chapter.date_upload = element.select("td.d-none").last()?.text()?.let { try { SimpleDateFormat("dd.MM.yy", Locale.US).parse(it)?.time ?: 0L @@ -252,21 +263,14 @@ class Mintmanga : ConfigurableSource, ParsedHttpSource() { } override fun prepareNewChapter(chapter: SChapter, manga: SManga) { - val urlChapterNumber = Regex("${manga.url}/vol([0-9])/") - val basic = Regex("""\s*([0-9]+)(\s-\s)([0-9]+)\s*""") val extra = Regex("""\s*([0-9]+\sЭкстра)\s*""") val single = Regex("""\s*Сингл\s*""") when { - basic.containsMatchIn(chapter.name) -> { - chapter.chapter_number = chapter.url.split(urlChapterNumber)[1].toFloat() - } extra.containsMatchIn(chapter.name) -> { - chapter.chapter_number = chapter.url.split(urlChapterNumber)[1].toFloat() chapter.name = chapter.name.replaceFirst(" ", " - " + chapter.chapter_number.toString() + " ") } single.containsMatchIn(chapter.name) -> { - chapter.chapter_number = chapter.url.split(urlChapterNumber)[1].toFloat() chapter.name = chapter.chapter_number.toString() + " " + chapter.name } } diff --git a/src/ru/readmanga/build.gradle b/src/ru/readmanga/build.gradle index a86debaca..659a90797 100644 --- a/src/ru/readmanga/build.gradle +++ b/src/ru/readmanga/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Readmanga' pkgNameSuffix = 'ru.readmanga' extClass = '.Readmanga' - extVersionCode = 37 + extVersionCode = 38 } dependencies { diff --git a/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/Readmanga.kt b/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/Readmanga.kt index 3d15370d5..168397111 100644 --- a/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/Readmanga.kt +++ b/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/Readmanga.kt @@ -47,7 +47,15 @@ class Readmanga : ConfigurableSource, ParsedHttpSource() { private val rateLimitInterceptor = RateLimitInterceptor(2) override val client: OkHttpClient = network.client.newBuilder() - .addNetworkInterceptor(rateLimitInterceptor).build() + .addNetworkInterceptor(rateLimitInterceptor) + .addInterceptor { chain -> + val originalRequest = chain.request() + val response = chain.proceed(originalRequest) + if (originalRequest.url.toString().contains("internal/redirect") or (response.code == 301)) + throw Exception("Манга переехала на другой адрес/ссылку!") + response + } + .build() private var uagent: String = preferences.getString(UAGENT_TITLE, UAGENT_DEFAULT)!! override fun headersBuilder() = Headers.Builder().apply { @@ -143,7 +151,7 @@ class Readmanga : ConfigurableSource, ParsedHttpSource() { } val ratingValue = infoElement.select(".col-sm-7 .rating-block").attr("data-score").toFloat() * 2 - val ratingValueOver = infoElement.select(".info-icon").attr("data-content").substringAfter("Относительно остальных произведений: ").substringBefore("/5").replace(",", ".").toFloat() * 2 + val ratingValueOver = infoElement.select(".info-icon").attr("data-content").substringBeforeLast("/5
").substringAfterLast(": ").replace(",", ".").toFloat() * 2 val ratingVotes = infoElement.select(".col-sm-7 .user-rating meta[itemprop=\"ratingCount\"]").attr("content") val ratingStar = when { ratingValue > 9.5 -> "★★★★★" @@ -211,10 +219,11 @@ class Readmanga : ConfigurableSource, ParsedHttpSource() { private fun chapterFromElement(element: Element, manga: SManga): SChapter { val urlElement = element.select("a").first() + val chapterInf = element.select(".item-data").first() val urlText = urlElement.text() val chapter = SChapter.create() - chapter.setUrlWithoutDomain(urlElement.attr("href")) + chapter.setUrlWithoutDomain(urlElement.attr("href") + "?mtr=true") // mtr is 18+ skip var translators = "" val translatorElement = urlElement.attr("title") @@ -238,6 +247,8 @@ class Readmanga : ConfigurableSource, ParsedHttpSource() { chapter.name = chapter.name.substringAfter("…").trim() } + chapter.chapter_number = chapterInf.attr("num").toFloat() / 10 + chapter.date_upload = element.select("td.d-none").last()?.text()?.let { try { SimpleDateFormat("dd.MM.yy", Locale.US).parse(it)?.time ?: 0L @@ -253,21 +264,14 @@ class Readmanga : ConfigurableSource, ParsedHttpSource() { } override fun prepareNewChapter(chapter: SChapter, manga: SManga) { - val urlChapterNumber = Regex("${manga.url}/vol([0-9])/") - val basic = Regex("""\s*([0-9]+)(\s-\s)([0-9]+)\s*""") val extra = Regex("""\s*([0-9]+\sЭкстра)\s*""") val single = Regex("""\s*Сингл\s*""") when { - basic.containsMatchIn(chapter.name) -> { - chapter.chapter_number = chapter.url.split(urlChapterNumber)[1].toFloat() - } extra.containsMatchIn(chapter.name) -> { - chapter.chapter_number = chapter.url.split(urlChapterNumber)[1].toFloat() chapter.name = chapter.name.replaceFirst(" ", " - " + chapter.chapter_number.toString() + " ") } single.containsMatchIn(chapter.name) -> { - chapter.chapter_number = chapter.url.split(urlChapterNumber)[1].toFloat() chapter.name = chapter.chapter_number.toString() + " " + chapter.name } } diff --git a/src/ru/selfmanga/build.gradle b/src/ru/selfmanga/build.gradle index 483bdc0c7..6c29083ce 100644 --- a/src/ru/selfmanga/build.gradle +++ b/src/ru/selfmanga/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Selfmanga' pkgNameSuffix = 'ru.selfmanga' extClass = '.Selfmanga' - extVersionCode = 15 + extVersionCode = 16 } dependencies { 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 11542f18a..9361adf0d 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 @@ -33,7 +33,15 @@ class Selfmanga : ParsedHttpSource() { private val rateLimitInterceptor = RateLimitInterceptor(2) override val client: OkHttpClient = network.client.newBuilder() - .addNetworkInterceptor(rateLimitInterceptor).build() + .addNetworkInterceptor(rateLimitInterceptor) + .addInterceptor { chain -> + val originalRequest = chain.request() + val response = chain.proceed(originalRequest) + if (originalRequest.url.toString().contains("internal/redirect") or (response.code == 301)) + throw Exception("Манга переехала на другой адрес/ссылку!") + response + } + .build() override fun popularMangaSelector() = "div.tile" @@ -115,15 +123,19 @@ class Selfmanga : ParsedHttpSource() { override fun chapterFromElement(element: Element): SChapter { val urlElement = element.select("a").first() + val chapterInf = element.select(".item-data").first() val urlText = urlElement.text() val chapter = SChapter.create() - chapter.setUrlWithoutDomain(urlElement.attr("href")) + chapter.setUrlWithoutDomain(urlElement.attr("href") + "?mtr=true") // mtr is 18+ skip if (urlText.endsWith(" новое")) { chapter.name = urlText.dropLast(6) } else { chapter.name = urlText } + + chapter.chapter_number = chapterInf.attr("num").toFloat() / 10 + chapter.date_upload = element.select("td.hidden-xxs").last()?.text()?.let { try { SimpleDateFormat("dd/MM/yy", Locale.US).parse(it)?.time ?: 0L @@ -135,21 +147,14 @@ class Selfmanga : ParsedHttpSource() { } override fun prepareNewChapter(chapter: SChapter, manga: SManga) { - val urlChapterNumber = Regex("${manga.url}/vol([0-9])/") - val basic = Regex("""\s*([0-9]+)(\s-\s)([0-9]+)\s*""") val extra = Regex("""\s*([0-9]+\sЭкстра)\s*""") val single = Regex("""\s*Сингл\s*""") when { - basic.containsMatchIn(chapter.name) -> { - chapter.chapter_number = chapter.url.split(urlChapterNumber)[1].toFloat() - } extra.containsMatchIn(chapter.name) -> { - chapter.chapter_number = chapter.url.split(urlChapterNumber)[1].toFloat() chapter.name = chapter.name.replaceFirst(" ", " - " + chapter.chapter_number.toString() + " ") } single.containsMatchIn(chapter.name) -> { - chapter.chapter_number = chapter.url.split(urlChapterNumber)[1].toFloat() chapter.name = chapter.chapter_number.toString() + " " + chapter.name } }