From fcbab38aa199cf755ff9bcf6ea213cf99730dbf6 Mon Sep 17 00:00:00 2001 From: Eugene <35057681+e-shl@users.noreply.github.com> Date: Sun, 24 Jan 2021 01:10:09 +0500 Subject: [PATCH] Redirect from api Remanga and Desu (open in browser) (#5527) --- src/ru/desu/build.gradle | 2 +- .../tachiyomi/extension/ru/desu/Desu.kt | 22 +++++++++++++++++++ src/ru/remanga/build.gradle | 2 +- .../tachiyomi/extension/ru/remanga/Remanga.kt | 14 ++++++++++-- 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/ru/desu/build.gradle b/src/ru/desu/build.gradle index daa5a5565..9720b8201 100644 --- a/src/ru/desu/build.gradle +++ b/src/ru/desu/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Desu' pkgNameSuffix = 'ru.desu' extClass = '.Desu' - extVersionCode = 5 + extVersionCode = 6 libVersion = '1.2' } diff --git a/src/ru/desu/src/eu/kanade/tachiyomi/extension/ru/desu/Desu.kt b/src/ru/desu/src/eu/kanade/tachiyomi/extension/ru/desu/Desu.kt index 9d06f5e05..4c56fddf4 100644 --- a/src/ru/desu/src/eu/kanade/tachiyomi/extension/ru/desu/Desu.kt +++ b/src/ru/desu/src/eu/kanade/tachiyomi/extension/ru/desu/Desu.kt @@ -1,6 +1,7 @@ package eu.kanade.tachiyomi.extension.ru.desu import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.MangasPage @@ -13,6 +14,7 @@ import okhttp3.Request import okhttp3.Response import org.json.JSONArray import org.json.JSONObject +import rx.Observable import java.util.ArrayList class Desu : HttpSource() { @@ -108,6 +110,26 @@ class Desu : HttpSource() { return mangaPageFromJSON(obj.toString(), count > page * limit) } + private fun titleDetailsRequest(manga: SManga): Request { + val titleId = manga.url.substringAfterLast("/") + + val newHeaders = headersBuilder().build() + + return GET("$baseUrl/$titleId", newHeaders) + } + + // Workaround to allow "Open in browser" use the real URL. + override fun fetchMangaDetails(manga: SManga): Observable { + return client.newCall(titleDetailsRequest(manga)) + .asObservableSuccess() + .map { response -> + mangaDetailsParse(response).apply { initialized = true } + } + } + + override fun mangaDetailsRequest(manga: SManga): Request { + return GET(baseUrl.substringBefore("/api") + manga.url, headers) + } override fun mangaDetailsParse(response: Response) = SManga.create().apply { val obj = JSONObject(response.body()!!.string()).getJSONObject("response") mangaFromJSON(obj, true) diff --git a/src/ru/remanga/build.gradle b/src/ru/remanga/build.gradle index c86b9d3ee..eb6e4b00c 100644 --- a/src/ru/remanga/build.gradle +++ b/src/ru/remanga/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Remanga' pkgNameSuffix = 'ru.remanga' extClass = '.Remanga' - extVersionCode = 13 + extVersionCode = 14 libVersion = '1.2' } 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 210cf2775..1c0f31f9b 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 @@ -221,10 +221,18 @@ class Remanga : ConfigurableSource, HttpSource() { status = parseStatus(o.status.id) } } + private fun titleDetailsRequest(manga: SManga): Request { + val titleId = manga.url + val newHeaders = headersBuilder().build() + + return GET("$baseUrl/$titleId", newHeaders) + } + + // Workaround to allow "Open in browser" use the real URL. override fun fetchMangaDetails(manga: SManga): Observable { var warnLogin = false - return client.newCall(mangaDetailsRequest(manga)) + return client.newCall(titleDetailsRequest(manga)) .asObservable().doOnNext { response -> if (!response.isSuccessful) { response.close() @@ -238,7 +246,9 @@ class Remanga : ConfigurableSource, HttpSource() { } } } - + override fun mangaDetailsRequest(manga: SManga): Request { + return GET(baseUrl + "/manga/" + manga.url.substringAfter("/api/titles/", "/"), headers) + } override fun mangaDetailsParse(response: Response): SManga { val series = gson.fromJson>(response.body()?.charStream()!!) branches[series.content.en_name] = series.content.branches