diff --git a/src/zh/baozimanhua/CHANGELOG.md b/src/zh/baozimanhua/CHANGELOG.md new file mode 100644 index 000000000..907aa294a --- /dev/null +++ b/src/zh/baozimanhua/CHANGELOG.md @@ -0,0 +1,18 @@ +## 1.2.4 (2022-05-14) + +- 图源名改为中文 +- 自动切除图片中的 banner +- 在设置中可以选择镜像网址 +- 更新解析选择器和地址 + +## 1.2.3 (2022-01-27) + +- 修复图片列表解析 + +## 1.2.2 (2021-12-06) + +- (批量更改) 修复安卓 12 URL 跳转 + +## 1.2.1 (2021-08-31) + +- 第一版 diff --git a/src/zh/baozimanhua/banner.jpg b/src/zh/baozimanhua/banner.jpg new file mode 100644 index 000000000..4c2f68861 Binary files /dev/null and b/src/zh/baozimanhua/banner.jpg differ diff --git a/src/zh/baozimanhua/build.gradle b/src/zh/baozimanhua/build.gradle index 5e3ea9ee2..a55f6c024 100644 --- a/src/zh/baozimanhua/build.gradle +++ b/src/zh/baozimanhua/build.gradle @@ -1,12 +1,11 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' -apply plugin: 'kotlinx-serialization' ext { extName = 'Baozimanhua' pkgNameSuffix = 'zh.baozimanhua' extClass = '.Baozimanhua' - extVersionCode = 3 + extVersionCode = 4 } apply from: "$rootDir/common.gradle" diff --git a/src/zh/baozimanhua/convert_banner.py b/src/zh/baozimanhua/convert_banner.py new file mode 100644 index 000000000..74f8a42e2 --- /dev/null +++ b/src/zh/baozimanhua/convert_banner.py @@ -0,0 +1,17 @@ +from base64 import b64encode + +with open('banner.jpg', 'rb') as f: + data = f.read() + +head = b'''\ +package eu.kanade.tachiyomi.extension.zh.baozimanhua + +const val BANNER_BASE64 = "\ +''' + +tail = b'"\n' + +with open('src/eu/kanade/tachiyomi/extension/zh/baozimanhua/BannerData.kt', 'wb') as f: + f.write(head) + f.write(b64encode(data)) + f.write(tail) diff --git a/src/zh/baozimanhua/res/mipmap-hdpi/ic_launcher.png b/src/zh/baozimanhua/res/mipmap-hdpi/ic_launcher.png index dbd8c099c..db0ae6fe4 100644 Binary files a/src/zh/baozimanhua/res/mipmap-hdpi/ic_launcher.png and b/src/zh/baozimanhua/res/mipmap-hdpi/ic_launcher.png differ diff --git a/src/zh/baozimanhua/res/mipmap-mdpi/ic_launcher.png b/src/zh/baozimanhua/res/mipmap-mdpi/ic_launcher.png index 6dc41ceda..91380012a 100644 Binary files a/src/zh/baozimanhua/res/mipmap-mdpi/ic_launcher.png and b/src/zh/baozimanhua/res/mipmap-mdpi/ic_launcher.png differ diff --git a/src/zh/baozimanhua/res/mipmap-xhdpi/ic_launcher.png b/src/zh/baozimanhua/res/mipmap-xhdpi/ic_launcher.png index 8e77a7ad4..a0e83cd72 100644 Binary files a/src/zh/baozimanhua/res/mipmap-xhdpi/ic_launcher.png and b/src/zh/baozimanhua/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/src/zh/baozimanhua/res/mipmap-xxhdpi/ic_launcher.png b/src/zh/baozimanhua/res/mipmap-xxhdpi/ic_launcher.png index db1285618..6e32122a2 100644 Binary files a/src/zh/baozimanhua/res/mipmap-xxhdpi/ic_launcher.png and b/src/zh/baozimanhua/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/src/zh/baozimanhua/res/mipmap-xxxhdpi/ic_launcher.png b/src/zh/baozimanhua/res/mipmap-xxxhdpi/ic_launcher.png index 05e91a040..8f3fa04e2 100644 Binary files a/src/zh/baozimanhua/res/mipmap-xxxhdpi/ic_launcher.png and b/src/zh/baozimanhua/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/src/zh/baozimanhua/res/web_hi_res_512.png b/src/zh/baozimanhua/res/web_hi_res_512.png index 107ec6f1b..087cc7338 100644 Binary files a/src/zh/baozimanhua/res/web_hi_res_512.png and b/src/zh/baozimanhua/res/web_hi_res_512.png differ diff --git a/src/zh/baozimanhua/src/eu/kanade/tachiyomi/extension/zh/baozimanhua/BannerData.kt b/src/zh/baozimanhua/src/eu/kanade/tachiyomi/extension/zh/baozimanhua/BannerData.kt new file mode 100644 index 000000000..0f626fba5 --- /dev/null +++ b/src/zh/baozimanhua/src/eu/kanade/tachiyomi/extension/zh/baozimanhua/BannerData.kt @@ -0,0 +1,3 @@ +package eu.kanade.tachiyomi.extension.zh.baozimanhua + +const val BANNER_BASE64 = "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" diff --git a/src/zh/baozimanhua/src/eu/kanade/tachiyomi/extension/zh/baozimanhua/BannerInterceptor.kt b/src/zh/baozimanhua/src/eu/kanade/tachiyomi/extension/zh/baozimanhua/BannerInterceptor.kt new file mode 100644 index 000000000..87c32f64d --- /dev/null +++ b/src/zh/baozimanhua/src/eu/kanade/tachiyomi/extension/zh/baozimanhua/BannerInterceptor.kt @@ -0,0 +1,84 @@ +package eu.kanade.tachiyomi.extension.zh.baozimanhua + +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.util.Base64 +import okhttp3.Interceptor +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.Response +import okhttp3.ResponseBody.Companion.toResponseBody +import java.io.ByteArrayOutputStream +import kotlin.math.abs + +class BannerInterceptor : Interceptor { + private val banner: Bitmap by lazy { + val buffer = Base64.decode(BANNER_BASE64, Base64.DEFAULT) + BitmapFactory.decodeByteArray(buffer, 0, buffer.size) + } + private val w by lazy { banner.width } + private val h by lazy { banner.height } + private val size by lazy { w * h } + private val bannerBuffer by lazy { + val buffer = IntArray(size) + banner.getPixels(buffer, 0, w, 0, 0, w, h) + banner.recycle() + buffer + } + private val threshold by lazy { w * h * 3 / 2 } // 0.5 per pixel per channel + + override fun intercept(chain: Interceptor.Chain): Response { + val url = chain.request().url.toString() + val response = chain.proceed(chain.request()) + if (!url.endsWith(COMIC_IMAGE_SUFFIX)) return response + val body = response.body!! + val contentType = body.contentType() + val content = body.bytes() + val bitmap = BitmapFactory.decodeByteArray(content, 0, content.size) + val position = checkBanner(bitmap) + return if (position == null) { + response.newBuilder().body(content.toResponseBody(contentType)).build() + } else { + val result = Bitmap.createBitmap( + bitmap, 0, + when (position) { + BannerPosition.TOP -> h + BannerPosition.BOTTOM -> 0 + }, + bitmap.width, bitmap.height - h + ) + val output = ByteArrayOutputStream() + result.compress(Bitmap.CompressFormat.JPEG, 90, output) + val responseBody = output.toByteArray().toResponseBody("image/jpeg".toMediaType()) + response.newBuilder().body(responseBody).build() + } + } + + private fun checkBanner(image: Bitmap): BannerPosition? { + if (image.width < w || image.height < h) return null + if ((image.width - w) % 2 != 0) return null + val pad = (image.width - w) / 2 + val buf = IntArray(size) + image.getPixels(buf, 0, w, pad, 0, w, h) // top + if (isIdentical(bannerBuffer, buf)) return BannerPosition.TOP + image.getPixels(buf, 0, w, pad, image.height - h, w, h) // bottom + if (isIdentical(bannerBuffer, buf)) return BannerPosition.BOTTOM + return null + } + + private fun isIdentical(a: IntArray, b: IntArray): Boolean { + var diff = 0 + for (i in 0 until size) { + val pixel0 = a[i] + val pixel1 = b[i] + diff += abs((pixel0 and 0xFF) - (pixel1 and 0xFF)) + diff += abs((pixel0 shr 8 and 0xFF) - (pixel1 shr 8 and 0xFF)) + diff += abs((pixel0 shr 16 and 0xFF) - (pixel1 shr 16 and 0xFF)) + if (diff > threshold) return false + } + return true + } + + private enum class BannerPosition { TOP, BOTTOM } +} + +const val COMIC_IMAGE_SUFFIX = "#baozi" diff --git a/src/zh/baozimanhua/src/eu/kanade/tachiyomi/extension/zh/baozimanhua/Baozimanhua.kt b/src/zh/baozimanhua/src/eu/kanade/tachiyomi/extension/zh/baozimanhua/Baozimanhua.kt index 7f263b239..5c72b8a64 100644 --- a/src/zh/baozimanhua/src/eu/kanade/tachiyomi/extension/zh/baozimanhua/Baozimanhua.kt +++ b/src/zh/baozimanhua/src/eu/kanade/tachiyomi/extension/zh/baozimanhua/Baozimanhua.kt @@ -1,7 +1,11 @@ package eu.kanade.tachiyomi.extension.zh.baozimanhua +import android.app.Application +import android.content.SharedPreferences +import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.asObservableSuccess +import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.MangasPage @@ -16,18 +20,27 @@ import okhttp3.Response import org.jsoup.nodes.Document import org.jsoup.nodes.Element import rx.Observable +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get -class Baozimanhua : ParsedHttpSource() { +class Baozimanhua : ParsedHttpSource(), ConfigurableSource { - override val name = "Baozimanhua" + override val id = 5724751873601868259 - override val baseUrl = "https://cn.baozimh.com" + override val name = "包子漫画" + + private val preferences: SharedPreferences by lazy { + Injekt.get().getSharedPreferences("source_$id", 0x0000) + } + + override val baseUrl = "https://${preferences.getString(MIRROR_PREF, MIRRORS[0])}" override val lang = "zh" override val supportsLatest = true - override val client: OkHttpClient = network.cloudflareClient + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .addNetworkInterceptor(BannerInterceptor()).build() override fun chapterListSelector(): String = "div.pure-g[id^=chapter] > div" @@ -42,7 +55,7 @@ class Baozimanhua : ParsedHttpSource() { override fun chapterFromElement(element: Element): SChapter { return SChapter.create().apply { - url = element.select("a").attr("href").trim() + setUrlWithoutDomain(element.select("a").attr("href").trim()) name = element.text() } } @@ -51,7 +64,7 @@ class Baozimanhua : ParsedHttpSource() { override fun popularMangaFromElement(element: Element): SManga { return SManga.create().apply { - url = element.attr("href")!!.trim() + setUrlWithoutDomain(element.attr("href")!!.trim()) title = element.attr("title")!!.trim() thumbnail_url = element.select("> amp-img").attr("src")!!.trim() } @@ -59,7 +72,7 @@ class Baozimanhua : ParsedHttpSource() { override fun popularMangaNextPageSelector() = throw java.lang.UnsupportedOperationException("Not used.") - override fun popularMangaRequest(page: Int): Request = GET("https://www.baozimh.com/classify", headers) + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/classify", headers) override fun popularMangaParse(response: Response): MangasPage { val document = response.asJsoup() @@ -104,8 +117,8 @@ class Baozimanhua : ParsedHttpSource() { } override fun pageListParse(document: Document): List { - val pages = document.select("section.comic-contain > amp-img").mapIndexed() { index, element -> - Page(index, imageUrl = element.attr("src").trim()) + val pages = document.select(".comic-contain > .chapter-img > img").mapIndexed { index, element -> + Page(index, imageUrl = element.attr("data-src").trim() + COMIC_IMAGE_SUFFIX) } return pages } @@ -301,7 +314,28 @@ class Baozimanhua : ParsedHttpSource() { ) ) + override fun setupPreferenceScreen(screen: PreferenceScreen) { + val mirrorPref = androidx.preference.ListPreference(screen.context).apply { + key = MIRROR_PREF + title = MIRROR_PREF_TITLE + entries = MIRRORS + entryValues = MIRRORS + summary = MIRROR_PREF_SUMMARY + + setDefaultValue(MIRRORS[0]) + setOnPreferenceChangeListener { _, newValue -> + preferences.edit().putString(MIRROR_PREF, newValue as String).commit() + } + } + screen.addPreference(mirrorPref) + } + companion object { const val ID_SEARCH_PREFIX = "id:" + + private const val MIRROR_PREF = "MIRROR" + private const val MIRROR_PREF_TITLE = "使用镜像网址" + private const val MIRROR_PREF_SUMMARY = "使用镜像网址。重启软件生效。" + private val MIRRORS = arrayOf("cn.baozimh.com", "cn.webmota.com") } }