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
}
}