mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-14 19:01:15 +00:00
feat(webtoons): Enhance search and filtering logic
This commit is contained in:
@@ -69,20 +69,36 @@ class DefaultExtension extends MProvider {
|
|||||||
const keyword = query.trim().replace(/\s+/g, "+");
|
const keyword = query.trim().replace(/\s+/g, "+");
|
||||||
const baseurl = this.source.baseUrl;
|
const baseurl = this.source.baseUrl;
|
||||||
let url = `${baseurl}/${this.langCode()}`;
|
let url = `${baseurl}/${this.langCode()}`;
|
||||||
|
let hasNextPage = false;
|
||||||
|
|
||||||
if (query !== "") {
|
const getFilterValue = (type, defaultValue = "") => {
|
||||||
url += `/search/${filters[0].values[filters[0].state].value}?keyword=${keyword}&page=${page}`;
|
const filter = filters.find((f) => f.type === type);
|
||||||
} else if (filters) {
|
return filter?.values?.[filter.state]?.value ?? defaultValue;
|
||||||
url += `/genres/${filters[2].values[filters[2].state].value}`;
|
};
|
||||||
|
if (query) {
|
||||||
|
url += `/search/${getFilterValue("searchType")}?keyword=${keyword}&page=${page}`;
|
||||||
|
hasNextPage = true;
|
||||||
|
} else {
|
||||||
|
const sortOrder = getFilterValue("sortOrder");
|
||||||
|
const rankingType = getFilterValue("rankingType");
|
||||||
|
const weekday = getFilterValue("weekday");
|
||||||
|
const genreType = getFilterValue("genre");
|
||||||
|
|
||||||
|
if (rankingType) {
|
||||||
|
// const genreParam = genreType ? `&subTabGenreCode=${genreType}` : "";
|
||||||
|
url += `/ranking/${rankingType}`;
|
||||||
|
} else if (weekday) {
|
||||||
|
url += `/originals/${weekday}?sortOrder=${sortOrder}`;
|
||||||
|
} else if (genreType) {
|
||||||
|
url += `/genres/${genreType}?sortOrder=${sortOrder}`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const res = await new Client().get(url);
|
const res = await new Client().get(url);
|
||||||
const doc = new Document(res.body);
|
const doc = new Document(res.body);
|
||||||
const list = this.mangaFromElement(doc);
|
|
||||||
const hasNextPage = list.length !== 0;
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
list,
|
list: this.mangaFromElement(doc),
|
||||||
hasNextPage,
|
hasNextPage,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -313,113 +329,242 @@ class DefaultExtension extends MProvider {
|
|||||||
value: "canvas",
|
value: "canvas",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
state: 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: "sort",
|
type: "separator",
|
||||||
name: "Official or Challenge",
|
type_name: "SeparatorFilter",
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
type: "rankingType",
|
||||||
|
name: "Ranking Category",
|
||||||
type_name: "SelectFilter",
|
type_name: "SelectFilter",
|
||||||
values: [
|
values: [
|
||||||
{
|
{
|
||||||
type_name: "SelectOption",
|
type_name: "SelectOption",
|
||||||
name: "Any",
|
name: "Not Selected",
|
||||||
value: "any",
|
value: "",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type_name: "SelectOption",
|
type_name: "SelectOption",
|
||||||
name: "Official only",
|
name: "Trending",
|
||||||
value: "official",
|
value: "trending",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type_name: "SelectOption",
|
type_name: "SelectOption",
|
||||||
name: "Challenge only",
|
name: "Popular",
|
||||||
value: "challenge",
|
value: "popular",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Originals",
|
||||||
|
value: "originals",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Canvas",
|
||||||
|
value: "canvas",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: "categories",
|
type: "separator",
|
||||||
|
type_name: "SeparatorFilter",
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
type: "sortOrder",
|
||||||
|
name: "Sort By (For Schedule & Genres)",
|
||||||
|
type_name: "SelectFilter",
|
||||||
|
values: [
|
||||||
|
{ type_name: "SelectOption", name: "Popular (MANA)", value: "MANA" },
|
||||||
|
{ type_name: "SelectOption", name: "Likes", value: "LIKEIT" },
|
||||||
|
{ type_name: "SelectOption", name: "Newest", value: "UPDATE" },
|
||||||
|
],
|
||||||
|
state: 0,
|
||||||
|
appliesTo: ["weekday", "genre"],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
type: "separator",
|
||||||
|
type_name: "SeparatorFilter",
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
type: "weekday",
|
||||||
|
name: "Update Schedule",
|
||||||
|
type_name: "SelectFilter",
|
||||||
|
values: [
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Day",
|
||||||
|
value: "",
|
||||||
|
data: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Monday",
|
||||||
|
value: "monday",
|
||||||
|
data: "MONDAY",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Tuesday",
|
||||||
|
value: "tuesday",
|
||||||
|
data: "TUESDAY",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Wednesday",
|
||||||
|
value: "wednesday",
|
||||||
|
data: "WEDNESDAY",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Thursday",
|
||||||
|
value: "thursday",
|
||||||
|
data: "THURSDAY",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Friday",
|
||||||
|
value: "friday",
|
||||||
|
data: "FRIDAY",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Saturday",
|
||||||
|
value: "saturday",
|
||||||
|
data: "SATURDAY",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Sunday",
|
||||||
|
value: "sunday",
|
||||||
|
data: "SUNDAY",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Completed",
|
||||||
|
value: "complete",
|
||||||
|
data: "COMPLETE",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
type: "genre",
|
||||||
name: "Genre",
|
name: "Genre",
|
||||||
type_name: "SelectFilter",
|
type_name: "SelectFilter",
|
||||||
values: [
|
values: [
|
||||||
{
|
{
|
||||||
type_name: "SelectOption",
|
type_name: "SelectOption",
|
||||||
name: "All",
|
name: "All Genres",
|
||||||
value: "",
|
value: "",
|
||||||
},
|
data: "",
|
||||||
{
|
|
||||||
type_name: "SelectOption",
|
|
||||||
name: "Action",
|
|
||||||
value: "action",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type_name: "SelectOption",
|
|
||||||
name: "Comedy",
|
|
||||||
value: "comedy",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type_name: "SelectOption",
|
type_name: "SelectOption",
|
||||||
name: "Drama",
|
name: "Drama",
|
||||||
value: "drama",
|
value: "drama",
|
||||||
|
data: "DRAMA",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type_name: "SelectOption",
|
type_name: "SelectOption",
|
||||||
name: "Fantasy",
|
name: "Fantasy",
|
||||||
value: "fantasy",
|
value: "fantasy",
|
||||||
|
data: "FANTASY",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type_name: "SelectOption",
|
type_name: "SelectOption",
|
||||||
name: "Heartwarming",
|
name: "Comedy",
|
||||||
value: "heartwarming",
|
value: "comedy",
|
||||||
|
data: "COMEDY",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type_name: "SelectOption",
|
type_name: "SelectOption",
|
||||||
name: "Historical",
|
name: "Action",
|
||||||
value: "historical",
|
value: "action",
|
||||||
|
data: "ACTION",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type_name: "SelectOption",
|
type_name: "SelectOption",
|
||||||
name: "Horror",
|
name: "Slice of Life",
|
||||||
value: "horror",
|
value: "slice_of_life",
|
||||||
},
|
data: "SLICE_OF_LIFE",
|
||||||
{
|
|
||||||
type_name: "SelectOption",
|
|
||||||
name: "Informative",
|
|
||||||
value: "tiptoon",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type_name: "SelectOption",
|
|
||||||
name: "Mystery",
|
|
||||||
value: "mystery",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type_name: "SelectOption",
|
type_name: "SelectOption",
|
||||||
name: "Romance",
|
name: "Romance",
|
||||||
value: "romance",
|
value: "romance",
|
||||||
},
|
data: "ROMANCE",
|
||||||
{
|
|
||||||
type_name: "SelectOption",
|
|
||||||
name: "Sci-fi",
|
|
||||||
value: "sf",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type_name: "SelectOption",
|
|
||||||
name: "Slice of life",
|
|
||||||
value: "slice_of_life",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type_name: "SelectOption",
|
|
||||||
name: "Sports",
|
|
||||||
value: "sports",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type_name: "SelectOption",
|
type_name: "SelectOption",
|
||||||
name: "Superhero",
|
name: "Superhero",
|
||||||
value: "super_hero",
|
value: "super_hero",
|
||||||
|
data: "SUPER_HERO",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Sci-Fi",
|
||||||
|
value: "sf",
|
||||||
|
data: "SF",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Thriller",
|
||||||
|
value: "thriller",
|
||||||
|
data: "THRILLER",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type_name: "SelectOption",
|
type_name: "SelectOption",
|
||||||
name: "Supernatural",
|
name: "Supernatural",
|
||||||
value: "supernatural",
|
value: "supernatural",
|
||||||
|
data: "SUPERNATURAL",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Mystery",
|
||||||
|
value: "mystery",
|
||||||
|
data: "MYSTERY",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Sports",
|
||||||
|
value: "sports",
|
||||||
|
data: "SPORTS",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Historical",
|
||||||
|
value: "historical",
|
||||||
|
data: "HISTORICAL",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Heartwarming",
|
||||||
|
value: "heartwarming",
|
||||||
|
data: "HEARTWARMING",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Horror",
|
||||||
|
value: "horror",
|
||||||
|
data: "HORROR",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Graphic Novel",
|
||||||
|
value: "graphic_novel",
|
||||||
|
data: "GRAPHIC_NOVEL",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type_name: "SelectOption",
|
||||||
|
name: "Informative",
|
||||||
|
value: "tiptoon",
|
||||||
|
data: "TIPTOON",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user