From 7d07f1944092665b8737663cde617d3532a6e3a5 Mon Sep 17 00:00:00 2001 From: acite <1498045907@qq.com> Date: Sat, 13 Sep 2025 14:51:09 +0800 Subject: [PATCH] [feat] Bulk Requests --- .../aether/service/AbyssTunnelProxy.kt | 5 +-- .../acitelight/aether/service/ApiInterface.kt | 10 +++++ .../acitelight/aether/service/MediaManager.kt | 38 ++++++++++++++++++- .../aether/service/RecentManager.kt | 12 ++++-- .../acitelight/aether/view/ComicPageView.kt | 2 +- .../aether/viewModel/ComicGridViewModel.kt | 4 +- .../aether/viewModel/ComicPageViewModel.kt | 2 +- .../aether/viewModel/ComicScreenViewModel.kt | 14 +++---- .../aether/viewModel/VideoScreenViewModel.kt | 29 +++++++++----- 9 files changed, 87 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/com/acitelight/aether/service/AbyssTunnelProxy.kt b/app/src/main/java/com/acitelight/aether/service/AbyssTunnelProxy.kt index 6950695..76fdcfe 100644 --- a/app/src/main/java/com/acitelight/aether/service/AbyssTunnelProxy.kt +++ b/app/src/main/java/com/acitelight/aether/service/AbyssTunnelProxy.kt @@ -93,7 +93,7 @@ class AbyssTunnelProxy( // Copy from local InputStream into AbyssStream.write in frames. private suspend fun copyExactSuspend(localIn: InputStream, abyss: AbyssStream) = withContext(coroutineContext) { - val buffer = ByteArray(16 * 1024) + val buffer = ByteArray(64 * 1024) while (true) { val read = localIn.read(buffer) if (read <= 0) @@ -104,13 +104,12 @@ class AbyssTunnelProxy( // Copy from AbyssStream (read frames/decrypt) to local OutputStream private suspend fun copyFromAbyssToLocal(abyss: AbyssStream, localOut: OutputStream) = withContext(coroutineContext) { - val buffer = ByteArray(16 * 1024) + val buffer = ByteArray(64 * 1024) while (true) { val n = abyss.read(buffer, 0, buffer.size) if (n <= 0) break localOut.write(buffer, 0, n) - localOut.flush() } } } \ No newline at end of file diff --git a/app/src/main/java/com/acitelight/aether/service/ApiInterface.kt b/app/src/main/java/com/acitelight/aether/service/ApiInterface.kt index 8dbe9db..21e55e4 100644 --- a/app/src/main/java/com/acitelight/aether/service/ApiInterface.kt +++ b/app/src/main/java/com/acitelight/aether/service/ApiInterface.kt @@ -28,11 +28,21 @@ interface ApiInterface { @Query("token") token: String ): VideoResponse + @POST("api/video/{klass}/bulkquery") + suspend fun queryVideoBulk( + @Path("klass") klass: String, + @Body() id: List, + @Query("token") token: String + ): List + @GET("api/image") suspend fun getComics(@Query("token") token: String): List @GET("api/image/{id}") suspend fun queryComicInfo(@Path("id") id: String, @Query("token") token: String): ComicResponse + @POST("api/image/bulkquery") + suspend fun queryComicInfoBulk(@Body() id: List, @Query("token") token: String): List + @POST("api/image/{id}/bookmark") suspend fun postBookmark(@Path("id") id: String, @Query("token") token: String, @Body bookmark: BookMark) diff --git a/app/src/main/java/com/acitelight/aether/service/MediaManager.kt b/app/src/main/java/com/acitelight/aether/service/MediaManager.kt index 9a7cccc..b99c402 100644 --- a/app/src/main/java/com/acitelight/aether/service/MediaManager.kt +++ b/app/src/main/java/com/acitelight/aether/service/MediaManager.kt @@ -22,7 +22,19 @@ object MediaManager } } - suspend fun listVideos(klass: String, filter: List, callback: (Video) -> Unit) + suspend fun queryVideoKlasses(klass: String): List + { + try + { + val j = ApiClient.api!!.queryVideoClasses(klass, token) + return j.toList() + }catch(e: Exception) + { + return listOf() + } + } + + private suspend fun listVideos(klass: String, filter: List, callback: (Video) -> Unit) { val j = ApiClient.api!!.queryVideoClasses(klass, token) for(it in j) @@ -49,6 +61,17 @@ object MediaManager } } + suspend fun queryVideoBulk(klass: String, id: List): List