From 41c9e23297a24048be3c9d8d99eea88916f3be2d Mon Sep 17 00:00:00 2001 From: Rojikku Date: Fri, 6 Feb 2026 16:50:17 -0500 Subject: [PATCH 1/2] feat: NovelNinja --- .../multisrc/madara/filters/novelninja.json | 160 ++++++++++++++++++ plugins/multisrc/madara/sources.json | 8 + 2 files changed, 168 insertions(+) create mode 100644 plugins/multisrc/madara/filters/novelninja.json diff --git a/plugins/multisrc/madara/filters/novelninja.json b/plugins/multisrc/madara/filters/novelninja.json new file mode 100644 index 000000000..459807004 --- /dev/null +++ b/plugins/multisrc/madara/filters/novelninja.json @@ -0,0 +1,160 @@ +{ + "filters": { + "genre[]": { + "type": "Checkbox", + "label": "Genre", + "value": [], + "options": [ + { + "label": "Action", + "value": "action" + }, + { + "label": "Adventure", + "value": "adventure" + }, + { + "label": "Childhood Friend", + "value": "childhood-friend" + }, + { + "label": "Comedy", + "value": "comedy" + }, + { + "label": "Drama", + "value": "drama" + }, + { + "label": "Economic Thriller", + "value": "economic-thriller" + }, + { + "label": "Fantasy", + "value": "fantasy" + }, + { + "label": "Harem", + "value": "harem" + }, + { + "label": "Isekai", + "value": "isekai" + }, + { + "label": "Kingdom Buidling", + "value": "kingdom-buidling" + }, + { + "label": "Otome Game", + "value": "otome-game" + }, + { + "label": "Production / Producer", + "value": "production-producer" + }, + { + "label": "Reincarnation", + "value": "reincarnation" + }, + { + "label": "Romance", + "value": "romance" + }, + { + "label": "School Life", + "value": "school-life" + }, + { + "label": "Sci-Fi", + "value": "sci-fi" + }, + { + "label": "Slice of Life", + "value": "slice-of-life" + } + ] + }, + "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" + } + ] + } + } +} \ No newline at end of file diff --git a/plugins/multisrc/madara/sources.json b/plugins/multisrc/madara/sources.json index e3b5c7f75..a757a9004 100644 --- a/plugins/multisrc/madara/sources.json +++ b/plugins/multisrc/madara/sources.json @@ -631,5 +631,13 @@ "lang": "English", "useNewChapterEndpoint": true } + }, + { + "id": "novelninja", + "sourceSite": "https://novelninja.xyz/", + "sourceName": "Novel Ninja", + "options": { + "useNewChapterEndpoint": true + } } ] From 5f46c8fbc46b5e9e604ff193d7c2ba8616f36794 Mon Sep 17 00:00:00 2001 From: Rojikku Date: Fri, 6 Feb 2026 17:44:36 -0500 Subject: [PATCH 2/2] chore: Create icon --- .../static/multisrc/madara/novelninja/icon.png | Bin 0 -> 9568 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/static/multisrc/madara/novelninja/icon.png diff --git a/public/static/multisrc/madara/novelninja/icon.png b/public/static/multisrc/madara/novelninja/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cbb238614b3d8a62db28405250ccf75fc5cfd4f1 GIT binary patch literal 9568 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 z