From 6a474556089267d65d878296d80d8b6fbe22af1b Mon Sep 17 00:00:00 2001
From: Pavka
Date: Thu, 3 Sep 2020 04:55:45 +0300
Subject: [PATCH] [Ru] Libmanga. Revert changes from 19->20 update (#4289)
---
src/ru/libmanga/build.gradle | 2 +-
.../extension/ru/libmanga/LibManga.kt | 60 +++++++++++++++----
2 files changed, 48 insertions(+), 14 deletions(-)
diff --git a/src/ru/libmanga/build.gradle b/src/ru/libmanga/build.gradle
index 10f55c20a..c0d16be3a 100644
--- a/src/ru/libmanga/build.gradle
+++ b/src/ru/libmanga/build.gradle
@@ -5,7 +5,7 @@ ext {
extName = 'MangaLib'
pkgNameSuffix = 'ru.libmanga'
extClass = '.LibManga'
- extVersionCode = 20
+ extVersionCode = 21
libVersion = '1.2'
}
diff --git a/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt b/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt
index c1bb8df2f..06fc2569f 100644
--- a/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt
+++ b/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt
@@ -6,6 +6,7 @@ import android.support.v7.preference.ListPreference
import android.support.v7.preference.PreferenceScreen
import com.github.salomonbrys.kotson.array
import com.github.salomonbrys.kotson.get
+import com.github.salomonbrys.kotson.int
import com.github.salomonbrys.kotson.nullArray
import com.github.salomonbrys.kotson.nullString
import com.github.salomonbrys.kotson.obj
@@ -231,10 +232,22 @@ class LibManga : ConfigurableSource, HttpSource() {
private fun chapterFromElement(element: Element): SChapter {
val chapter = SChapter.create()
- val id = element.attr("data-id")
- val slug = element.baseUri().replace("$baseUrl/", "")
- val url = "/download/$id?slug=$slug"
- chapter.setUrlWithoutDomain(url)
+
+ val chapterLink = element.select("div.chapter-item__name > a").first()
+ if (chapterLink != null) {
+ chapter.setUrlWithoutDomain(chapterLink.attr("href"))
+ } else {
+ // Found multiple translate. Get first one for now
+ val volume = element.attr("data-volume")
+ val number = element.attr("data-number")
+ val teams = jsonParser.parse(element.attr("data-teams"))
+ val team = teams[0]["slug"].nullString
+ val baseUrl = "${element.baseUri()}/v$volume/c$number"
+ val url = if (team != null) "$baseUrl/$team" else baseUrl
+
+ chapter.setUrlWithoutDomain(url)
+ }
+
chapter.name = element.select("div.chapter-item__name").first().text()
chapter.date_upload = SimpleDateFormat("dd.MM.yyyy", Locale.US)
.parse(element.select("div.chapter-item__date").text()).time
@@ -249,18 +262,39 @@ class LibManga : ConfigurableSource, HttpSource() {
}
override fun pageListParse(response: Response): List {
- val body = response.body()!!.string()
- val slug = response.request().url().queryParameter("slug")
- val json = jsonParser.parse(body)
- val images = json["images"].array
- val chapterslug = json["chapter"]["slug"].string
+ val document = response.asJsoup()
+ val chapInfo = document
+ .select("script:containsData(window.__info)")
+ .first()
+ .html()
+ .trim()
+ .removePrefix("window.__info = ")
+ .split(";")
+ .first()
+ val chapInfoJson = jsonParser.parse(chapInfo).obj
+ val servers = chapInfoJson["servers"].asJsonObject
+ val defaultServer: String = chapInfoJson["img"]["server"].string
+ val imgUrl: String = chapInfoJson["img"]["url"].string
+
+ val serverToUse = if (this.server == null) defaultServer else this.server
+ val imageServerUrl: String = servers[serverToUse].string
+
+ // Get pages
+ val pagesArr = document
+ .select("script:containsData(window.__pg)")
+ .first()
+ .html()
+ .trim()
+ .removePrefix("window.__pg = ")
+ .removeSuffix(";")
+
+ val pagesJson = jsonParser.parse(pagesArr).array
val pages = mutableListOf()
- images.forEachIndexed { index, page ->
- val url = "${this.imageServerUrl()}/manga/$slug/chapters/$chapterslug/${page.string}"
- pages.add(Page(index, "", url))
- }
+ pagesJson.forEach { page ->
+ pages.add(Page(page["p"].int, "", imageServerUrl + imgUrl + page["u"].string))
+ }
return pages
}