Random Gallery Added
Changed tag search behavior Loading time improved for hitomi.la Bug fixed
This commit is contained in:
@@ -16,10 +16,20 @@
|
||||
|
||||
package xyz.quaver
|
||||
|
||||
import kotlinx.serialization.UnstableDefault
|
||||
import kotlinx.serialization.json.Json
|
||||
import java.net.Proxy
|
||||
|
||||
var proxy = Proxy.NO_PROXY
|
||||
|
||||
@OptIn(UnstableDefault::class)
|
||||
var json = Json {
|
||||
isLenient = true
|
||||
ignoreUnknownKeys = true
|
||||
serializeSpecialFloatingPointValues = true
|
||||
useArrayPolymorphism = true
|
||||
}
|
||||
|
||||
fun availableInHiyobi(galleryID: Int) : Boolean {
|
||||
return try {
|
||||
xyz.quaver.hiyobi.getReader(galleryID)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
package xyz.quaver.hitomi
|
||||
|
||||
import kotlinx.serialization.json.Json
|
||||
import xyz.quaver.json
|
||||
import xyz.quaver.proxy
|
||||
import java.net.URL
|
||||
|
||||
@@ -24,7 +24,7 @@ const val protocol = "https:"
|
||||
|
||||
@Suppress("EXPERIMENTAL_API_USAGE")
|
||||
fun getGalleryInfo(galleryID: Int) =
|
||||
Json.nonstrict.parse(
|
||||
json.parse(
|
||||
GalleryInfo.serializer(),
|
||||
URL("$protocol//$domain/galleries/$galleryID.js").openConnection(proxy).getInputStream().use {
|
||||
it.reader().readText()
|
||||
|
||||
@@ -39,7 +39,7 @@ fun sha256(data: ByteArray) : ByteArray {
|
||||
return MessageDigest.getInstance("SHA-256").digest(data)
|
||||
}
|
||||
|
||||
@UseExperimental(ExperimentalUnsignedTypes::class)
|
||||
@OptIn(ExperimentalUnsignedTypes::class)
|
||||
fun hashTerm(term: String) : UByteArray {
|
||||
return sha256(term.toByteArray()).toUByteArray().sliceArray(0 until 4)
|
||||
}
|
||||
@@ -258,9 +258,9 @@ fun getURLAtRange(url: String, range: LongRange) : ByteArray? {
|
||||
}
|
||||
}
|
||||
|
||||
@UseExperimental(ExperimentalUnsignedTypes::class)
|
||||
@OptIn(ExperimentalUnsignedTypes::class)
|
||||
data class Node(val keys: List<UByteArray>, val datas: List<Pair<Long, Int>>, val subNodeAddresses: List<Long>)
|
||||
@UseExperimental(ExperimentalUnsignedTypes::class)
|
||||
@OptIn(ExperimentalUnsignedTypes::class)
|
||||
fun decodeNode(data: ByteArray) : Node {
|
||||
val buffer = ByteBuffer
|
||||
.wrap(data)
|
||||
@@ -302,7 +302,7 @@ fun decodeNode(data: ByteArray) : Node {
|
||||
return Node(keys, datas, subNodeAddresses)
|
||||
}
|
||||
|
||||
@UseExperimental(ExperimentalUnsignedTypes::class)
|
||||
@OptIn(ExperimentalUnsignedTypes::class)
|
||||
fun bSearch(field: String, key: UByteArray, node: Node) : Pair<Long, Int>? {
|
||||
fun compareArrayBuffers(dv1: UByteArray, dv2: UByteArray) : Int {
|
||||
val top = Math.min(dv1.size, dv2.size)
|
||||
|
||||
@@ -17,14 +17,14 @@
|
||||
package xyz.quaver.hiyobi
|
||||
|
||||
import kotlinx.serialization.UnstableDefault
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.list
|
||||
import kotlinx.serialization.builtins.list
|
||||
import org.jsoup.Jsoup
|
||||
import xyz.quaver.Code
|
||||
import xyz.quaver.hitomi.GalleryFiles
|
||||
import xyz.quaver.hitomi.GalleryInfo
|
||||
import xyz.quaver.hitomi.Reader
|
||||
import xyz.quaver.hitomi.protocol
|
||||
import xyz.quaver.json
|
||||
import xyz.quaver.proxy
|
||||
import java.net.URL
|
||||
import javax.net.ssl.HttpsURLConnection
|
||||
@@ -62,14 +62,14 @@ fun renewCookie() : String {
|
||||
}
|
||||
}
|
||||
|
||||
@UseExperimental(UnstableDefault::class)
|
||||
@OptIn(UnstableDefault::class)
|
||||
fun getReader(galleryID: Int) : Reader {
|
||||
val reader = "https://$hiyobi/reader/$galleryID"
|
||||
val url = "https://cdn.hiyobi.me/data/json/${galleryID}_list.json"
|
||||
|
||||
val title = Jsoup.connect(reader).proxy(proxy).get().title()
|
||||
|
||||
val galleryFiles = Json.nonstrict.parse(
|
||||
val galleryFiles = json.parse(
|
||||
GalleryFiles.serializer().list,
|
||||
with(URL(url).openConnection(proxy) as HttpsURLConnection) {
|
||||
setRequestProperty("User-Agent", user_agent)
|
||||
|
||||
Reference in New Issue
Block a user