Manwa: Fix page list (#5479)

This commit is contained in:
anenasa 2024-10-12 15:22:56 +08:00 committed by Draff
parent 72d2c38a6d
commit bcb6f6972b
No known key found for this signature in database
GPG Key ID: E8A89F3211677653
2 changed files with 15 additions and 15 deletions

View File

@ -1,7 +1,7 @@
ext { ext {
extName = 'Manwa' extName = 'Manwa'
extClass = '.Manwa' extClass = '.Manwa'
extVersionCode = 7 extVersionCode = 8
isNsfw = true isNsfw = true
} }

View File

@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.extension.zh.manwa
import android.app.Application import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import android.net.Uri import android.net.Uri
import android.util.Base64
import androidx.preference.CheckBoxPreference import androidx.preference.CheckBoxPreference
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
@ -160,19 +159,20 @@ class Manwa : ParsedHttpSource(), ConfigurableSource {
return GET("$baseUrl${chapter.url}?img_host=${preferences.getString(IMAGE_HOST_KEY, IMAGE_HOST_ENTRY_VALUES[0])}", headers) return GET("$baseUrl${chapter.url}?img_host=${preferences.getString(IMAGE_HOST_KEY, IMAGE_HOST_ENTRY_VALUES[0])}", headers)
} }
override fun pageListParse(document: Document): List<Page> { override fun pageListParse(document: Document): List<Page> = mutableListOf<Page>().apply {
val script = document.selectFirst("script:containsData(encryptedPhotos)")!!.data() val cssQuery = "#cp_img > div.img-content > img[data-r-src]"
// key changes every hour val elements = document.select(cssQuery)
val key = script.substringBefore("','enc'").substringAfterLast("'").toByteArray() if (elements.size == 3) {
val encrypted = script.substringAfter("encryptedPhotos = '").substringBefore("'") val darkReader = document.selectFirst("#cp_img p")
val decoded = Base64.decode(encrypted, Base64.DEFAULT) if (darkReader != null) {
val aesKey = SecretKeySpec(key, "AES") if (preferences.getBoolean(AUTO_CLEAR_COOKIE_KEY, false)) {
val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding") clearCookies()
cipher.init(Cipher.DECRYPT_MODE, aesKey, IvParameterSpec(key)) }
val decrypted = String(cipher.doFinal(decoded)) throw Exception(darkReader.text())
val jsonArray = json.parseToJsonElement(decrypted).jsonArray }
return jsonArray.mapIndexed { index, it -> }
Page(index, imageUrl = "${it.jsonObject["img_url"]!!.jsonPrimitive.content}?v=20220724") elements.forEachIndexed { index, it ->
add(Page(index, "", it.attr("data-r-src")))
} }
} }