From 827c01ff52b2d5f0d1fc526870255afd859d2434 Mon Sep 17 00:00:00 2001 From: xMohnad Date: Fri, 20 Jun 2025 20:00:15 +0000 Subject: [PATCH] kolnovel: Add novelFromJson method and implement search functionality --- javascript/novel/src/ar/kolnovel.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/javascript/novel/src/ar/kolnovel.js b/javascript/novel/src/ar/kolnovel.js index c2687b09..a685cecb 100644 --- a/javascript/novel/src/ar/kolnovel.js +++ b/javascript/novel/src/ar/kolnovel.js @@ -46,6 +46,17 @@ class DefaultExtension extends MProvider { return { list, hasNextPage }; } + novelFromJson(json) { + const list = []; + for (const el of json.series[0].all) { + const name = this.cleanTitle(el.post_title); + const imageUrl = el.post_image; + const link = el.post_link; + list.push({ name, imageUrl, link }); + } + return { list, hasNextPage: false }; + } + async getPopular(page) { const res = await new Client().get( `${this.getBaseUrl()}/series/?page=${page}&order=popular`, @@ -63,7 +74,17 @@ class DefaultExtension extends MProvider { } async search(query, page, filters) { - throw new Error("search not implemented"); + const keyword = query.trim().replace(/\s+/g, "+"); + if (keyword) { + const res = await new Client().post( + `${this.getBaseUrl()}/wp-admin/admin-ajax.php`, + { + "Content-Type": "application/x-www-form-urlencoded", + }, + `action=ts_ac_do_search&ts_ac_query=${keyword}`, + ); + return this.novelFromJson(JSON.parse(res.body)); + } } toStatus(status) {