Fix(template): Madara fixes & clean sources (#920)

* madara:
 - fix search 404 at the end
 - getCheerio instead of calling fetch everytime
 - dragon tea translator
 - fix riwyat search
 - fix riwyat random text
 - sources cleanup
 - daonovel new icon
 - icons cleanup
 - filters for everyone
 - better get_filters
lightnovelwp:
 - better get_filters

* DragonTea fix newline traduction
Riwyat english name

* Update source site URL for HizoManga
This commit is contained in:
Justin COLLON
2024-05-28 10:15:35 +02:00
committed by GitHub
parent 4d5cfc3c1a
commit 020930ed0a
38 changed files with 3716 additions and 164 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 870 B

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

+44 -13
View File
@@ -51,10 +51,23 @@ function getFilters(name: string, html: string) {
});
});
});
if (
filters.filters['m_orderby'].options.length == 0 ||
filters.filters['status[]'].options.length == 0 ||
filters.filters['adult'].options.length == 0 ||
filters.filters['genre[]'].options.length == 0
) {
console.error(
`🚨Error in filters for ${name} please fix manually (${path.join(__dirname, 'filters', name + '.json')})🚨`,
);
}
fs.writeFileSync(
path.join(__dirname, 'filters', name + '.json'),
JSON.stringify(filters, null, 2),
);
console.log(`✅Filters created successfully for ${name}✅`);
}
async function getFiltersFromURL(name: string, url: string) {
@@ -87,19 +100,37 @@ async function askGetFilter() {
"Do you want to get the filters from a URL or the html text? (if url dosen't work try html) (url/html): ",
async (method: string) => {
if (method.toLowerCase() === 'url') {
await readline.question(
EREASE_PREV_LINE +
'Enter the URL (same one as in sources.json): ',
async (url: string) => {
try {
await getFiltersFromURL(name, url);
} catch (e: any) {
console.error('Error while getting filters from', url);
console.log(e.message || e);
}
readline.close();
},
const sources = JSON.parse(
fs.readFileSync(path.join(__dirname, 'sources.json'), 'utf-8'),
);
const source = sources.find((s: any) => s.id === name);
if (source && source.sourceSite) {
console.log('Getting filters from', source.sourceSite);
try {
await getFiltersFromURL(name, source.sourceSite);
} catch (e: any) {
console.error(
'Error while getting filters from',
source.sourceSite,
);
console.log(e.message || e);
}
readline.close();
} else {
await readline.question(
EREASE_PREV_LINE +
'Enter the URL (same one as in sources.json): ',
async (url: string) => {
readline.close();
try {
await getFiltersFromURL(name, url);
} catch (e: any) {
console.error('Error while getting filters from', url);
console.log(e.message || e);
}
},
);
}
} else {
process.stdout.write(
EREASE_PREV_LINE +
@@ -108,7 +139,7 @@ async function askGetFilter() {
);
let html = '';
readline.on('SIGINT', () => {
console.log('Creating filters file');
console.log('Stopeed reading input, creating filters file');
getFilters(name, html);
readline.close();
});
+1 -1
View File
@@ -97,7 +97,7 @@ class LightNovelWPPlugin implements Plugin.PluginBase {
): Promise<Plugin.NovelItem[]> {
const seriesPath = this.options?.seriesPath ?? 'series/';
let url = this.site + seriesPath + '?page=' + pageNo;
if (!filters) filters = {};
if (!filters) filters = this.filters || {};
if (showLatestNovels) url += '&order=latest';
for (const key in filters) {
if (typeof filters[key].value === 'object')
+248
View File
@@ -0,0 +1,248 @@
{
"filters": {
"genre[]": {
"type": "Checkbox",
"label": "Genre",
"value": [],
"options": [
{
"label": "أكشن",
"value": "أكشن"
},
{
"label": "إثارة",
"value": "إثارة"
},
{
"label": "إيسكاي",
"value": "إيسكاي"
},
{
"label": "الحياة اليومية",
"value": "الحياة-اليومية"
},
{
"label": "الحياة مدرسية",
"value": "الحياة-مدرسية"
},
{
"label": "انتقام",
"value": "انتقام"
},
{
"label": "تاريخي",
"value": "تاريخي"
},
{
"label": "تراجيدي",
"value": "تراجيدي"
},
{
"label": "جندر بندر",
"value": "جندر-بندر"
},
{
"label": "جوسي",
"value": "جوسي"
},
{
"label": "حريم",
"value": "حريم"
},
{
"label": "خارق للطبيعة",
"value": "خارق-للطبيعة"
},
{
"label": "خيال",
"value": "خيال"
},
{
"label": "خيال علمي",
"value": "خيال-علمي"
},
{
"label": "دراما",
"value": "دراما"
},
{
"label": "دموي",
"value": "دموي"
},
{
"label": "راشد",
"value": "راشد"
},
{
"label": "رعب",
"value": "رعب"
},
{
"label": "رومانسي",
"value": "رومانسي"
},
{
"label": "رياضة",
"value": "رياضة"
},
{
"label": "زمنكاني",
"value": "زمنكاني"
},
{
"label": "سينين",
"value": "سينين"
},
{
"label": "شريحة من الحياة",
"value": "شريحة-من-الحياة"
},
{
"label": "شوجو",
"value": "شوجو"
},
{
"label": "شونين",
"value": "شونين"
},
{
"label": "صداقة",
"value": "صداقة"
},
{
"label": "طبخ",
"value": "طبخ"
},
{
"label": "عائلي",
"value": "عائلي"
},
{
"label": "غموض",
"value": "غموض"
},
{
"label": "قتال",
"value": "قتال"
},
{
"label": "قوة خارقة",
"value": "قوة-خارقة"
},
{
"label": "كوميدي",
"value": "كوميدي"
},
{
"label": "مغامرات",
"value": "مغامرات"
},
{
"label": "نفسي",
"value": "نفسي"
}
]
},
"op": {
"type": "Switch",
"label": "مع كل التصنيفات المحددة",
"value": false
},
"author": {
"type": "Text",
"label": "المؤلف",
"value": ""
},
"artist": {
"type": "Text",
"label": "الرسام",
"value": ""
},
"release": {
"type": "Text",
"label": "سنة الاصدار",
"value": ""
},
"adult": {
"type": "Picker",
"label": "محتوى للبالغين",
"value": "",
"options": [
{
"label": "الكل",
"value": ""
},
{
"label": "بدون محتوى للبالغين",
"value": "0"
},
{
"label": "محتوى للبالغين فقط",
"value": "1"
}
]
},
"status[]": {
"type": "Checkbox",
"label": "الحالة",
"value": [],
"options": [
{
"label": "مستمرة",
"value": "on-going"
},
{
"label": "Completed",
"value": "end"
},
{
"label": "ألغيت",
"value": "canceled"
},
{
"label": "في الانتظار",
"value": "on-hold"
},
{
"label": "Upcoming",
"value": "upcoming"
}
]
},
"m_orderby": {
"type": "Picker",
"label": "ترتيب حسب :",
"value": "",
"options": [
{
"label": "ملاءمة",
"value": ""
},
{
"label": "أحدث",
"value": "latest"
},
{
"label": "أ-ي",
"value": "alphabet"
},
{
"label": "تقييم",
"value": "rating"
},
{
"label": "الشائع",
"value": "trending"
},
{
"label": "الأكثر مشاهدة",
"value": "views"
},
{
"label": "جديد",
"value": "new-manga"
}
]
}
}
}
@@ -0,0 +1,156 @@
{
"filters": {
"genre[]": {
"type": "Checkbox",
"label": "Genre",
"value": [],
"options": [
{
"label": "Action",
"value": "action"
},
{
"label": "Angst",
"value": "angst"
},
{
"label": "Comedy",
"value": "comedy"
},
{
"label": "Drama",
"value": "drama"
},
{
"label": "Fantasy",
"value": "fantasy"
},
{
"label": "Horror",
"value": "horror"
},
{
"label": "Modern",
"value": "modern"
},
{
"label": "Romance",
"value": "romance"
},
{
"label": "School Life",
"value": "school-life"
},
{
"label": "Sci-fi",
"value": "sci-fi"
},
{
"label": "Tragedy",
"value": "tragedy"
}
]
},
"op": {
"type": "Switch",
"label": "having all selected genres",
"value": false
},
"author": {
"type": "Text",
"label": "Author",
"value": ""
},
"artist": {
"type": "Text",
"label": "Artist",
"value": ""
},
"release": {
"type": "Text",
"label": "Year of Released",
"value": ""
},
"adult": {
"type": "Picker",
"label": "Adult content",
"value": "",
"options": [
{
"label": "All",
"value": ""
},
{
"label": "None adult content",
"value": "0"
},
{
"label": "Only adult content",
"value": "1"
}
]
},
"status[]": {
"type": "Checkbox",
"label": "Status",
"value": [],
"options": [
{
"label": "OnGoing",
"value": "on-going"
},
{
"label": "Completed",
"value": "end"
},
{
"label": "Canceled",
"value": "canceled"
},
{
"label": "On Hold",
"value": "on-hold"
},
{
"label": "Upcoming",
"value": "upcoming"
}
]
},
"m_orderby": {
"type": "Picker",
"label": "Order by",
"value": "",
"options": [
{
"label": "Relevance",
"value": ""
},
{
"label": "Latest",
"value": "latest"
},
{
"label": "A-Z",
"value": "alphabet"
},
{
"label": "Rating",
"value": "rating"
},
{
"label": "Trending",
"value": "trending"
},
{
"label": "Most Views",
"value": "views"
},
{
"label": "New",
"value": "new-manga"
}
]
}
}
}
@@ -0,0 +1,288 @@
{
"filters": {
"genre[]": {
"type": "Checkbox",
"label": "Genre",
"value": [],
"options": [
{
"label": "Action",
"value": "action"
},
{
"label": "Adult",
"value": "adult"
},
{
"label": "Adventure",
"value": "adventure"
},
{
"label": "Comedy",
"value": "comedy"
},
{
"label": "Drama",
"value": "drama-genre"
},
{
"label": "Ecchi",
"value": "ecchi"
},
{
"label": "Fantasy",
"value": "fantasy"
},
{
"label": "Gender Bender",
"value": "gender-bender"
},
{
"label": "Harem",
"value": "harems-novel"
},
{
"label": "Historical",
"value": "historical"
},
{
"label": "Horror",
"value": "horror"
},
{
"label": "Isekai",
"value": "isekai"
},
{
"label": "Josei",
"value": "josei"
},
{
"label": "LGBT+",
"value": "lgbt"
},
{
"label": "Magical Realism",
"value": "magical-realism"
},
{
"label": "Manhwa",
"value": "manhwa"
},
{
"label": "Martial Arts",
"value": "martial-arts-genre"
},
{
"label": "Mature",
"value": "mature"
},
{
"label": "Mecha",
"value": "mecha"
},
{
"label": "Mystery",
"value": "mystery"
},
{
"label": "Psychological",
"value": "psychological"
},
{
"label": "Reincarnation",
"value": "reincarnation"
},
{
"label": "Romance",
"value": "romance"
},
{
"label": "School Life",
"value": "school-life"
},
{
"label": "Sci-fi",
"value": "sci-fi"
},
{
"label": "Seinen",
"value": "seinen"
},
{
"label": "Shoujo",
"value": "shoujo-genre"
},
{
"label": "Shoujo Ai",
"value": "shoujo-ai"
},
{
"label": "Shounen",
"value": "shounen"
},
{
"label": "Shounen Ai",
"value": "shounen-ai"
},
{
"label": "Slice of Life",
"value": "slice-of-life"
},
{
"label": "Smut",
"value": "smut"
},
{
"label": "Sports",
"value": "sports"
},
{
"label": "Supernatural",
"value": "supernatural"
},
{
"label": "Teen",
"value": "teen"
},
{
"label": "Thriller",
"value": "thriller"
},
{
"label": "Tragedy",
"value": "tragedy"
},
{
"label": "Video Games",
"value": "video-games"
},
{
"label": "Webcomics",
"value": "webcomics"
},
{
"label": "Wuxia",
"value": "wuxia"
},
{
"label": "Xianxia",
"value": "xianxia"
},
{
"label": "Xuanhuan",
"value": "xuanhuan"
},
{
"label": "Yaoi",
"value": "yaoi"
},
{
"label": "Yuri",
"value": "yuri"
}
]
},
"op": {
"type": "Switch",
"label": "having all selected genres",
"value": false
},
"author": {
"type": "Text",
"label": "Author",
"value": ""
},
"artist": {
"type": "Text",
"label": "Artist",
"value": ""
},
"release": {
"type": "Text",
"label": "Year of Released",
"value": ""
},
"adult": {
"type": "Picker",
"label": "Adult content",
"value": "",
"options": [
{
"label": "All",
"value": ""
},
{
"label": "None adult content",
"value": "0"
},
{
"label": "Only adult content",
"value": "1"
}
]
},
"status[]": {
"type": "Checkbox",
"label": "Status",
"value": [],
"options": [
{
"label": "OnGoing",
"value": "on-going"
},
{
"label": "Completed",
"value": "end"
},
{
"label": "Canceled",
"value": "canceled"
},
{
"label": "On Hold",
"value": "on-hold"
},
{
"label": "Upcoming",
"value": "upcoming"
}
]
},
"m_orderby": {
"type": "Picker",
"label": "Order by",
"value": "",
"options": [
{
"label": "Relevance",
"value": ""
},
{
"label": "Latest",
"value": "latest"
},
{
"label": "A-Z",
"value": "alphabet"
},
{
"label": "Rating",
"value": "rating"
},
{
"label": "Trending",
"value": "trending"
},
{
"label": "Most Views",
"value": "views"
},
{
"label": "New",
"value": "new-manga"
}
]
}
}
}
@@ -0,0 +1,360 @@
{
"filters": {
"genre[]": {
"type": "Checkbox",
"label": "Genre",
"value": ["novels"],
"options": [
{
"label": "Action",
"value": "action"
},
{
"label": "Adult",
"value": "adult"
},
{
"label": "Adventure",
"value": "adventure"
},
{
"label": "BL/ boy love",
"value": "bl-boy-love"
},
{
"label": "Children",
"value": "children"
},
{
"label": "Comedy",
"value": "comedy"
},
{
"label": "COMICS",
"value": "comics"
},
{
"label": "COMPLETE",
"value": "complete"
},
{
"label": "Contemporary",
"value": "contemporary"
},
{
"label": "Cooking",
"value": "cooking"
},
{
"label": "Cultivation",
"value": "cultivation"
},
{
"label": "Detective",
"value": "detective"
},
{
"label": "Doomsday crisis",
"value": "doomsday-crisis"
},
{
"label": "Drama",
"value": "drama"
},
{
"label": "Ecchi",
"value": "ecchi"
},
{
"label": "Face slapping",
"value": "face-slapping"
},
{
"label": "Fanfiction",
"value": "fanfiction"
},
{
"label": "Fantasy",
"value": "fantasy"
},
{
"label": "Game",
"value": "game"
},
{
"label": "Gender Bender",
"value": "gender-bender"
},
{
"label": "Harem",
"value": "harem"
},
{
"label": "High School",
"value": "high-school"
},
{
"label": "Historical",
"value": "historical"
},
{
"label": "Horror",
"value": "horror"
},
{
"label": "INDONESIAN",
"value": "indonesian"
},
{
"label": "Isekai",
"value": "isekai"
},
{
"label": "Josei",
"value": "josei"
},
{
"label": "Love",
"value": "love"
},
{
"label": "Magic",
"value": "magic"
},
{
"label": "Martial Arts",
"value": "martial-arts"
},
{
"label": "Mature",
"value": "mature"
},
{
"label": "Military",
"value": "military"
},
{
"label": "Monster",
"value": "monster"
},
{
"label": "MTL",
"value": "mtl"
},
{
"label": "Mystery",
"value": "mystery"
},
{
"label": "NOVELS",
"value": "novels"
},
{
"label": "ORIGINAL",
"value": "original"
},
{
"label": "Powerful",
"value": "powerful"
},
{
"label": "Psychological",
"value": "psychological"
},
{
"label": "Rebirth",
"value": "rebirth"
},
{
"label": "Reincarnation",
"value": "reincarnation"
},
{
"label": "Revenge",
"value": "revenge"
},
{
"label": "Romance",
"value": "romance"
},
{
"label": "School",
"value": "school"
},
{
"label": "School Life",
"value": "school-life"
},
{
"label": "Sci-fi",
"value": "sci-fi"
},
{
"label": "Seinen",
"value": "seinen"
},
{
"label": "Shorts",
"value": "shorts"
},
{
"label": "Shoujo",
"value": "shoujo"
},
{
"label": "Shounen",
"value": "shounen"
},
{
"label": "shounen ai",
"value": "shounen-ai"
},
{
"label": "Slice of Life",
"value": "slice-of-life"
},
{
"label": "Smut",
"value": "smut"
},
{
"label": "Supernatural",
"value": "supernatural"
},
{
"label": "System",
"value": "system"
},
{
"label": "Thriller",
"value": "thriller"
},
{
"label": "Time Travel",
"value": "time-travel"
},
{
"label": "Tragedy",
"value": "tragedy"
},
{
"label": "Transmigration",
"value": "transmigration"
},
{
"label": "Urban abilities",
"value": "urban-abilities"
},
{
"label": "Yaoi",
"value": "yaoi"
},
{
"label": "Yuri",
"value": "yuri"
},
{
"label": "Zombie",
"value": "zombie"
}
]
},
"op": {
"type": "Switch",
"label": "having all selected genres",
"value": false
},
"author": {
"type": "Text",
"label": "Author",
"value": ""
},
"artist": {
"type": "Text",
"label": "Artist",
"value": ""
},
"release": {
"type": "Text",
"label": "Year of Released",
"value": ""
},
"adult": {
"type": "Picker",
"label": "Adult content",
"value": "",
"options": [
{
"label": "All",
"value": ""
},
{
"label": "None adult content",
"value": "0"
},
{
"label": "Only adult content",
"value": "1"
}
]
},
"status[]": {
"type": "Checkbox",
"label": "Status",
"value": [],
"options": [
{
"label": "Completed",
"value": "complete"
},
{
"label": "Ongoing",
"value": "on-going"
},
{
"label": "Canceled",
"value": "canceled"
},
{
"label": "On Hold",
"value": "on-hold"
}
]
},
"m_orderby": {
"type": "Picker",
"label": "Order by",
"value": "",
"options": [
{
"label": "Relevance",
"value": "novels&op&author&artist&release&adult&m_orderby"
},
{
"label": "Latest",
"value": ""
},
{
"label": "A-Z",
"value": ""
},
{
"label": "Rating",
"value": ""
},
{
"label": "Trending",
"value": ""
},
{
"label": "Most Views",
"value": ""
},
{
"label": "New",
"value": ""
}
]
}
}
}
@@ -0,0 +1,180 @@
{
"filters": {
"genre[]": {
"type": "Checkbox",
"label": "Genre",
"value": [],
"options": [
{
"label": "Action",
"value": "action"
},
{
"label": "Adventure",
"value": "adventure"
},
{
"label": "Comedy",
"value": "comedy"
},
{
"label": "Drama",
"value": "drama"
},
{
"label": "Ecchi",
"value": "ecchi"
},
{
"label": "Fantasy",
"value": "fantasy"
},
{
"label": "Harem",
"value": "harem"
},
{
"label": "Mecha",
"value": "mecha"
},
{
"label": "Romance",
"value": "romance"
},
{
"label": "School Life",
"value": "school-life"
},
{
"label": "Sci-fi",
"value": "sci-fi"
},
{
"label": "Shoujo",
"value": "shoujo"
},
{
"label": "Shounen",
"value": "shounen"
},
{
"label": "Shounen Ai",
"value": "shounen-ai"
},
{
"label": "Slice of Life",
"value": "slice-of-life"
},
{
"label": "Supernatural",
"value": "supernatural"
},
{
"label": "Yaoi",
"value": "yaoi"
}
]
},
"op": {
"type": "Switch",
"label": "having all selected genres",
"value": false
},
"author": {
"type": "Text",
"label": "Author",
"value": ""
},
"artist": {
"type": "Text",
"label": "Artist",
"value": ""
},
"release": {
"type": "Text",
"label": "Year of Released",
"value": ""
},
"adult": {
"type": "Picker",
"label": "Adult content",
"value": "",
"options": [
{
"label": "All",
"value": ""
},
{
"label": "None adult content",
"value": "0"
},
{
"label": "Only adult content",
"value": "1"
}
]
},
"status[]": {
"type": "Checkbox",
"label": "Status",
"value": [],
"options": [
{
"label": "OnGoing",
"value": "on-going"
},
{
"label": "Completed",
"value": "end"
},
{
"label": "Canceled",
"value": "canceled"
},
{
"label": "On Hold",
"value": "on-hold"
},
{
"label": "Upcoming",
"value": "upcoming"
}
]
},
"m_orderby": {
"type": "Picker",
"label": "Order by",
"value": "",
"options": [
{
"label": "Relevance",
"value": ""
},
{
"label": "Latest",
"value": "latest"
},
{
"label": "A-Z",
"value": "alphabet"
},
{
"label": "Rating",
"value": "rating"
},
{
"label": "Trending",
"value": "trending"
},
{
"label": "Most Views",
"value": "views"
},
{
"label": "New",
"value": "new-manga"
}
]
}
}
}
@@ -0,0 +1,236 @@
{
"filters": {
"genre[]": {
"type": "Checkbox",
"label": "Genre",
"value": [],
"options": [
{
"label": "Action",
"value": "action"
},
{
"label": "Adventure",
"value": "adventure"
},
{
"label": "Comedy",
"value": "comedy"
},
{
"label": "Drama",
"value": "drama"
},
{
"label": "Fanfiction",
"value": "fanfiction"
},
{
"label": "Fantasy",
"value": "fantasy"
},
{
"label": "Harem",
"value": "harem"
},
{
"label": "Historical",
"value": "historical"
},
{
"label": "Horror",
"value": "horror"
},
{
"label": "Josei",
"value": "josei"
},
{
"label": "Light Novel",
"value": "light-novel"
},
{
"label": "Martial Arts",
"value": "martial-arts"
},
{
"label": "Mature",
"value": "mature"
},
{
"label": "Mystery",
"value": "mystery"
},
{
"label": "Novel",
"value": "novel"
},
{
"label": "Psychological",
"value": "psychological"
},
{
"label": "Romance",
"value": "romance"
},
{
"label": "School Life",
"value": "school-life"
},
{
"label": "Sci-fi",
"value": "sci-fi"
},
{
"label": "Seinen",
"value": "seinen"
},
{
"label": "Shoujo",
"value": "shoujo"
},
{
"label": "Shoujo Ai",
"value": "shoujo-ai"
},
{
"label": "Slice of Life",
"value": "slice-of-life"
},
{
"label": "Sports",
"value": "sports"
},
{
"label": "Supernatural",
"value": "supernatural"
},
{
"label": "Tragedy",
"value": "tragedy"
},
{
"label": "Web Novel CN",
"value": "web-novel-cn"
},
{
"label": "Web Novel JP",
"value": "web-novel"
},
{
"label": "Web Novel KR",
"value": "web-novel-kr"
},
{
"label": "Yaoi",
"value": "yaoi"
},
{
"label": "Yuri",
"value": "yuri"
}
]
},
"op": {
"type": "Switch",
"label": "having all selected genres",
"value": false
},
"author": {
"type": "Text",
"label": "Author",
"value": ""
},
"artist": {
"type": "Text",
"label": "Artist",
"value": ""
},
"release": {
"type": "Text",
"label": "Year of Released",
"value": ""
},
"adult": {
"type": "Picker",
"label": "Adult content",
"value": "",
"options": [
{
"label": "All",
"value": ""
},
{
"label": "None adult content",
"value": "0"
},
{
"label": "Only adult content",
"value": "1"
}
]
},
"status[]": {
"type": "Checkbox",
"label": "Status",
"value": [],
"options": [
{
"label": "OnGoing",
"value": "on-going"
},
{
"label": "Completed",
"value": "end"
},
{
"label": "Canceled",
"value": "canceled"
},
{
"label": "On Hold",
"value": "on-hold"
},
{
"label": "Upcoming",
"value": "upcoming"
}
]
},
"m_orderby": {
"type": "Picker",
"label": "Order by",
"value": "",
"options": [
{
"label": "Relevance",
"value": ""
},
{
"label": "Latest",
"value": "latest"
},
{
"label": "A-Z",
"value": "alphabet"
},
{
"label": "Rating",
"value": "rating"
},
{
"label": "Trending",
"value": "trending"
},
{
"label": "Most Views",
"value": "views"
},
{
"label": "New",
"value": "new-manga"
}
]
}
}
}
@@ -0,0 +1,236 @@
{
"filters": {
"genre[]": {
"type": "Checkbox",
"label": "Genre",
"value": [],
"options": [
{
"label": "[NSFW]",
"value": "nsfw"
},
{
"label": "Action",
"value": "action"
},
{
"label": "Adventure",
"value": "adventure"
},
{
"label": "Anime",
"value": "anime"
},
{
"label": "Comedy",
"value": "comedy"
},
{
"label": "Drama",
"value": "drama"
},
{
"label": "Ecchi",
"value": "ecchi"
},
{
"label": "Fantasy",
"value": "fantasy"
},
{
"label": "Harem",
"value": "harem"
},
{
"label": "Historical",
"value": "historical"
},
{
"label": "Horror",
"value": "horror"
},
{
"label": "Martial Arts",
"value": "martial-arts"
},
{
"label": "Mecha",
"value": "mecha"
},
{
"label": "Mystery",
"value": "mystery"
},
{
"label": "Psychological",
"value": "psychological"
},
{
"label": "Recommended",
"value": "recommended"
},
{
"label": "Reincarnation",
"value": "reincarnation"
},
{
"label": "Romance",
"value": "romance"
},
{
"label": "School Life",
"value": "school-life"
},
{
"label": "Sci-fi",
"value": "sci-fi"
},
{
"label": "Seinen",
"value": "seinen"
},
{
"label": "Shounen",
"value": "shounen"
},
{
"label": "Slice of Life",
"value": "slice-of-life"
},
{
"label": "Smut",
"value": "smut"
},
{
"label": "Sports",
"value": "sports"
},
{
"label": "Supernatural",
"value": "supernatural"
},
{
"label": "Tragedy",
"value": "tragedy"
},
{
"label": "Trend",
"value": "trend"
},
{
"label": "Video Games",
"value": "video-games"
},
{
"label": "Yaoi",
"value": "yaoi"
},
{
"label": "Yuri",
"value": "yuri"
}
]
},
"op": {
"type": "Switch",
"label": "having all selected genres",
"value": false
},
"author": {
"type": "Text",
"label": "Author",
"value": ""
},
"artist": {
"type": "Text",
"label": "Artist",
"value": ""
},
"release": {
"type": "Text",
"label": "Year of Released",
"value": ""
},
"adult": {
"type": "Picker",
"label": "Adult content",
"value": "",
"options": [
{
"label": "All",
"value": ""
},
{
"label": "None adult content",
"value": "0"
},
{
"label": "Only adult content",
"value": "1"
}
]
},
"status[]": {
"type": "Checkbox",
"label": "Status",
"value": [],
"options": [
{
"label": "OnGoing",
"value": "on-going"
},
{
"label": "Completed",
"value": "end"
},
{
"label": "Canceled",
"value": "canceled"
},
{
"label": "On Hold",
"value": "on-hold"
},
{
"label": "Upcoming",
"value": "upcoming"
}
]
},
"m_orderby": {
"type": "Picker",
"label": "Order by",
"value": "",
"options": [
{
"label": "Relevance",
"value": ""
},
{
"label": "Latest",
"value": "latest"
},
{
"label": "A-Z",
"value": "alphabet"
},
{
"label": "Rating",
"value": "rating"
},
{
"label": "Trending",
"value": "trending"
},
{
"label": "Most Views",
"value": "views"
},
{
"label": "New",
"value": "new-manga"
}
]
}
}
}
@@ -0,0 +1,276 @@
{
"filters": {
"genre[]": {
"type": "Checkbox",
"label": "Genre",
"value": [],
"options": [
{
"label": "Action",
"value": "action"
},
{
"label": "Adult",
"value": "adult"
},
{
"label": "Adventure",
"value": "adventure"
},
{
"label": "Comedy",
"value": "comedy"
},
{
"label": "Drama",
"value": "drama"
},
{
"label": "Eastern",
"value": "eastern"
},
{
"label": "Ecchi",
"value": "ecchi"
},
{
"label": "Fantasy",
"value": "fantasy"
},
{
"label": "Game",
"value": "game"
},
{
"label": "Gender Bender",
"value": "gender-bender"
},
{
"label": "Harem",
"value": "harem"
},
{
"label": "Historical",
"value": "historical"
},
{
"label": "Horror",
"value": "horror"
},
{
"label": "Josei",
"value": "josei"
},
{
"label": "Magic",
"value": "magic"
},
{
"label": "Martial Arts",
"value": "martial-arts"
},
{
"label": "MartialArts",
"value": "martialarts"
},
{
"label": "Mature",
"value": "mature"
},
{
"label": "Mecha",
"value": "mecha"
},
{
"label": "Military",
"value": "military"
},
{
"label": "Mystery",
"value": "mystery"
},
{
"label": "Psychological",
"value": "psychological"
},
{
"label": "Reincarnation",
"value": "reincarnation"
},
{
"label": "Romance",
"value": "romance"
},
{
"label": "School Life",
"value": "school-life"
},
{
"label": "Sci-fi",
"value": "sci-fi"
},
{
"label": "Seinen",
"value": "seinen"
},
{
"label": "Shoujo",
"value": "shoujo"
},
{
"label": "Shoujo Ai",
"value": "shoujo-ai"
},
{
"label": "Shounen",
"value": "shounen"
},
{
"label": "Shounen Ai",
"value": "shounen-ai"
},
{
"label": "Slice of Life",
"value": "slice-of-life"
},
{
"label": "Smut",
"value": "smut"
},
{
"label": "Sports",
"value": "sports"
},
{
"label": "Supernatural",
"value": "supernatural"
},
{
"label": "Tragedy",
"value": "tragedy"
},
{
"label": "Wuxia",
"value": "wuxia"
},
{
"label": "Xianxia",
"value": "xianxia"
},
{
"label": "Xuanhuan",
"value": "xuanhuan"
},
{
"label": "Yaoi",
"value": "yaoi"
},
{
"label": "Yuri",
"value": "yuri"
}
]
},
"op": {
"type": "Switch",
"label": "having all selected genres",
"value": false
},
"author": {
"type": "Text",
"label": "Author",
"value": ""
},
"artist": {
"type": "Text",
"label": "Artist",
"value": ""
},
"release": {
"type": "Text",
"label": "Year of Released",
"value": ""
},
"adult": {
"type": "Picker",
"label": "Adult content",
"value": "",
"options": [
{
"label": "All",
"value": ""
},
{
"label": "None adult content",
"value": "0"
},
{
"label": "Only adult content",
"value": "1"
}
]
},
"status[]": {
"type": "Checkbox",
"label": "Status",
"value": [],
"options": [
{
"label": "OnGoing",
"value": "on-going"
},
{
"label": "Completed",
"value": "end"
},
{
"label": "Canceled",
"value": "canceled"
},
{
"label": "On Hold",
"value": "on-hold"
},
{
"label": "Upcoming",
"value": "upcoming"
}
]
},
"m_orderby": {
"type": "Picker",
"label": "Order by",
"value": "",
"options": [
{
"label": "Relevance",
"value": ""
},
{
"label": "Latest",
"value": "latest"
},
{
"label": "A-Z",
"value": "alphabet"
},
{
"label": "Rating",
"value": "rating"
},
{
"label": "Trending",
"value": "trending"
},
{
"label": "Most Views",
"value": "views"
},
{
"label": "New",
"value": "new-manga"
}
]
}
}
}
@@ -0,0 +1,268 @@
{
"filters": {
"genre[]": {
"type": "Checkbox",
"label": "Genre",
"value": [],
"options": [
{
"label": "18+",
"value": "18"
},
{
"label": "กาว",
"value": "กาว"
},
{
"label": "กำลังภายใน",
"value": "กำลังภายใน"
},
{
"label": "ของวิเศษ",
"value": "ของวิเศษ"
},
{
"label": "คลั่งรัก",
"value": "คลั่งรัก"
},
{
"label": "คอเมดี้",
"value": "คอเมดี้"
},
{
"label": "ค้าขาย",
"value": "ค้าขาย"
},
{
"label": "จบ",
"value": "จบ"
},
{
"label": "จอมมาร",
"value": "จอมมาร"
},
{
"label": "จีนโบราณ",
"value": "จีนโบราณ"
},
{
"label": "ชายาอ๋อง",
"value": "ชายาอ๋อง"
},
{
"label": "ซุปเปอร์สตาร์",
"value": "ซุปเปอร์สตาร์"
},
{
"label": "ดราม่า",
"value": "ดราม่า"
},
{
"label": "ต่างโลก",
"value": "ต่างโลก"
},
{
"label": "ทะลุมิติ",
"value": "ทะลุมิติ"
},
{
"label": "ทายาทเศรษฐี",
"value": "ทายาทเศรษฐี"
},
{
"label": "ทำอาหาร",
"value": "ทำอาหาร"
},
{
"label": "นักปรุงยา",
"value": "นักปรุงยา"
},
{
"label": "นางเอกเก่ง",
"value": "นางเอกเก่ง"
},
{
"label": "นิยายจีน",
"value": "นิยายจีน"
},
{
"label": "นิยายรัก",
"value": "นิยายรัก"
},
{
"label": "นิยายแปล",
"value": "นิยายแปล"
},
{
"label": "ผจญภัย",
"value": "ผจญภัย"
},
{
"label": "ย้อนยุค",
"value": "ย้อนยุค"
},
{
"label": "ย้อนเวลา",
"value": "ย้อนเวลา"
},
{
"label": "ระบบ",
"value": "ระบบ"
},
{
"label": "สงครามอวกาศ",
"value": "สงครามอวกาศ"
},
{
"label": "สัตวเลี้ยง",
"value": "สัตวเลี้ยง"
},
{
"label": "สโลไลฟ์",
"value": "สโลไลฟ์"
},
{
"label": "เกิดใหม่",
"value": "เกิดใหม่"
},
{
"label": "เทพอสูร",
"value": "เทพอสูร"
},
{
"label": "เวทมนต์",
"value": "เวทมนต์"
},
{
"label": "แก้แค้น",
"value": "แก้แค้น"
},
{
"label": "แฟนตาซี",
"value": "แฟนตาซี"
},
{
"label": "แอ๊คชัน",
"value": "แอ๊คชัน"
},
{
"label": "แอคชั่น",
"value": "แอคชั่น"
},
{
"label": "โรแมนติก",
"value": "โรแมนติก"
},
{
"label": "ใช้ชีวิต",
"value": "ใช้ชีวิต"
},
{
"label": "ไซไฟ",
"value": "ไซไฟ"
}
]
},
"op": {
"type": "Switch",
"label": "having all selected genres",
"value": false
},
"author": {
"type": "Text",
"label": "Author",
"value": ""
},
"artist": {
"type": "Text",
"label": "Artist",
"value": ""
},
"release": {
"type": "Text",
"label": "Year of Released",
"value": ""
},
"adult": {
"type": "Picker",
"label": "Adult content",
"value": "",
"options": [
{
"label": "All",
"value": ""
},
{
"label": "None adult content",
"value": "0"
},
{
"label": "Only adult content",
"value": "1"
}
]
},
"status[]": {
"type": "Checkbox",
"label": "Status",
"value": [],
"options": [
{
"label": "OnGoing",
"value": "on-going"
},
{
"label": "Completed",
"value": "end"
},
{
"label": "Canceled",
"value": "canceled"
},
{
"label": "On Hold",
"value": "on-hold"
},
{
"label": "Upcoming",
"value": "upcoming"
}
]
},
"m_orderby": {
"type": "Picker",
"label": "Order by",
"value": "",
"options": [
{
"label": "Relevance",
"value": ""
},
{
"label": "Latest",
"value": "latest"
},
{
"label": "A-Z",
"value": "alphabet"
},
{
"label": "Rating",
"value": "rating"
},
{
"label": "Trending",
"value": "trending"
},
{
"label": "Most Views",
"value": "views"
},
{
"label": "New",
"value": "new-manga"
}
]
}
}
}
+516
View File
@@ -0,0 +1,516 @@
{
"filters": {
"genre[]": {
"type": "Checkbox",
"label": "Genre",
"value": [],
"options": [
{
"label": "+13",
"value": "13"
},
{
"label": "+16",
"value": "16"
},
{
"label": "+17",
"value": "17"
},
{
"label": "أكشن",
"value": "أكشن"
},
{
"label": "إنتقام",
"value": "إنتقام"
},
{
"label": "إيتشي",
"value": "إيتشي"
},
{
"label": "اثارة",
"value": "اثارة"
},
{
"label": "اثاره",
"value": "اثاره"
},
{
"label": "اشباح",
"value": "اشباح"
},
{
"label": "اقتباس مانهوا",
"value": "اقتباس-مانهوا"
},
{
"label": "اقتباس مانهوا",
"value": "اقتباس-مانهوا-انمي"
},
{
"label": "اكشن",
"value": "اكشن"
},
{
"label": "الحياة المدرسيه",
"value": "الحياة-المدرسيه"
},
{
"label": "الحياة اليومية",
"value": "الحياة-اليومية"
},
{
"label": "العاب فيديو",
"value": "العاب-فيديو"
},
{
"label": "النجاة",
"value": "النجاة"
},
{
"label": "امرأة شريرة",
"value": "امرأة-شريرة"
},
{
"label": "انتقام",
"value": "انتقام"
},
{
"label": "انمي",
"value": "انمي"
},
{
"label": "انمي ياباني",
"value": "انمي-ياباني"
},
{
"label": "ايسكاى",
"value": "ايسكاى"
},
{
"label": "بالغ",
"value": "بالغ"
},
{
"label": "بطل خارق",
"value": "بطل-خارق"
},
{
"label": "تاريخى",
"value": "تاريخى"
},
{
"label": "تاريخي",
"value": "تاريخي"
},
{
"label": "تجسيد",
"value": "تجسيد"
},
{
"label": "تراجيدي",
"value": "تراجيدي"
},
{
"label": "ترجمة جوجل",
"value": "ترجمة-جوجل"
},
{
"label": "جريمة",
"value": "جريمة"
},
{
"label": "جريمه",
"value": "جريمه"
},
{
"label": "جندر اسواب",
"value": "جندر-اسواب"
},
{
"label": "جوسى",
"value": "جوسى"
},
{
"label": "جوسيه",
"value": "جوسيه"
},
{
"label": "حائز على جائزة",
"value": "حائز-على-جائزة"
},
{
"label": "حائز علي جائزة",
"value": "حائز-علي-جائزة"
},
{
"label": "حديث",
"value": "حديث"
},
{
"label": "حربى",
"value": "حربى"
},
{
"label": "حربي",
"value": "حربي"
},
{
"label": "حريم",
"value": "حريم"
},
{
"label": "حياة",
"value": "حياة"
},
{
"label": "حياة مدرسية",
"value": "حياة-مدرسية"
},
{
"label": "حياة يومية",
"value": "حياة-يومية"
},
{
"label": "خارق لطبيعية",
"value": "خارق-لطبيعية"
},
{
"label": "خارق للطبيعة",
"value": "خارق-للطبيعة"
},
{
"label": "خارق للطبيعه",
"value": "خارق-للطبيعه"
},
{
"label": "خيال",
"value": "خيال"
},
{
"label": "خيال علمى",
"value": "خيال-علمى"
},
{
"label": "خيال علمي",
"value": "خيال-علمي"
},
{
"label": "دراما",
"value": "دراما"
},
{
"label": "دموى",
"value": "دموى"
},
{
"label": "راشد",
"value": "راشد"
},
{
"label": "رعب",
"value": "رعب"
},
{
"label": "رومانسى",
"value": "رومانسى"
},
{
"label": "رومانسي",
"value": "رومانسي"
},
{
"label": "رياضة",
"value": "رياضة"
},
{
"label": "رياضه",
"value": "رياضه"
},
{
"label": "زمكانى",
"value": "زمكانى"
},
{
"label": "زمكاني",
"value": "زمكاني"
},
{
"label": "زمنكاني",
"value": "زمنكاني"
},
{
"label": "زومبي",
"value": "زومبي"
},
{
"label": "ساموراي",
"value": "ساموراي"
},
{
"label": "سحر",
"value": "سحر"
},
{
"label": "سينين",
"value": "سينين"
},
{
"label": "شريحة من الحياة",
"value": "شريحة-من-الحياة"
},
{
"label": "شوجو",
"value": "شوجو"
},
{
"label": "شونين",
"value": "شونين"
},
{
"label": "شياطين",
"value": "شياطين"
},
{
"label": "طبخ",
"value": "طبخ"
},
{
"label": "ّعامل مكتبي",
"value": "ّعامل-مكتبي"
},
{
"label": "عسكري",
"value": "عسكري"
},
{
"label": "علم نفس",
"value": "علم-نفس"
},
{
"label": "عنف",
"value": "عنف"
},
{
"label": "غموض",
"value": "غموض"
},
{
"label": "فنتازيا",
"value": "فنتازيا"
},
{
"label": "فنون قتال",
"value": "فنون-قتال"
},
{
"label": "فنون قتاليه",
"value": "فنون-قتاليه"
},
{
"label": "قوة خارقة",
"value": "قوة-خارقة"
},
{
"label": "قوى خارقة",
"value": "قوى-خارقة"
},
{
"label": "كوميدى",
"value": "كوميدى"
},
{
"label": "كوميديا",
"value": "كوميديا"
},
{
"label": "لعبه",
"value": "لعبه"
},
{
"label": "مأساة",
"value": "مأساة"
},
{
"label": "ماساة",
"value": "ماساة"
},
{
"label": "مافيا",
"value": "مافيا"
},
{
"label": "مانجا",
"value": "مانجا"
},
{
"label": "مانجا على الانترنت",
"value": "مانجا-على-الانترنت"
},
{
"label": "مانها",
"value": "مانها"
},
{
"label": "مانهوا",
"value": "مانهوا"
},
{
"label": "مجموعة قصص",
"value": "مجموعة-قصص"
},
{
"label": "محاكاة ساخرة",
"value": "محاكاة-ساخرة"
},
{
"label": "مدرسي",
"value": "مدرسي"
},
{
"label": "مصاصى الدماء",
"value": "مصاصى-الدماء"
},
{
"label": "مغامرات",
"value": "مغامرات"
},
{
"label": "مغامرة",
"value": "مغامرة"
},
{
"label": "مقتبسة",
"value": "مقتبسة"
},
{
"label": "نظام",
"value": "نظام"
},
{
"label": "نفسى",
"value": "نفسى"
},
{
"label": "نفسي",
"value": "نفسي"
},
{
"label": "نينجا",
"value": "نينجا"
},
{
"label": "وحوش",
"value": "وحوش"
},
{
"label": "ويب تون",
"value": "ويب-تون"
}
]
},
"op": {
"type": "Switch",
"label": "having all selected genres",
"value": false
},
"author": {
"type": "Text",
"label": "Author",
"value": ""
},
"artist": {
"type": "Text",
"label": "Artist",
"value": ""
},
"release": {
"type": "Text",
"label": "Year of Released",
"value": ""
},
"adult": {
"type": "Picker",
"label": "Adult content",
"value": "",
"options": [
{
"label": "All",
"value": ""
},
{
"label": "None adult content",
"value": "0"
},
{
"label": "Only adult content",
"value": "1"
}
]
},
"status[]": {
"type": "Checkbox",
"label": "Status",
"value": [],
"options": [
{
"label": "مستمر",
"value": "on-going"
},
{
"label": "مكتمل",
"value": "end"
},
{
"label": "ملغى",
"value": "canceled"
},
{
"label": "في الانتظار",
"value": "on-hold"
},
{
"label": "قادم قريبا",
"value": "upcoming"
}
]
},
"m_orderby": {
"type": "Picker",
"label": "Order by",
"value": "",
"options": [
{
"label": "Relevance",
"value": ""
},
{
"label": "Latest",
"value": "latest"
},
{
"label": "A-Z",
"value": "alphabet"
},
{
"label": "Rating",
"value": "rating"
},
{
"label": "Trending",
"value": "trending"
},
{
"label": "Most Views",
"value": "views"
},
{
"label": "New",
"value": "new-manga"
}
]
}
}
}
@@ -0,0 +1,240 @@
{
"filters": {
"genre[]": {
"type": "Checkbox",
"label": "Genre",
"value": [],
"options": [
{
"label": "Action",
"value": "action"
},
{
"label": "Adventure",
"value": "adventure"
},
{
"label": "Antihero Protagonist",
"value": "antihero-protagonist"
},
{
"label": "Chinese",
"value": "chinese"
},
{
"label": "Comedy",
"value": "comedy"
},
{
"label": "Daily Life",
"value": "daily-life"
},
{
"label": "Dark-Comedy",
"value": "dark-comedy"
},
{
"label": "Devil fruit",
"value": "devil-fruit"
},
{
"label": "Drama",
"value": "drama"
},
{
"label": "Ecchi",
"value": "ecchi"
},
{
"label": "Fanfiction",
"value": "fanfiction"
},
{
"label": "Fantasy",
"value": "fantasy"
},
{
"label": "Game",
"value": "game"
},
{
"label": "Harem",
"value": "harem"
},
{
"label": "Korean",
"value": "korean"
},
{
"label": "Martial Arts",
"value": "martial-arts"
},
{
"label": "Mystery",
"value": "mystery"
},
{
"label": "Original",
"value": "original"
},
{
"label": "Revolutionary",
"value": "revolutionary"
},
{
"label": "Romance",
"value": "romance"
},
{
"label": "School Life",
"value": "school-life"
},
{
"label": "Sci-fi",
"value": "sci-fi"
},
{
"label": "Seinen",
"value": "seinen"
},
{
"label": "Shounen",
"value": "shounen"
},
{
"label": "Supernat",
"value": "supernat"
},
{
"label": "Supernatural",
"value": "supernatural"
},
{
"label": "Survival",
"value": "survival"
},
{
"label": "swordsmanship",
"value": "swordsmanship"
},
{
"label": "Tragedy",
"value": "tragedy"
},
{
"label": "War",
"value": "war"
},
{
"label": "Weak to Strong",
"value": "weak-to-strong"
},
{
"label": "Xuanhuan",
"value": "xuanhuan"
}
]
},
"op": {
"type": "Switch",
"label": "having all selected genres",
"value": false
},
"author": {
"type": "Text",
"label": "Author",
"value": ""
},
"artist": {
"type": "Text",
"label": "Artist",
"value": ""
},
"release": {
"type": "Text",
"label": "Year of Released",
"value": ""
},
"adult": {
"type": "Picker",
"label": "Adult content",
"value": "",
"options": [
{
"label": "All",
"value": ""
},
{
"label": "None adult content",
"value": "0"
},
{
"label": "Only adult content",
"value": "1"
}
]
},
"status[]": {
"type": "Checkbox",
"label": "Status",
"value": [],
"options": [
{
"label": "OnGoing",
"value": "on-going"
},
{
"label": "Completed",
"value": "end"
},
{
"label": "Canceled",
"value": "canceled"
},
{
"label": "On Hold",
"value": "on-hold"
},
{
"label": "Upcoming",
"value": "upcoming"
}
]
},
"m_orderby": {
"type": "Picker",
"label": "Order by",
"value": "",
"options": [
{
"label": "Relevance",
"value": ""
},
{
"label": "Latest",
"value": "latest"
},
{
"label": "A-Z",
"value": "alphabet"
},
{
"label": "Rating",
"value": "rating"
},
{
"label": "Trending",
"value": "trending"
},
{
"label": "Most Views",
"value": "views"
},
{
"label": "New",
"value": "new-manga"
}
]
}
}
}
@@ -0,0 +1,236 @@
{
"filters": {
"genre[]": {
"type": "Checkbox",
"label": "Genre",
"value": [],
"options": [
{
"label": "+ 18",
"value": "18"
},
{
"label": "Aksiyon",
"value": "aksiyon"
},
{
"label": "Bilim Kurgu",
"value": "bilim-kurgu"
},
{
"label": "Dövüş Sanatları",
"value": "dovus-sanatlari"
},
{
"label": "Dram",
"value": "dram"
},
{
"label": "Ecchi",
"value": "ecchi"
},
{
"label": "Fantastik",
"value": "fantastik"
},
{
"label": "Fantezi",
"value": "fantezi"
},
{
"label": "Gizem",
"value": "gizem"
},
{
"label": "Harem",
"value": "harem"
},
{
"label": "Kadın Başrol",
"value": "kadin-basrol"
},
{
"label": "Kentsel",
"value": "kentsel"
},
{
"label": "Komedi",
"value": "komedi"
},
{
"label": "Macera",
"value": "macera"
},
{
"label": "Manga Listesi",
"value": "manga"
},
{
"label": "Okul Yaşamı",
"value": "okul-yasami"
},
{
"label": "Olgun",
"value": "olgun"
},
{
"label": "Oyun",
"value": "oyun"
},
{
"label": "Popüler",
"value": "populer"
},
{
"label": "Reenkarnasyon",
"value": "reenkarnasyon"
},
{
"label": "Romantik",
"value": "romantik"
},
{
"label": "Seinen",
"value": "seinen"
},
{
"label": "Shounen",
"value": "shounen"
},
{
"label": "Simya",
"value": "simya"
},
{
"label": "Sistem",
"value": "sistem"
},
{
"label": "Süpergüç",
"value": "superguc"
},
{
"label": "Tamamlanmış",
"value": "tamamlanmis"
},
{
"label": "Wuxia",
"value": "wuxia"
},
{
"label": "Xianxia",
"value": "xianxia"
},
{
"label": "Xuanhuan",
"value": "xuanhuan"
},
{
"label": "Yeni",
"value": "yeni"
},
{
"label": "Yetişim",
"value": "yetisim"
},
{
"label": "Yüksek Kalitede Çevrilmiş",
"value": "yuksek-kalitede-cevrilmis"
}
]
},
"op": {
"type": "Switch",
"label": "Having ALL selected genres",
"value": false
},
"author": {
"type": "Text",
"label": "Yazar",
"value": ""
},
"artist": {
"type": "Text",
"label": "Artist",
"value": ""
},
"release": {
"type": "Text",
"label": "Çıkış Yılı",
"value": ""
},
"adult": {
"type": "Picker",
"label": "Adult content",
"value": "",
"options": [
{
"label": "All",
"value": ""
},
{
"label": "None adult content",
"value": "0"
},
{
"label": "Only adult content",
"value": "1"
}
]
},
"status[]": {
"type": "Checkbox",
"label": "Durum",
"value": [],
"options": [
{
"label": "Tamamlandı",
"value": "complete"
},
{
"label": "Devam Ediyor",
"value": "on-going"
},
{
"label": "İptal Edildi",
"value": "canceled"
},
{
"label": "Beklemede",
"value": "on-hold"
}
]
},
"m_orderby": {
"type": "Picker",
"label": "Sırala",
"value": "",
"options": [
{
"label": "En Son",
"value": "latest"
},
{
"label": "A-Z",
"value": "alphabet"
},
{
"label": "Reyting",
"value": "rating"
},
{
"label": "Popülarite",
"value": "trending"
},
{
"label": "Görüntülenme",
"value": "views"
},
{
"label": "Yeni",
"value": "new-manga"
}
]
}
}
}
@@ -0,0 +1,82 @@
{
"filters": {
"genre[]": {
"type": "Checkbox",
"label": "Genre",
"value": [],
"options": []
},
"op": {
"type": "Switch",
"label": "Having ALL selected genres",
"value": false
},
"author": {
"type": "Text",
"label": "Author",
"value": ""
},
"artist": {
"type": "Text",
"label": "Artist",
"value": ""
},
"release": {
"type": "Text",
"label": "Year of Released",
"value": ""
},
"adult": {
"type": "Picker",
"label": "Adult content",
"value": "",
"options": [
{
"label": "All",
"value": ""
},
{
"label": "None adult content",
"value": "0"
},
{
"label": "Only adult content",
"value": "1"
}
]
},
"status[]": {
"type": "Checkbox",
"label": "Status",
"value": [],
"options": [
{
"label": "OnGoing",
"value": "on-going"
},
{
"label": "Completed",
"value": "end"
},
{
"label": "Canceled",
"value": "canceled"
},
{
"label": "On Hold",
"value": "on-hold"
},
{
"label": "Upcoming",
"value": "upcoming"
}
]
},
"m_orderby": {
"type": "Picker",
"label": "",
"value": "",
"options": []
}
}
}
@@ -0,0 +1,204 @@
{
"filters": {
"genre[]": {
"type": "Checkbox",
"label": "Genre",
"value": [],
"options": [
{
"label": "Action",
"value": "action"
},
{
"label": "Arts martiaux",
"value": "arts-martiaux"
},
{
"label": "Aventure",
"value": "aventure"
},
{
"label": "Comédie",
"value": "comedie"
},
{
"label": "Drame",
"value": "drame"
},
{
"label": "Ecchi",
"value": "ecchi"
},
{
"label": "Fantaisie",
"value": "fantaisie"
},
{
"label": "Horreur",
"value": "horreur"
},
{
"label": "Isekai",
"value": "isekai"
},
{
"label": "Light Novel",
"value": "light-novel"
},
{
"label": "Mystère",
"value": "mystere"
},
{
"label": "Novel Originaux",
"value": "novel-originaux"
},
{
"label": "Novel Publié",
"value": "novel-publie"
},
{
"label": "Psychologique",
"value": "psychologique"
},
{
"label": "Romance",
"value": "romance"
},
{
"label": "School Life",
"value": "school-life"
},
{
"label": "Sci-fi",
"value": "sci-fi"
},
{
"label": "Sport",
"value": "sport"
},
{
"label": "Surnaturel",
"value": "surnaturel"
},
{
"label": "Thriller",
"value": "thriller"
},
{
"label": "Tragédie",
"value": "tragedie"
},
{
"label": "Tranche de vie",
"value": "tranche-de-vie"
},
{
"label": "Web Novel",
"value": "web-novel"
}
]
},
"op": {
"type": "Switch",
"label": "ET avoir tous les genres sélectionnés",
"value": false
},
"author": {
"type": "Text",
"label": "Auteur",
"value": ""
},
"artist": {
"type": "Text",
"label": "Artiste",
"value": ""
},
"release": {
"type": "Text",
"label": "Année de sortie",
"value": ""
},
"adult": {
"type": "Picker",
"label": "Contenu pour adultes",
"value": "",
"options": [
{
"label": "Tous",
"value": ""
},
{
"label": "Aucun contenu adulte",
"value": "0"
},
{
"label": "Contenu pour adultes uniquement",
"value": "1"
}
]
},
"status[]": {
"type": "Checkbox",
"label": "Statut",
"value": [],
"options": [
{
"label": "OnGoing",
"value": "on-going"
},
{
"label": "Completed",
"value": "end"
},
{
"label": "Canceled",
"value": "canceled"
},
{
"label": "On Hold",
"value": "on-hold"
},
{
"label": "Upcoming",
"value": "upcoming"
}
]
},
"m_orderby": {
"type": "Picker",
"label": "Trier par",
"value": "",
"options": [
{
"label": "Pertinence",
"value": ""
},
{
"label": "Les plus récents",
"value": "latest"
},
{
"label": "A-Z",
"value": "alphabet"
},
{
"label": "Classement",
"value": "rating"
},
{
"label": "Tendance",
"value": "trending"
},
{
"label": "La plupart des vues",
"value": "views"
},
{
"label": "Nouveau",
"value": "new-manga"
}
]
}
}
}
+74 -44
View File
@@ -53,62 +53,74 @@ function getFilters(name: string, html: string) {
},
};
const divs = $('form.search-advanced-form > div');
const form = $('form.search-advanced-form');
// ==================== Genre ====================
const genreDiv = divs.eq(0);
genreDiv.find('label').each((i, el) => {
form.find('input[name="genre[]"]').each((i, el) => {
const option = {
label: $(el).text().trim(),
value: decodeURI($(el).attr('for') || ''),
label: $(el).next('label').text().trim(),
value: decodeURI($(el).attr('value') || ''),
};
filters.filters['genre[]'].options.push(option);
});
// ===================== Op ======================
const statusDiv = divs.eq(1);
filters.filters['op'].label = statusDiv
.find('option')
.eq(1)
.text()
.replace('AND', '')
.replace('(', '')
.replace(')', '')
.trim();
filters.filters['op'].label =
form
.find('select[name="op"] > option')
.eq(1)
.text()
.replace('AND', '')
.replace('(', '')
.replace(')', '')
.trim() || 'Having ALL selected genres';
// ==================== Author ====================
const authorDiv = divs.eq(2);
filters.filters['author'].label = authorDiv.find('span').text().trim();
filters.filters['author'].label =
form.find('input[name="author"]').prev('span').text().trim() || 'Author';
// ==================== Artist ====================
const artistDiv = divs.eq(3);
filters.filters['artist'].label = artistDiv.find('span').text().trim();
filters.filters['artist'].label =
form.find('input[name="artist"]').prev('span').text().trim() || 'Artist';
// ==================== Release ====================
const releaseDiv = divs.eq(4);
filters.filters['release'].label = releaseDiv.find('span').text().trim();
filters.filters['release'].label =
form.find('input[name="release"]').prev('span').text().trim() ||
'Year of Released';
// ==================== Adult ====================
const adultDiv = divs.eq(5);
filters.filters['adult'].label = adultDiv.find('span').text().trim();
adultDiv.find('option').each((i, el) => {
filters.filters['adult'].label =
form.find('select[name="adult"]').prev('span').text().trim() ||
'Adult content';
form.find('select[name="adult"] > option').each((i, el) => {
const option = {
label: $(el).text().trim(),
value: decodeURI($(el).attr('value') || ''),
};
filters.filters['adult'].options.push(option);
});
if (filters.filters['adult'].options.length == 0) {
filters.filters['adult'].options = [
{ label: 'All', value: '' },
{ label: 'None adult content', value: '0' },
{ label: 'Only adult content', value: '1' },
];
}
// ==================== Status ====================
const statusDiv2 = divs.eq(6);
filters.filters['status[]'].label = statusDiv2.find('span').text().trim();
statusDiv2.find('label').each((i, el) => {
const option = {
label: $(el).text().trim(),
value: $(el).attr('for'),
};
filters.filters['status[]'].options.push(option);
});
filters.filters['status[]'].label =
form.find('input[name="status[]"]').parent().prev('span').text().trim() ||
'Status';
form
.find('input[name="status[]"]')
.next('label')
.each((i, el) => {
const option = {
label: $(el).text().trim(),
value: $(el).attr('for'),
};
filters.filters['status[]'].options.push(option);
});
// ==================== Order by ====================
const orderByDiv = $('div.c-nav-tabs').eq(0);
@@ -173,19 +185,37 @@ async function askGetFilter() {
"Do you want to get the filters from a URL or the html text? (if url dosen't work try html) (url/html): ",
async (method: string) => {
if (method.toLowerCase() === 'url') {
await readline.question(
EREASE_PREV_LINE +
'Enter the URL (same one as in sources.json): ',
async (url: string) => {
try {
await getFiltersFromURL(name, url);
} catch (e: any) {
console.error('Error while getting filters from', url);
console.log(e.message || e);
}
readline.close();
},
const sources = JSON.parse(
fs.readFileSync(path.join(__dirname, 'sources.json'), 'utf-8'),
);
const source = sources.find((s: any) => s.id === name);
if (source && source.sourceSite) {
console.log('Getting filters from', source.sourceSite);
try {
await getFiltersFromURL(name, source.sourceSite);
} catch (e: any) {
console.error(
'Error while getting filters from',
source.sourceSite,
);
console.log(e.message || e);
}
readline.close();
} else {
await readline.question(
EREASE_PREV_LINE +
'Enter the URL (same one as in sources.json): ',
async (url: string) => {
readline.close();
try {
await getFiltersFromURL(name, url);
} catch (e: any) {
console.error('Error while getting filters from', url);
console.log(e.message || e);
}
},
);
}
} else {
process.stdout.write(
EREASE_PREV_LINE +
+12 -77
View File
@@ -7,12 +7,6 @@
"useNewChapterEndpoint": true
}
},
{
"id": "zinnovel",
"sourceSite": "https://zinnovel.com/",
"sourceName": "ZinnNovel",
"options": {}
},
{
"id": "novelTL",
"sourceSite": "https://noveltranslate.com/",
@@ -35,11 +29,6 @@
"useNewChapterEndpoint": true
}
},
{
"id": "freenovel.me",
"sourceSite": "https://freenovel.me/",
"sourceName": "FreeNovelMe"
},
{
"id": "1stkissnovel",
"sourceSite": "https://1stkissnovel.org/",
@@ -50,10 +39,11 @@
},
{
"id": "daonovel",
"sourceSite": "https://www.daonovel.com/",
"sourceSite": "https://daonovel.co/",
"sourceName": "DaoNovel",
"options": {
"useNewChapterEndpoint": true
"useNewChapterEndpoint": true,
"versionIncrements": 1
}
},
{
@@ -99,11 +89,6 @@
"sourceSite": "https://www.webnovelover.com/",
"sourceName": "WebNovelLover"
},
{
"id": "readwebnovels",
"sourceSite": "https://readwebnovels.net/",
"sourceName": "ReadWebNovels"
},
{
"id": "wbnovel",
"sourceSite": "https://wbnovel.com/",
@@ -137,31 +122,24 @@
"lang": "Indonesian"
}
},
{
"id": "onlymtl",
"sourceSite": "https://www.onlymtl.com/",
"sourceName": "OnlyMTL",
"options": {
"useNewChapterEndpoint": true
}
},
{
"id": "hizomanga",
"sourceSite": "https://hizomanga.me/",
"sourceSite": "https://hizomanga.net/",
"sourceName": "HizoManga",
"options": {
"useNewChapterEndpoint": true,
"lang": "Arabic",
"versionIncrements": 1
"versionIncrements": 2
}
},
{
"id": "riwyat",
"sourceSite": "https://riwyat.com",
"sourceName": "\u0641\u0636\u0627\u0621 \u0627\u0644\u0631\u0648\u0627\u064a\u0627\u062a",
"sourceSite": "https://riwyat.com/",
"sourceName": "Riwyat",
"options": {
"useNewChapterEndpoint": true,
"lang": "Arabic"
"lang": "Arabic",
"versionIncrements": 1
}
},
{
@@ -188,14 +166,6 @@
"useNewChapterEndpoint": true
}
},
{
"id": "mtlnovel.club",
"sourceSite": "https://mtlnovel.club/",
"sourceName": "MTLNovel.Club",
"options": {
"useNewChapterEndpoint": true
}
},
{
"id": "guavaread",
"sourceSite": "https://guavaread.com/",
@@ -204,22 +174,6 @@
"useNewChapterEndpoint": true
}
},
{
"id": "sweetEscapeTL",
"sourceSite": "https://sweetescapetranslations.com/",
"sourceName": "Sweet Escape Translations",
"options": {
"useNewChapterEndpoint": false
}
},
{
"id": "novelstic",
"sourceSite": "https://novelstic.com/",
"sourceName": "Novelstic",
"options": {
"useNewChapterEndpoint": true
}
},
{
"id": "neosekaiTLS",
"sourceSite": "https://www.neosekaitranslations.com/",
@@ -239,26 +193,6 @@
"sourceName": "Zetro Translation",
"options": {}
},
{
"id": "nocturneTLS",
"sourceSite": "https://nocturnetls.net/",
"sourceName": "Nocturne Translations",
"options": {}
},
{
"id": "novelroom",
"sourceSite": "https://novelroom.net/",
"sourceName": "Novelroom.net",
"options": {}
},
{
"id": "novelr18",
"sourceSite": "https://novelr18.com/",
"sourceName": "NovelR18",
"options": {
"useNewChapterEndpoint": true
}
},
{
"id": "webnoveloku",
"sourceSite": "https://www.webnoveloku.com/",
@@ -381,7 +315,7 @@
{
"id": "translatinotaku",
"sourceSite": "https://translatinotaku.net/",
"sourceName": "Translation Otaku",
"sourceName": "TranslatinOtaku",
"options": {
"useNewChapterEndpoint": true,
"lang": "English"
@@ -393,7 +327,8 @@
"sourceName": "Dragon Tea",
"options": {
"useNewChapterEndpoint": true,
"lang": "English"
"lang": "English",
"versionIncrements": 1
}
},
{
+59 -29
View File
@@ -1,7 +1,7 @@
import { fetchApi, fetchFile } from '@libs/fetch';
import { Filters, FilterTypes } from '@libs/filterInputs';
import { Plugin } from '@typings/plugin';
import { CheerioAPI, load as parseHTML } from 'cheerio';
import { Cheerio, AnyNode, CheerioAPI, load as parseHTML } from 'cheerio';
import { defaultCover } from '@libs/defaultCover';
import { NovelStatus } from '@libs/novelStatus';
import dayjs from 'dayjs';
@@ -44,13 +44,47 @@ class MadaraPlugin implements Plugin.PluginBase {
this.filters = metadata.filters;
}
getHostname(url: string): string {
return url.split('/')[2];
translateDragontea(text: Cheerio<AnyNode>): Cheerio<AnyNode> {
if (this.id === 'dragontea') {
const $ = parseHTML(text.html() || '');
let sanitizedText = $.html() || '';
sanitizedText = sanitizedText.replace('\n', '');
sanitizedText = sanitizedText.replace(/<br\s*\/?>/g, '\n');
text.html(sanitizedText);
text.find(':not(:has(*))').each((i, el) => {
// Select only the deepest elements to avoid reversing the text twice
const $el = $(el);
const alphabet =
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
const reversedAlphabet =
'zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA'.split('');
const text = $el.text().normalize('NFD'); // Normalize the string to separate the accents
const reversedText = text.split('');
const reversedLetters = [...reversedText]
.map(letter => {
const baseLetter = letter.normalize('NFC');
const index = alphabet.indexOf(baseLetter);
return index !== -1
? reversedAlphabet[index] + letter.slice(baseLetter.length)
: letter;
})
.join('');
$el.html($el.html()?.replace($el.text(), reversedLetters).replace('\n', '<br>') || '');
});
}
return text;
}
async getCheerio(url: string): Promise<CheerioAPI> {
getHostname(url: string): string {
url = url.split('/')[2];
let url_parts = url.split('.');
url_parts.pop(); // remove TLD
return url_parts.join('.');
}
async getCheerio(url: string, search: boolean): Promise<CheerioAPI> {
const r = await fetchApi(url);
if (!r.ok)
if (!r.ok && search != true)
throw new Error(
'Could not reach site (' + r.status + ') try to open in webview.',
);
@@ -108,7 +142,7 @@ class MadaraPlugin implements Plugin.PluginBase {
}: Plugin.PopularNovelsOptions<typeof this.filters>,
): Promise<Plugin.NovelItem[]> {
let url = this.site + '/page/' + pageNo + '/?s=&post_type=wp-manga';
if (!filters) filters = {};
if (!filters) filters = this.filters || {};
if (showLatestNovels) url += '&m_orderby=latest';
for (const key in filters) {
if (typeof filters[key].value === 'object')
@@ -116,13 +150,12 @@ class MadaraPlugin implements Plugin.PluginBase {
url += `&${key}=${value}`;
else if (filters[key].value) url += `&${key}=${filters[key].value}`;
}
const loadedCheerio = await this.getCheerio(url);
const loadedCheerio = await this.getCheerio(url, false);
return this.parseNovels(loadedCheerio);
}
async parseNovel(novelPath: string): Promise<Plugin.SourceNovel> {
const body = await fetchApi(this.site + novelPath).then(res => res.text());
let loadedCheerio = parseHTML(body);
let loadedCheerio = await this.getCheerio(this.site + novelPath, false);
loadedCheerio('.manga-title-badges, #manga-title span').remove();
const novel: Plugin.SourceNovel = {
@@ -165,13 +198,11 @@ class MadaraPlugin implements Plugin.PluginBase {
});
loadedCheerio('div.summary__content .code-block,script').remove();
novel.summary =
loadedCheerio('div.summary__content').text().trim() ||
loadedCheerio('#tab-manga-about').text().trim() ||
loadedCheerio('.post-content_item h5:contains("Summary")')
.next()
.text()
.trim();
let summary =
loadedCheerio('div.summary__content') ||
loadedCheerio('#tab-manga-about') ||
loadedCheerio('.post-content_item h5:contains("Summary")').next();
novel.summary = this.translateDragontea(summary).text().trim();
const chapters: Plugin.ChapterItem[] = [];
let html = '';
@@ -229,19 +260,18 @@ class MadaraPlugin implements Plugin.PluginBase {
}
async parseChapter(chapterPath: string): Promise<string> {
const body = await fetchApi(this.site + chapterPath).then(res =>
res.text(),
);
const loadedCheerio = parseHTML(body);
const loadedCheerio = await this.getCheerio(this.site + chapterPath, false);
const chapterText =
loadedCheerio('.text-left').html() ||
loadedCheerio('.text-right').html() ||
loadedCheerio('.entry-content').html() ||
loadedCheerio('.c-blog-post > div > div:nth-child(2)').html() ||
'';
loadedCheerio('.text-left') ||
loadedCheerio('.text-right') ||
loadedCheerio('.entry-content') ||
loadedCheerio('.c-blog-post > div > div:nth-child(2)');
return chapterText;
if (this.id === 'riwyat') {
chapterText.find('span[style*="opacity: 0; position: fixed;"]').remove();
}
chapterText.find('div.text-right').attr('style', 'text-align: right;');
return this.translateDragontea(chapterText).html() || '';
}
async searchNovels(
@@ -250,12 +280,12 @@ class MadaraPlugin implements Plugin.PluginBase {
): Promise<Plugin.NovelItem[]> {
const url =
this.site +
'page/' +
'/page/' +
pageNo +
'/?s=' +
searchTerm +
'&post_type=wp-manga';
const loadedCheerio = await this.getCheerio(url);
const loadedCheerio = await this.getCheerio(url, true);
return this.parseNovels(loadedCheerio);
}