Compare commits

...

3 Commits

Author SHA1 Message Date
tom5079
7f3f17d08e image fix 2025-03-23 10:43:17 -07:00
tom5079
72937cdd42 thumbnail fix 2025-03-23 10:31:12 -07:00
tom5079
9c878f5e44 fix image loading 2025-03-23 10:13:41 -07:00
5 changed files with 31 additions and 15 deletions

View File

@@ -19,7 +19,7 @@ android {
minSdk = 21
targetSdk = 35
versionCode = 70
versionName = "5.3.19"
versionName = "5.3.22"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}

View File

@@ -12,7 +12,7 @@
"filters": [],
"attributes": [],
"versionCode": 70,
"versionName": "5.3.19",
"versionName": "5.3.22",
"outputFile": "app-release.apk"
}
],

View File

@@ -218,30 +218,38 @@ object gg {
}
}
suspend fun subdomainFromURL(url: String, base: String? = null): String {
var retval = "b"
suspend fun subdomainFromURL(url: String, base: String? = null, dir: String? = null): String {
var retval = ""
if (!base.isNullOrBlank())
retval = base
if (base.isNullOrBlank()) {
when {
dir == "webp" -> retval = "w"
dir == "avif" -> retval = "a"
}
}
val b = 16
val r = Regex("""/[0-9a-f]{61}([0-9a-f]{2})([0-9a-f])""")
val m = r.find(url) ?: return "a"
val m = r.find(url) ?: return ""
val g = m.groupValues.let { it[2] + it[1] }.toIntOrNull(b)
if (g != null) {
retval = (97 + gg.m(g)).toChar().toString() + retval
retval = if (base.isNullOrEmpty()) {
retval + (1 + gg.m(g)).toString()
} else {
(97 + gg.m(g)).toChar().toString() + base
}
}
return retval
}
suspend fun urlFromUrl(url: String, base: String? = null): String {
suspend fun urlFromUrl(url: String, base: String? = null, dir: String? = null): String {
return url.replace(
Regex("""//..?\.(?:gold-usergeneratedcontent\.net|hitomi\.la)/"""),
"//${subdomainFromURL(url, base)}.gold-usergeneratedcontent.net/"
"//${subdomainFromURL(url, base, dir)}.gold-usergeneratedcontent.net/"
)
}
@@ -258,8 +266,16 @@ suspend fun urlFromHash(
ext: String? = null,
): String {
val ext = ext ?: dir ?: image.name.takeLastWhile { it != '.' }
val dir = dir ?: "images"
return "https://a.gold-usergeneratedcontent.net/$dir/${fullPathFromHash(image.hash)}.$ext"
return buildString {
append("https://a.gold-usergeneratedcontent.net/")
if (dir != "webp" && dir != "avif") {
append(dir)
append("/")
}
append(fullPathFromHash(image.hash))
append(".")
append(ext)
}
}
suspend fun urlFromUrlFromHash(
@@ -272,13 +288,13 @@ suspend fun urlFromUrlFromHash(
if (base == "tn")
urlFromUrl(
"https://a.gold-usergeneratedcontent.net/$dir/${realFullPathFromHash(image.hash)}.$ext",
base
base,
)
else
urlFromUrl(urlFromHash(galleryID, image, dir, ext), base)
urlFromUrl(urlFromHash(galleryID, image, dir, ext), base, dir)
suspend fun imageUrlFromImage(galleryID: Int, image: GalleryFiles, noWebp: Boolean): String {
return urlFromUrlFromHash(galleryID, image, "webp", null, "a")
return urlFromUrlFromHash(galleryID, image, "webp")
// return when {
// noWebp ->
// urlFromUrlFromHash(galleryID, image)