Skip to content

Commit 6323668

Browse files
committed
Fixed WtrLab, but only raw
1 parent 6d282b6 commit 6323668

File tree

1 file changed

+71
-33
lines changed

1 file changed

+71
-33
lines changed

app/src/main/java/com/lagradost/quicknovel/providers/WtrLabProvider.kt

Lines changed: 71 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.lagradost.quicknovel.providers
22

33
import com.fasterxml.jackson.annotation.JsonProperty
4+
import com.lagradost.quicknovel.ChapterData
45
import com.lagradost.quicknovel.ErrorLoadingException
56
import com.lagradost.quicknovel.LoadResponse
67
import com.lagradost.quicknovel.MainAPI
@@ -38,6 +39,29 @@ class WtrLabProvider : MainAPI() {
3839
}
3940

4041

42+
private suspend fun getChapterRange(
43+
url: String,
44+
chaptersJson: ResultJsonResponse.Root,
45+
start: Long,
46+
end: Long
47+
): List<ChapterData> {
48+
val chapterDataUrl =
49+
"$mainUrl/api/chapters/${chaptersJson.props.pageProps.serie.serieData.rawId}?start=$start&end=$end"
50+
println(chapterDataUrl)
51+
val chaptersDataJson =
52+
app.get(chapterDataUrl).text
53+
val chaptersData = parseJson<ResultChaptersJsonResponse.Root>(chaptersDataJson)
54+
55+
return chaptersData.chapters.map { chapter ->
56+
newChapterData(
57+
"#${chapter.order} ${chapter.title}",
58+
"${url.trimEnd('/')}/chapter-${chapter.order}"
59+
) {
60+
dateOfRelease = chapter.updatedAt
61+
}
62+
}
63+
}
64+
4165
override suspend fun load(url: String): LoadResponse {
4266
val doc = app.get(url).document
4367
val titleWrap =
@@ -50,20 +74,34 @@ class WtrLabProvider : MainAPI() {
5074

5175
val chaptersJson = parseJson<ResultJsonResponse.Root>(json)
5276

53-
val chapterDataUrl =
54-
"$mainUrl/api/chapters/${chaptersJson.props.pageProps.serie.serieData.id}?start=1&end=${chaptersJson.props.pageProps.serie.serieData.rawChapterCount}"
55-
val chaptersDataJson =
56-
app.get(chapterDataUrl).text
57-
val chaptersData = parseJson<ResultChaptersJsonResponse.Root>(chaptersDataJson)
5877

59-
val chapters = chaptersData.chapters.map { chapter ->
60-
newChapterData(
61-
"#${chapter.order} ${chapter.title}",
62-
"${url.trimEnd('/')}/chapter-${chapter.order}"
63-
) {
64-
dateOfRelease = chapter.updatedAt
65-
}
78+
val chapters = mutableListOf<ChapterData>()
79+
chapters.addAll(
80+
getChapterRange(
81+
url,
82+
chaptersJson,
83+
1,
84+
chaptersJson.props.pageProps.serie.serieData.rawChapterCount
85+
)
86+
)
87+
88+
/*
89+
val chunks = chaptersJson.props.pageProps.serie.serieData.rawChapterCount / 250
90+
val tail = chaptersJson.props.pageProps.serie.serieData.rawChapterCount % 250
91+
for (chunk in 0 until chunks) {
92+
chapters.addAll(getChapterRange(url, chaptersJson, chunk * 250 + 1, chunk * 250 + 250))
6693
}
94+
if (tail > 0) {
95+
chapters.addAll(
96+
getChapterRange(
97+
url,
98+
chaptersJson,
99+
chunks * 250 + 1,
100+
chunks * 250 + tail
101+
)
102+
)
103+
}*/
104+
67105
/*doc.select(".toc-list > .chapter-item").map { select ->
68106
val href = select.attr("href") ?: throw ErrorLoadingException("No href on $select")
69107
val chapterTitle = select.selectFirst("span")?.text() ?: select.text()
@@ -91,13 +129,11 @@ class WtrLabProvider : MainAPI() {
91129

92130
val root = app.post(
93131
"$mainUrl/api/reader/get", data = mapOf(
94-
"chapter_id" to chapter.id.toString(),
95132
"chapter_no" to chapter.slug,
96-
"force_retry" to "false",
97133
"language" to "en",
98134
"raw_id" to chapter.rawId.toString(),
99135
"retry" to "false",
100-
"translate" to "ai",
136+
"translate" to "web", // translate=ai just returns a job and I am too lazy to fix that
101137
)
102138
).parsed<LoadJsonResponse2.Root>()
103139

@@ -187,8 +223,10 @@ object ResultJsonResponse {
187223
)
188224

189225
data class SerieData(
190-
val id: Long,
191-
/*val slug: String,
226+
@JsonProperty("raw_id")
227+
val rawId: Long,
228+
/*
229+
val id: Long,val slug: String,
192230
@JsonProperty("search_text")
193231
val searchText: String,
194232
val status: Long,
@@ -211,8 +249,6 @@ object ResultJsonResponse {
211249
val verified: Boolean,
212250
val from: String,
213251
val author: String,
214-
@JsonProperty("raw_id")
215-
val rawId: Long,
216252
@JsonProperty("ai_enabled")
217253
val aiEnabled: Boolean,
218254
@JsonProperty("released_by")
@@ -240,7 +276,7 @@ object ResultJsonResponse {
240276
val author: String,
241277
val description: String,
242278
@JsonProperty("from_user")
243-
val fromUser: String,
279+
val fromUser: String?,
244280
val raw: Raw,
245281
val image: String,
246282
)
@@ -251,7 +287,7 @@ object ResultJsonResponse {
251287
val description: String,
252288
)
253289

254-
data class Ranks(
290+
/*data class Ranks(
255291
val week: Any?,
256292
val month: Any?,
257293
val all: String,
@@ -393,7 +429,7 @@ object ResultJsonResponse {
393429
val sid: String,
394430
@JsonProperty("serie_slug")
395431
val serieSlug: String,
396-
)
432+
)*/
397433
}
398434

399435
object LoadJsonResponse2 {
@@ -426,7 +462,7 @@ object LoadJsonResponse2 {
426462
)
427463

428464
data class Data2(
429-
val body: List<String>,
465+
val body: List<String> = emptyList(),
430466
/*val hans: String,
431467
val hash: String,
432468
val model: String,
@@ -444,7 +480,7 @@ object LoadJsonResponse2 {
444480
object LoadJsonResponse {
445481
data class Root(
446482
val props: Props,
447-
val page: String,
483+
/*val page: String,
448484
val query: Query,
449485
val buildId: String,
450486
val isFallback: Boolean,
@@ -453,18 +489,19 @@ object LoadJsonResponse {
453489
val locale: String,
454490
val locales: List<String>,
455491
val defaultLocale: String,
456-
val scriptLoader: List<Any?>,
492+
val scriptLoader: List<Any?>,*/
457493
)
458494

459495
data class Props(
460496
val pageProps: PageProps,
461-
@JsonProperty("__N_SSP")
497+
/*@JsonProperty("__N_SSP")
462498
val nSsp: Boolean,
499+
*/
463500
)
464501

465502
data class PageProps(
466503
val serie: Serie,
467-
@JsonProperty("disabe_ads")
504+
/*@JsonProperty("disabe_ads")
468505
val disabeAds: Boolean,
469506
@JsonProperty("server_time")
470507
val serverTime: String,
@@ -473,14 +510,14 @@ object LoadJsonResponse {
473510
@JsonProperty("_sentryTraceData")
474511
val sentryTraceData: String,
475512
@JsonProperty("_sentryBaggage")
476-
val sentryBaggage: String,
513+
val sentryBaggage: String,*/
477514
)
478515

479516
data class Serie(
480-
@JsonProperty("serie_data")
517+
/*@JsonProperty("serie_data")
481518
val serieData: SerieData,
482519
@JsonProperty("default_service")
483-
val defaultService: String,
520+
val defaultService: String,*/
484521
val chapter: Chapter,
485522
)
486523

@@ -520,10 +557,11 @@ object LoadJsonResponse {
520557

521558
data class Chapter(
522559
val id: Long,
523-
@JsonProperty("serie_id")
524-
val serieId: Long,
560+
val slug: String,
525561
@JsonProperty("raw_id")
526562
val rawId: Long,
563+
/*@JsonProperty("serie_id")
564+
val serieId: Long,
527565
val status: Long,
528566
val slug: String,
529567
val name: String,
@@ -535,7 +573,7 @@ object LoadJsonResponse {
535573
@JsonProperty("updated_at")
536574
val updatedAt: String,
537575
val title: String,
538-
val code: String,
576+
val code: String,*/
539577
)
540578

541579
data class ActiveService(

0 commit comments

Comments
 (0)