fix(novelfire): fix changing filters causing results to disappear (#2220)
* fix(novelfire): fix changing filters causing results to disappear Signed-off-by: K1ngfish3r <26593485+K1ngfish3r@users.noreply.github.com> * Update index.ts Signed-off-by: K1ngfish3r <26593485+K1ngfish3r@users.noreply.github.com> --------- Signed-off-by: K1ngfish3r <26593485+K1ngfish3r@users.noreply.github.com>
This commit is contained in:
@@ -9,11 +9,11 @@ import { storage } from '@libs/storage';
|
||||
class NovelFire implements Plugin.PluginBase {
|
||||
id = 'novelfire';
|
||||
name = 'Novel Fire';
|
||||
version = '1.4.2';
|
||||
version = '1.4.3';
|
||||
icon = 'src/en/novelfire/icon.png';
|
||||
site = 'https://novelfire.net/';
|
||||
webStorageUtilized = true;
|
||||
novelList: string[] = [];
|
||||
novelList = new Set<string>();
|
||||
draw = 0;
|
||||
|
||||
pluginSettings = {
|
||||
@@ -50,45 +50,44 @@ class NovelFire implements Plugin.PluginBase {
|
||||
parseNovels(
|
||||
loadedCheerio: CheerioAPI,
|
||||
selector = '.novel-item',
|
||||
isFirstPage = false,
|
||||
): Plugin.NovelItem[] {
|
||||
return loadedCheerio(selector)
|
||||
.map((_, el) => {
|
||||
const $el = loadedCheerio(el);
|
||||
const titleElement = $el.find('.novel-title > a');
|
||||
const fallbackElement = $el.find('a');
|
||||
const novels: Plugin.NovelItem[] = [];
|
||||
|
||||
const novelName =
|
||||
titleElement.text() ||
|
||||
fallbackElement.attr('title') ||
|
||||
'No Title Found';
|
||||
const elements = loadedCheerio(selector).toArray();
|
||||
for (const el of elements) {
|
||||
const $el = loadedCheerio(el);
|
||||
|
||||
const imgElement = $el.find('.novel-cover > img');
|
||||
const rawSrc = imgElement.attr('data-src') ?? imgElement.attr('src');
|
||||
const novelCover = rawSrc
|
||||
? new URL(rawSrc, this.site).href
|
||||
: defaultCover;
|
||||
const novelName =
|
||||
$el.find('a').attr('title') ?? $el.find('h4').text().trim();
|
||||
const novelPath =
|
||||
$el.children('a').attr('href') ?? $el.find('h4 a').attr('href');
|
||||
|
||||
const novelPath =
|
||||
titleElement.attr('href') || fallbackElement.attr('href');
|
||||
if (!novelPath) continue;
|
||||
|
||||
if (!novelPath) return null;
|
||||
const path = new URL(novelPath, this.site).pathname.substring(1);
|
||||
|
||||
return {
|
||||
name: novelName,
|
||||
cover: novelCover,
|
||||
path: new URL(novelPath, this.site).pathname.substring(1),
|
||||
};
|
||||
})
|
||||
.get()
|
||||
.filter(novel => novel !== null)
|
||||
.filter(novel => {
|
||||
if (this.novelList.includes(novel.path)) {
|
||||
return false;
|
||||
} else {
|
||||
this.novelList.push(novel.path);
|
||||
return true;
|
||||
}
|
||||
if (!isFirstPage) {
|
||||
if (this.novelList.has(path)) continue;
|
||||
this.novelList.add(path);
|
||||
} else {
|
||||
this.novelList.add(path);
|
||||
}
|
||||
|
||||
const imgElement = $el.find('.novel-cover > img');
|
||||
const rawSrc = imgElement.attr('data-src') ?? imgElement.attr('src');
|
||||
const novelCover = rawSrc
|
||||
? new URL(rawSrc, this.site).href
|
||||
: defaultCover;
|
||||
|
||||
novels.push({
|
||||
name: novelName,
|
||||
cover: novelCover,
|
||||
path,
|
||||
});
|
||||
}
|
||||
|
||||
return novels;
|
||||
}
|
||||
|
||||
async popularNovels(
|
||||
@@ -99,9 +98,10 @@ class NovelFire implements Plugin.PluginBase {
|
||||
}: Plugin.PopularNovelsOptions<typeof this.filters>,
|
||||
): Promise<Plugin.NovelItem[]> {
|
||||
if (pageNo === 1) {
|
||||
this.novelList = [];
|
||||
this.novelList.clear();
|
||||
this.draw = 0;
|
||||
}
|
||||
|
||||
const url = this.site + 'search-adv';
|
||||
const params = new URLSearchParams();
|
||||
|
||||
@@ -125,7 +125,7 @@ class NovelFire implements Plugin.PluginBase {
|
||||
false,
|
||||
);
|
||||
|
||||
return this.parseNovels(loadedCheerio);
|
||||
return this.parseNovels(loadedCheerio, '.novel-item', pageNo === 1);
|
||||
}
|
||||
|
||||
async getAllChapters(
|
||||
@@ -425,7 +425,7 @@ class NovelFire implements Plugin.PluginBase {
|
||||
page: number,
|
||||
): Promise<Plugin.NovelItem[]> {
|
||||
if (page === 1) {
|
||||
this.novelList = [];
|
||||
this.novelList.clear();
|
||||
this.draw = 0;
|
||||
}
|
||||
const params = new URLSearchParams();
|
||||
@@ -437,7 +437,11 @@ class NovelFire implements Plugin.PluginBase {
|
||||
|
||||
const loadedCheerio = load(body);
|
||||
|
||||
return this.parseNovels(loadedCheerio, '.novel-list.chapters .novel-item');
|
||||
return this.parseNovels(
|
||||
loadedCheerio,
|
||||
'.novel-list.chapters .novel-item',
|
||||
page === 1,
|
||||
);
|
||||
}
|
||||
|
||||
filters = {
|
||||
|
||||
+90
-88
@@ -158,94 +158,95 @@ import p_155 from '@plugins/french/chireads';
|
||||
import p_156 from '@plugins/french/harkeneliwood';
|
||||
import p_157 from '@plugins/french/kisswood';
|
||||
import p_158 from '@plugins/french/noveldeglace';
|
||||
import p_159 from '@plugins/french/novhell';
|
||||
import p_160 from '@plugins/french/warriorlegendtrad';
|
||||
import p_161 from '@plugins/french/wuxialnscantrad';
|
||||
import p_162 from '@plugins/french/xiaowaz';
|
||||
import p_163 from '@plugins/indonesian/BacaLightNovel[lightnovelwp]';
|
||||
import p_164 from '@plugins/indonesian/MTLNovel(ID)[mtlnovel]';
|
||||
import p_165 from '@plugins/indonesian/MeioNovel[madara]';
|
||||
import p_166 from '@plugins/indonesian/NovelBookID[madara]';
|
||||
import p_167 from '@plugins/indonesian/SekteNovel[lightnovelwp]';
|
||||
import p_168 from '@plugins/indonesian/Vanovel[madara]';
|
||||
import p_169 from '@plugins/indonesian/WBNovel[madara]';
|
||||
import p_170 from '@plugins/indonesian/indowebnovel';
|
||||
import p_171 from '@plugins/indonesian/sakuranovel';
|
||||
import p_172 from '@plugins/japanese/Syosetu';
|
||||
import p_173 from '@plugins/japanese/kakuyomu';
|
||||
import p_174 from '@plugins/korean/Agitoon';
|
||||
import p_175 from '@plugins/korean/FortuneEternal[madara]';
|
||||
import p_176 from '@plugins/multi/komga';
|
||||
import p_177 from '@plugins/polish/novelki';
|
||||
import p_178 from '@plugins/portuguese/BetterNovels[lightnovelwp]';
|
||||
import p_179 from '@plugins/portuguese/CentralNovel[lightnovelwp]';
|
||||
import p_180 from '@plugins/portuguese/Kiniga[madara]';
|
||||
import p_181 from '@plugins/portuguese/LaNovels[hotnovelpub]';
|
||||
import p_182 from '@plugins/portuguese/LightNovelBrasil[lightnovelwp]';
|
||||
import p_183 from '@plugins/portuguese/MTLNovel(PT)[mtlnovel]';
|
||||
import p_184 from '@plugins/portuguese/blogdoamonnovels';
|
||||
import p_185 from '@plugins/portuguese/illusia';
|
||||
import p_186 from '@plugins/portuguese/novelmania';
|
||||
import p_187 from '@plugins/portuguese/tsundoku';
|
||||
import p_188 from '@plugins/russian/Bllate[rulate]';
|
||||
import p_189 from '@plugins/russian/Bookhamster[ifreedom]';
|
||||
import p_190 from '@plugins/russian/Erolate[rulate]';
|
||||
import p_191 from '@plugins/russian/EzNovels[hotnovelpub]';
|
||||
import p_192 from '@plugins/russian/MTLNovel(RU)[mtlnovel]';
|
||||
import p_193 from '@plugins/russian/NovelCool(RU)[novelcool]';
|
||||
import p_194 from '@plugins/russian/Ranobes(RU)[ranobes]';
|
||||
import p_195 from '@plugins/russian/Rulate[rulate]';
|
||||
import p_196 from '@plugins/russian/authortoday';
|
||||
import p_197 from '@plugins/russian/bookriver';
|
||||
import p_198 from '@plugins/russian/ficbook';
|
||||
import p_199 from '@plugins/russian/jaomix';
|
||||
import p_200 from '@plugins/russian/neobook';
|
||||
import p_201 from '@plugins/russian/novelTL';
|
||||
import p_202 from '@plugins/russian/ranobehub';
|
||||
import p_203 from '@plugins/russian/ranobelib';
|
||||
import p_204 from '@plugins/russian/ranoberf';
|
||||
import p_205 from '@plugins/russian/renovels';
|
||||
import p_206 from '@plugins/russian/topliba';
|
||||
import p_207 from '@plugins/russian/zelluloza';
|
||||
import p_208 from '@plugins/russian/СвободныйМирРанобэ[ifreedom]';
|
||||
import p_209 from '@plugins/spanish/AllNovelRead[lightnovelwp]';
|
||||
import p_210 from '@plugins/spanish/AnimesHoy12[madara]';
|
||||
import p_211 from '@plugins/spanish/LightNovelDaily[hotnovelpub]';
|
||||
import p_212 from '@plugins/spanish/MTLNovel(ES)[mtlnovel]';
|
||||
import p_213 from '@plugins/spanish/NOVA';
|
||||
import p_214 from '@plugins/spanish/PanchoTranslations[madara]';
|
||||
import p_215 from '@plugins/spanish/TC&Sega[lightnovelwp]';
|
||||
import p_216 from '@plugins/spanish/TraduccionesAmistosas[madara]';
|
||||
import p_217 from '@plugins/spanish/hasutl';
|
||||
import p_218 from '@plugins/spanish/novelasligera';
|
||||
import p_219 from '@plugins/spanish/novelawuxia';
|
||||
import p_220 from '@plugins/spanish/novelyra';
|
||||
import p_221 from '@plugins/spanish/oasistranslations';
|
||||
import p_222 from '@plugins/spanish/skynovels';
|
||||
import p_223 from '@plugins/spanish/tunovelaligera';
|
||||
import p_224 from '@plugins/spanish/yukitls';
|
||||
import p_225 from '@plugins/thai/NovelLucky[madara]';
|
||||
import p_226 from '@plugins/thai/NovelPDF[madara]';
|
||||
import p_227 from '@plugins/turkish/ArazNovel[madara]';
|
||||
import p_228 from '@plugins/turkish/EKTAPLAR[madara]';
|
||||
import p_229 from '@plugins/turkish/KodeksLibrary[lightnovelwp]';
|
||||
import p_230 from '@plugins/turkish/MangaTR';
|
||||
import p_231 from '@plugins/turkish/NABSCANS[madara]';
|
||||
import p_232 from '@plugins/turkish/Namevt[lightnovelwp]';
|
||||
import p_233 from '@plugins/turkish/NovelTR[lightnovelwp]';
|
||||
import p_234 from '@plugins/turkish/Noveloku[madara]';
|
||||
import p_235 from '@plugins/turkish/RagnarScans[madara]';
|
||||
import p_236 from '@plugins/turkish/ThNovels[hotnovelpub]';
|
||||
import p_237 from '@plugins/turkish/TurkceLightNovels[madara]';
|
||||
import p_238 from '@plugins/turkish/WebNovelOku[madara]';
|
||||
import p_239 from '@plugins/turkish/epiknovel';
|
||||
import p_240 from '@plugins/turkish/kakikata[madara]';
|
||||
import p_241 from '@plugins/ukrainian/bakainua';
|
||||
import p_242 from '@plugins/ukrainian/smakolykytl';
|
||||
import p_243 from '@plugins/vietnamese/LNHako';
|
||||
import p_244 from '@plugins/vietnamese/lightnovelvn';
|
||||
import p_245 from '@plugins/vietnamese/nettruyen';
|
||||
import p_246 from '@plugins/vietnamese/truyenss';
|
||||
import p_159 from '@plugins/french/novelfrance';
|
||||
import p_160 from '@plugins/french/novhell';
|
||||
import p_161 from '@plugins/french/warriorlegendtrad';
|
||||
import p_162 from '@plugins/french/wuxialnscantrad';
|
||||
import p_163 from '@plugins/french/xiaowaz';
|
||||
import p_164 from '@plugins/indonesian/BacaLightNovel[lightnovelwp]';
|
||||
import p_165 from '@plugins/indonesian/MTLNovel(ID)[mtlnovel]';
|
||||
import p_166 from '@plugins/indonesian/MeioNovel[madara]';
|
||||
import p_167 from '@plugins/indonesian/NovelBookID[madara]';
|
||||
import p_168 from '@plugins/indonesian/SekteNovel[lightnovelwp]';
|
||||
import p_169 from '@plugins/indonesian/Vanovel[madara]';
|
||||
import p_170 from '@plugins/indonesian/WBNovel[madara]';
|
||||
import p_171 from '@plugins/indonesian/indowebnovel';
|
||||
import p_172 from '@plugins/indonesian/sakuranovel';
|
||||
import p_173 from '@plugins/japanese/Syosetu';
|
||||
import p_174 from '@plugins/japanese/kakuyomu';
|
||||
import p_175 from '@plugins/korean/Agitoon';
|
||||
import p_176 from '@plugins/korean/FortuneEternal[madara]';
|
||||
import p_177 from '@plugins/multi/komga';
|
||||
import p_178 from '@plugins/polish/novelki';
|
||||
import p_179 from '@plugins/portuguese/BetterNovels[lightnovelwp]';
|
||||
import p_180 from '@plugins/portuguese/CentralNovel[lightnovelwp]';
|
||||
import p_181 from '@plugins/portuguese/Kiniga[madara]';
|
||||
import p_182 from '@plugins/portuguese/LaNovels[hotnovelpub]';
|
||||
import p_183 from '@plugins/portuguese/LightNovelBrasil[lightnovelwp]';
|
||||
import p_184 from '@plugins/portuguese/MTLNovel(PT)[mtlnovel]';
|
||||
import p_185 from '@plugins/portuguese/blogdoamonnovels';
|
||||
import p_186 from '@plugins/portuguese/illusia';
|
||||
import p_187 from '@plugins/portuguese/novelmania';
|
||||
import p_188 from '@plugins/portuguese/tsundoku';
|
||||
import p_189 from '@plugins/russian/Bllate[rulate]';
|
||||
import p_190 from '@plugins/russian/Bookhamster[ifreedom]';
|
||||
import p_191 from '@plugins/russian/Erolate[rulate]';
|
||||
import p_192 from '@plugins/russian/EzNovels[hotnovelpub]';
|
||||
import p_193 from '@plugins/russian/MTLNovel(RU)[mtlnovel]';
|
||||
import p_194 from '@plugins/russian/NovelCool(RU)[novelcool]';
|
||||
import p_195 from '@plugins/russian/Ranobes(RU)[ranobes]';
|
||||
import p_196 from '@plugins/russian/Rulate[rulate]';
|
||||
import p_197 from '@plugins/russian/authortoday';
|
||||
import p_198 from '@plugins/russian/bookriver';
|
||||
import p_199 from '@plugins/russian/ficbook';
|
||||
import p_200 from '@plugins/russian/jaomix';
|
||||
import p_201 from '@plugins/russian/neobook';
|
||||
import p_202 from '@plugins/russian/novelTL';
|
||||
import p_203 from '@plugins/russian/ranobehub';
|
||||
import p_204 from '@plugins/russian/ranobelib';
|
||||
import p_205 from '@plugins/russian/ranoberf';
|
||||
import p_206 from '@plugins/russian/renovels';
|
||||
import p_207 from '@plugins/russian/topliba';
|
||||
import p_208 from '@plugins/russian/zelluloza';
|
||||
import p_209 from '@plugins/russian/СвободныйМирРанобэ[ifreedom]';
|
||||
import p_210 from '@plugins/spanish/AllNovelRead[lightnovelwp]';
|
||||
import p_211 from '@plugins/spanish/AnimesHoy12[madara]';
|
||||
import p_212 from '@plugins/spanish/LightNovelDaily[hotnovelpub]';
|
||||
import p_213 from '@plugins/spanish/MTLNovel(ES)[mtlnovel]';
|
||||
import p_214 from '@plugins/spanish/NOVA';
|
||||
import p_215 from '@plugins/spanish/PanchoTranslations[madara]';
|
||||
import p_216 from '@plugins/spanish/TC&Sega[lightnovelwp]';
|
||||
import p_217 from '@plugins/spanish/TraduccionesAmistosas[madara]';
|
||||
import p_218 from '@plugins/spanish/hasutl';
|
||||
import p_219 from '@plugins/spanish/novelasligera';
|
||||
import p_220 from '@plugins/spanish/novelawuxia';
|
||||
import p_221 from '@plugins/spanish/novelyra';
|
||||
import p_222 from '@plugins/spanish/oasistranslations';
|
||||
import p_223 from '@plugins/spanish/skynovels';
|
||||
import p_224 from '@plugins/spanish/tunovelaligera';
|
||||
import p_225 from '@plugins/spanish/yukitls';
|
||||
import p_226 from '@plugins/thai/NovelLucky[madara]';
|
||||
import p_227 from '@plugins/thai/NovelPDF[madara]';
|
||||
import p_228 from '@plugins/turkish/ArazNovel[madara]';
|
||||
import p_229 from '@plugins/turkish/EKTAPLAR[madara]';
|
||||
import p_230 from '@plugins/turkish/KodeksLibrary[lightnovelwp]';
|
||||
import p_231 from '@plugins/turkish/MangaTR';
|
||||
import p_232 from '@plugins/turkish/NABSCANS[madara]';
|
||||
import p_233 from '@plugins/turkish/Namevt[lightnovelwp]';
|
||||
import p_234 from '@plugins/turkish/NovelTR[lightnovelwp]';
|
||||
import p_235 from '@plugins/turkish/Noveloku[madara]';
|
||||
import p_236 from '@plugins/turkish/RagnarScans[madara]';
|
||||
import p_237 from '@plugins/turkish/ThNovels[hotnovelpub]';
|
||||
import p_238 from '@plugins/turkish/TurkceLightNovels[madara]';
|
||||
import p_239 from '@plugins/turkish/WebNovelOku[madara]';
|
||||
import p_240 from '@plugins/turkish/epiknovel';
|
||||
import p_241 from '@plugins/turkish/kakikata[madara]';
|
||||
import p_242 from '@plugins/ukrainian/bakainua';
|
||||
import p_243 from '@plugins/ukrainian/smakolykytl';
|
||||
import p_244 from '@plugins/vietnamese/LNHako';
|
||||
import p_245 from '@plugins/vietnamese/lightnovelvn';
|
||||
import p_246 from '@plugins/vietnamese/nettruyen';
|
||||
import p_247 from '@plugins/vietnamese/truyenss';
|
||||
|
||||
const PLUGINS: Plugin.PluginBase[] = [
|
||||
p_0,
|
||||
@@ -495,5 +496,6 @@ const PLUGINS: Plugin.PluginBase[] = [
|
||||
p_244,
|
||||
p_245,
|
||||
p_246,
|
||||
p_247,
|
||||
];
|
||||
export default PLUGINS;
|
||||
|
||||
Reference in New Issue
Block a user