11package com.lagradost.quicknovel.providers
22
33import com.fasterxml.jackson.annotation.JsonProperty
4+ import com.lagradost.quicknovel.ChapterData
45import com.lagradost.quicknovel.ErrorLoadingException
56import com.lagradost.quicknovel.LoadResponse
67import 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
399435object 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 {
444480object 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