Report Kavita extension client info as OPDS reader
Some checks failed
CI / Prepare job (push) Has been cancelled
CI / Build extensions (${{ matrix.chunk.number }}) (push) Has been cancelled
CI / Publish extension repo (push) Has been cancelled
Create Release on Merge / release (push) Has been cancelled
Lock threads / lock (push) Has been cancelled

This commit is contained in:
2026-05-24 00:34:37 +09:00
parent d8937783c5
commit 0f6e579b0b
2 changed files with 12 additions and 10 deletions

View File

@@ -2,7 +2,7 @@ ext {
kmkVersionCode = 1
extName = 'Kavita'
extClass = '.KavitaFactory'
extVersionCode = 31
extVersionCode = 32
isNsfw = false
}

View File

@@ -81,7 +81,6 @@ import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
import java.io.IOException
import java.net.URLEncoder
import java.security.MessageDigest
import java.util.Calendar
import java.util.Locale
@@ -1815,9 +1814,16 @@ class Kavita(private val suffix: String = "") : ConfigurableSource, UnmeteredSou
.equals("true", ignoreCase = true)
private fun readerImageUrl(chapterId: Any, page: Int, extractPdf: Boolean): String =
"$apiUrl/Reader/image?chapterId=$chapterId&page=$page&extractPdf=$extractPdf&saveProgress=true&apiKey=$apiKey&kavitaClient=${urlEncode(kavitaClientHeader())}&deviceId=${urlEncode(deviceFingerprint())}"
private fun urlEncode(value: String): String = URLEncoder.encode(value, "UTF-8")
"$apiUrl/Reader/image".toHttpUrlOrNull()!!.newBuilder()
.addQueryParameter("chapterId", chapterId.toString())
.addQueryParameter("page", page.toString())
.addQueryParameter("extractPdf", extractPdf.toString())
.addQueryParameter("saveProgress", "true")
.addQueryParameter("apiKey", apiKey)
.addQueryParameter("kavitaClient", kavitaClientHeader())
.addQueryParameter("deviceId", deviceFingerprint())
.build()
.toString()
private fun readerPage(index: Int, chapterId: Any, page: Int = index, extractPdf: Boolean = false): Page {
val imageUrl = readerImageUrl(chapterId, page, extractPdf)
@@ -2109,17 +2115,13 @@ class Kavita(private val suffix: String = "") : ConfigurableSource, UnmeteredSou
private fun kavitaClientHeader(): String {
val resources = application.resources
val configuration = resources.configuration
val metrics = resources.displayMetrics
val screenWidth = metrics.widthPixels.coerceAtLeast(0)
val screenHeight = metrics.heightPixels.coerceAtLeast(0)
val smallestWidthDp = configuration.smallestScreenWidthDp
val deviceType = when {
smallestWidthDp >= 600 -> "Tablet"
else -> "Mobile"
}
val orientation = if (screenWidth > screenHeight) "landscape" else "portrait"
return "web-app/${AppInfo.getVersionName()} (Kavita Extension/${AppInfo.getVersionName()}; Android; $deviceType; ${screenWidth}x$screenHeight; $orientation)"
return "opds-client/${AppInfo.getVersionName()} (Kavita Extension; Android; $deviceType)"
}
private fun deviceFingerprint(): String {