anime(Animeonsen): Added search

This commit is contained in:
Swakshan
2025-03-28 22:09:54 +05:30
parent f28ae2e662
commit f22116f1d9

View File

@@ -6,7 +6,7 @@ const mangayomiSources = [{
"iconUrl": "https://www.google.com/s2/favicons?sz=256&domain=https://www.animeonsen.xyz", "iconUrl": "https://www.google.com/s2/favicons?sz=256&domain=https://www.animeonsen.xyz",
"typeSource": "single", "typeSource": "single",
"itemType": 1, "itemType": 1,
"version": "0.0.1", "version": "0.0.2",
"pkgPath": "anime/src/all/animeonsen.js" "pkgPath": "anime/src/all/animeonsen.js"
}]; }];
@@ -19,7 +19,7 @@ class DefaultExtension extends MProvider {
getPreference(key) { getPreference(key) {
return new SharedPreferences().get(key); return new SharedPreferences().get(key);
} }
async getToken() { async getToken() {
const preferences = new SharedPreferences(); const preferences = new SharedPreferences();
var token_ts = parseInt(preferences.getString("animeosen_token_expiry_at", "0")) var token_ts = parseInt(preferences.getString("animeosen_token_expiry_at", "0"))
@@ -53,16 +53,36 @@ class DefaultExtension extends MProvider {
brToken = await this.getToken() brToken = await this.getToken()
} }
return { Authorization: `Bearer ${brToken}` } return {
'Authorization': `Bearer ${brToken}`,
'content-type': "application/json"
}
} }
async request(slug, body = {}) { async request(slug, body = {}) {
var headers = await this.getHeaders(slug)
if (slug.endsWith("/search")) {
var api = `https://search.animeonsen.xyz${slug}`
var res = await this.client.post(api, headers, body)
return JSON.parse(res.body)
}
var api = `${this.source.apiUrl}${slug}` var api = `${this.source.apiUrl}${slug}`
var headers = await this.getHeaders(api) var res = await this.client.get(api, headers)
var res = await this.client.get(api, headers, body)
return JSON.parse(res.body) return JSON.parse(res.body)
} }
animeContent(anime, pref_name, imgRes) {
var name_eng = anime.content_title_en
var name_jp = anime.content_title
var name = pref_name == "jpn" ? name_jp : name_eng;
var link = anime.content_id
var imageUrl = `${this.source.apiUrl}/v4/image/${imgRes}/${link}`
return { name, imageUrl, link };
}
async getHome(page) { async getHome(page) {
var limit = 20 var limit = 20
var start = (page - 1) * limit; var start = (page - 1) * limit;
@@ -72,16 +92,11 @@ class DefaultExtension extends MProvider {
var pref_name = this.getPreference("animeonsen__pref_title_lang") var pref_name = this.getPreference("animeonsen__pref_title_lang")
var imgRes = this.getPreference("animeonsen__pref_img_res") var imgRes = this.getPreference("animeonsen__pref_img_res")
var hasNextPage = res.cursor.next[0] var hasNextPage = res.cursor.next[0]
var list = [] var list = []
for (var anime of res.content) { for (var anime of res.content) {
var name_eng = anime.content_title_en list.push(this.animeContent(anime, pref_name, imgRes));
var name_jp = anime.content_title
var name = pref_name == "jpn" ? name_jp : name_eng;
var link = anime.content_id
var imageUrl = `${this.source.apiUrl}/v4/image/${imgRes}/${link}`
list.push({ name, imageUrl, link });
} }
return { list, hasNextPage } return { list, hasNextPage }
} }
@@ -96,7 +111,32 @@ class DefaultExtension extends MProvider {
return await this.getHome(page) return await this.getHome(page)
} }
async search(query, page, filters) { async search(query, page, filters) {
throw new Error("search not implemented"); var slug = "/indexes/content/search"
var limit = 30;
var offset = (page - 1) * limit;
var nextOffset = offset + limit;
var params = { limit, offset, q: query };
var res = await this.request(slug, params);
var estimatedTotalHits = res.estimatedTotalHits
var hasNextPage = estimatedTotalHits > nextOffset;
var list = []
var hits = res.hits
var pref_name = this.getPreference("animeonsen__pref_title_lang")
var imgRes = this.getPreference("animeonsen__pref_img_res")
if (hits.length > 0) {
for (var anime of hits) {
list.push(this.animeContent(anime, pref_name, imgRes));
}
}
return { list, hasNextPage }
} }
async getDetail(url) { async getDetail(url) {
throw new Error("getDetail not implemented"); throw new Error("getDetail not implemented");