diff --git a/src/tr/MangaDenizi/build.gradle b/src/tr/MangaDenizi/build.gradle index 0faf012c9..82ccd215b 100644 --- a/src/tr/MangaDenizi/build.gradle +++ b/src/tr/MangaDenizi/build.gradle @@ -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' } diff --git a/src/tr/MangaDenizi/src/eu/kanade/tachiyomi/extension/tr/mangadenizi/MangaDenizi.kt b/src/tr/MangaDenizi/src/eu/kanade/tachiyomi/extension/tr/mangadenizi/MangaDenizi.kt index dfd3884ef..bbcb8abcf 100644 --- a/src/tr/MangaDenizi/src/eu/kanade/tachiyomi/extension/tr/mangadenizi/MangaDenizi.kt +++ b/src/tr/MangaDenizi/src/eu/kanade/tachiyomi/extension/tr/mangadenizi/MangaDenizi.kt @@ -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, + ) } diff --git a/src/zh/bainianmanga/build.gradle b/src/zh/bainianmanga/build.gradle index 8c2b3a0f7..e34241e94 100755 --- a/src/zh/bainianmanga/build.gradle +++ b/src/zh/bainianmanga/build.gradle @@ -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' } diff --git a/src/zh/bainianmanga/src/eu/kanade/tachiyomi/extension/zh/bainianmanga/BainianManga.kt b/src/zh/bainianmanga/src/eu/kanade/tachiyomi/extension/zh/bainianmanga/BainianManga.kt index a92368a58..8ac444569 100755 --- a/src/zh/bainianmanga/src/eu/kanade/tachiyomi/extension/zh/bainianmanga/BainianManga.kt +++ b/src/zh/bainianmanga/src/eu/kanade/tachiyomi/extension/zh/bainianmanga/BainianManga.kt @@ -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()