Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
324 changes: 324 additions & 0 deletions plugins/multisrc/madara/filters/novelnice.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,324 @@
{
"filters": {
"genre[]": {
"type": "Checkbox",
"label": "Genre",
"value": [],
"options": [
{
"label": "Action",
"value": "action"
},
{
"label": "Adventure",
"value": "adventure"
},
{
"label": "Anime & Comics",
"value": "anime-comics"
},
{
"label": "Comedy",
"value": "comedy"
},
{
"label": "Drama",
"value": "drama"
},
{
"label": "Eastern",
"value": "eastern"
},
{
"label": "Fan-fiction",
"value": "fan-fiction"
},
{
"label": "Fanfiction",
"value": "fanfiction"
},
{
"label": "Fantasy",
"value": "fantasy"
},
{
"label": "Game",
"value": "game"
},
{
"label": "Games",
"value": "games"
},
{
"label": "Gender Bender",
"value": "gender-bender"
},
{
"label": "General",
"value": "general"
},
{
"label": "Harem",
"value": "harem"
},
{
"label": "Historical",
"value": "historical"
},
{
"label": "Horror",
"value": "horror"
},
{
"label": "Isekai",
"value": "isekai"
},
{
"label": "Josei",
"value": "josei"
},
{
"label": "LitRPG",
"value": "litrpg"
},
{
"label": "Magic",
"value": "magic"
},
{
"label": "Magical Realism",
"value": "magical-realism"
},
{
"label": "Martial Arts",
"value": "martial-arts"
},
{
"label": "Mature",
"value": "mature"
},
{
"label": "Mecha",
"value": "mecha"
},
{
"label": "Modern Life",
"value": "modern-life"
},
{
"label": "Mystery",
"value": "mystery"
},
{
"label": "Other",
"value": "other"
},
{
"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": "System",
"value": "system"
},
{
"label": "Thriller",
"value": "thriller"
},
{
"label": "Tragedy",
"value": "tragedy"
},
{
"label": "Urban",
"value": "urban"
},
{
"label": "Urban Life",
"value": "urban-life"
},
{
"label": "Video Games",
"value": "video-games"
},
{
"label": "War",
"value": "war"
},
{
"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"
}
]
}
}
}
9 changes: 9 additions & 0 deletions plugins/multisrc/madara/sources.json
Original file line number Diff line number Diff line change
Expand Up @@ -651,5 +651,14 @@
"useNewChapterEndpoint": true,
"versionIncrements": 2
}
},
{
"id": "novelnice",
"sourceSite": "https://novelnice.com/",
"sourceName": "Novel Nice",
"options": {
"lang": "English",
"useNewChapterEndpoint": true
}
}
]
24 changes: 24 additions & 0 deletions plugins/multisrc/madara/template.ts
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,30 @@ export class MadaraPlugin implements Plugin.PluginBase {
method: 'POST',
referrer: this.site + novelPath,
}).then((res: Response) => res.text());

const $firstPage = parseHTML(html);
const pageLinks = $firstPage('.pagination a[data-page]');
if (pageLinks.length > 0) {
const maxPage = Math.max(
...pageLinks
.map((_, el) =>
parseInt($firstPage(el).attr('data-page') || '1', 10),
)
.get(),
);
const lastHref = pageLinks.last().attr('href') || '';
const queryIndex = lastHref.indexOf('?');
if (queryIndex !== -1) {
const queryTemplate = lastHref.slice(queryIndex).replace(/\d+$/, '');
for (let page = 2; page <= maxPage; page++) {
const pageHtml = await fetchApi(
this.site + novelPath + 'ajax/chapters/' + queryTemplate + page,
{ method: 'POST', referrer: this.site + novelPath },
).then((res: Response) => res.text());
if (pageHtml && pageHtml !== '0') html += pageHtml;
}
}
}
} else {
const novelId =
loadedCheerio('.rating-post-id').attr('value') ||
Expand Down
Binary file added public/static/multisrc/madara/novelnice/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading