Migrating 2 sources to kotlinx.serialization (#8439)
* BainianManga: Fix image scraping and migration from gson * MangaDenizi: Migration from org.json
This commit is contained in:
parent
18f3f9412f
commit
cbd3f96907
@ -1,11 +1,12 @@
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlinx-serialization'
|
||||
|
||||
ext {
|
||||
extName = 'MangaDenizi'
|
||||
pkgNameSuffix = 'tr.mangadenizi'
|
||||
extClass = '.MangaDenizi'
|
||||
extVersionCode = 3
|
||||
extVersionCode = 4
|
||||
libVersion = '1.2'
|
||||
}
|
||||
|
||||
|
@ -8,8 +8,10 @@ import eu.kanade.tachiyomi.source.model.SChapter
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import kotlinx.serialization.json.Json
|
||||
import okhttp3.Response
|
||||
import org.json.JSONObject
|
||||
import org.jsoup.nodes.Document
|
||||
import org.jsoup.nodes.Element
|
||||
import java.text.SimpleDateFormat
|
||||
@ -70,25 +72,14 @@ class MangaDenizi : ParsedHttpSource() {
|
||||
override fun searchMangaFromElement(element: Element) = throw UnsupportedOperationException("Unused")
|
||||
|
||||
override fun searchMangaParse(response: Response): MangasPage {
|
||||
val res = response.body!!.string()
|
||||
return getMangasPage(res)
|
||||
}
|
||||
|
||||
private fun getMangasPage(json: String): MangasPage {
|
||||
val response = JSONObject(json)
|
||||
val results = response.getJSONArray("suggestions")
|
||||
val mangas = ArrayList<SManga>()
|
||||
|
||||
// No thumbnail here either
|
||||
for (i in 0 until results.length()) {
|
||||
val obj = results.getJSONObject(i)
|
||||
val manga = SManga.create()
|
||||
manga.title = obj.getString("value")
|
||||
manga.url = "/manga/${obj.getString("data")}"
|
||||
mangas.add(manga)
|
||||
val mangaListJson = Json.decodeFromString<SearchMangaJson>(response.body!!.string())
|
||||
val mangaList = mangaListJson.suggestions.map {
|
||||
SManga.create().apply {
|
||||
title = it.value
|
||||
url = "/manga/${it.data}"
|
||||
}
|
||||
}
|
||||
|
||||
return MangasPage(mangas, false)
|
||||
return MangasPage(mangaList, false)
|
||||
}
|
||||
|
||||
override fun mangaDetailsParse(document: Document) = SManga.create().apply {
|
||||
@ -132,4 +123,14 @@ class MangaDenizi : ParsedHttpSource() {
|
||||
override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException("Not Used")
|
||||
|
||||
override fun getFilterList() = FilterList()
|
||||
|
||||
@Serializable
|
||||
data class SearchMangaJson(
|
||||
val suggestions: List<MangaJson>
|
||||
)
|
||||
@Serializable
|
||||
data class MangaJson(
|
||||
val value: String,
|
||||
val data: String,
|
||||
)
|
||||
}
|
||||
|
@ -1,11 +1,12 @@
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlinx-serialization'
|
||||
|
||||
ext {
|
||||
extName = 'BainianManga'
|
||||
pkgNameSuffix = 'zh.bainianmanga'
|
||||
extClass = '.BainianManga'
|
||||
extVersionCode = 2
|
||||
extVersionCode = 3
|
||||
libVersion = '1.2'
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,5 @@
|
||||
package eu.kanade.tachiyomi.extension.zh.bainianmanga
|
||||
|
||||
import com.github.salomonbrys.kotson.fromJson
|
||||
import com.google.gson.Gson
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.source.model.Filter
|
||||
import eu.kanade.tachiyomi.source.model.FilterList
|
||||
@ -9,6 +7,8 @@ import eu.kanade.tachiyomi.source.model.Page
|
||||
import eu.kanade.tachiyomi.source.model.SChapter
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import kotlinx.serialization.json.Json
|
||||
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
@ -80,19 +80,16 @@ class BainianManga : ParsedHttpSource() {
|
||||
return super.chapterListParse(response).asReversed()
|
||||
}
|
||||
|
||||
private val gson = Gson()
|
||||
|
||||
override fun pageListParse(document: Document): List<Page> {
|
||||
val html = document.html()
|
||||
val baseURLRe = Regex("var z_yurl='(.*?)';")
|
||||
val baseImageUrl = baseURLRe.find(html)?.groups?.get(1)?.value
|
||||
val baseImgUrl = "https://img.hltongchen.com/"
|
||||
|
||||
val re = Regex("var z_img='(.*?)';")
|
||||
val imgCode = re.find(html)?.groups?.get(1)?.value
|
||||
if (imgCode != null) {
|
||||
val anotherStr = gson.fromJson<List<String>>(imgCode)
|
||||
return anotherStr.mapIndexed { i, imgStr ->
|
||||
Page(i, "", "$baseImageUrl$imgStr")
|
||||
val imgUrlRegex = Regex("var z_img='(.*?)';")
|
||||
val imgUrlArray = imgUrlRegex.find(html)?.groups?.get(1)?.value
|
||||
if (imgUrlArray != null) {
|
||||
val imgUrlList = Json.decodeFromString<List<String>>(imgUrlArray)
|
||||
return imgUrlList.mapIndexed { i, imgUrl ->
|
||||
Page(i, "", "$baseImgUrl$imgUrl")
|
||||
}
|
||||
}
|
||||
return listOf()
|
||||
|
Loading…
x
Reference in New Issue
Block a user