From 7ee0f13eff9e38ada79cb4624f73b36d6116567d Mon Sep 17 00:00:00 2001 From: Swakshan Date: Mon, 27 Jan 2025 16:41:56 +0530 Subject: [PATCH] extension(Animeparadise): customise latest tab --- javascript/anime/src/en/animeparadise.js | 59 ++++++++++++++++++------ 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/javascript/anime/src/en/animeparadise.js b/javascript/anime/src/en/animeparadise.js index acb0b915..3610bc0e 100644 --- a/javascript/anime/src/en/animeparadise.js +++ b/javascript/anime/src/en/animeparadise.js @@ -6,7 +6,7 @@ const mangayomiSources = [{ "iconUrl": "https://www.google.com/s2/favicons?sz=128&domain=https://animeparadise.moe", "typeSource": "single", "itemType": 1, - "version": "0.0.1", + "version": "0.0.2", "pkgPath": "anime/src/en/animeparadise.js" }]; @@ -15,27 +15,42 @@ class DefaultExtension extends MProvider { throw new Error("getHeaders not implemented"); } - async requestAPI(slug){ + getPreference(key) { + const preferences = new SharedPreferences(); + return preferences.get(key); + } + + async requestAPI(slug) { var api = `${this.source.apiUrl}/${slug}` var response = await new Client().get(api); var body = JSON.parse(response.body); return body; } - async formList(slug){ + async formList(slug) { var jsonData = await this.requestAPI(slug); var list = []; - jsonData.data.forEach(item => { - list.push({ - "name": item.title, - "link": item.link, - "imageUrl": item.posterImage.original - }); - }) - + if ("episodes" in jsonData) { + jsonData.episodes.forEach(item => { + list.push({ + "name": item.origin.title, + "link": item.origin.link, + "imageUrl": item.image + }); + }) + } else { + jsonData.data.forEach(item => { + list.push({ + "name": item.title, + "link": item.link, + "imageUrl": item.posterImage.original + }); + }) + } + return { - "list":list, - "hasNextPage":false + "list": list, + "hasNextPage": false } } @@ -47,7 +62,12 @@ class DefaultExtension extends MProvider { throw new Error("supportsLatest not implemented"); } async getLatestUpdates(page) { - return await this.formList('?sort={"postDate": -1 }') + var slug = '?sort={"postDate": -1 }'; + + var choice = this.getPreference("animeparadise_pref_latest_tab"); + if (choice === "recent_ep") slug = 'ep/recently-added'; + + return await this.formList(slug) } async search(query, page, filters) { throw new Error("search not implemented"); @@ -75,6 +95,15 @@ class DefaultExtension extends MProvider { throw new Error("getFilterList not implemented"); } getSourcePreferences() { - throw new Error("getSourcePreferences not implemented"); + return [{ + key: 'animeparadise_pref_latest_tab', + listPreference: { + title: 'Latest tab category', + summary: 'Anime list to be shown in latest tab', + valueIndex: 0, + entries: ["Recently added anime", "Recently added episode"], + entryValues: ["recent_ani", "recent_ep"] + } + },] } }