From 74d81b2ff2412d0eae814abc30927339caba21fb Mon Sep 17 00:00:00 2001 From: Elfing <106489440+elfing44@users.noreply.github.com> Date: Tue, 21 May 2024 08:19:09 +0200 Subject: [PATCH] Feat: add warriorlegendtrad (#942) --- icons/src/fr/warriorlegendtrad/icon.png | Bin 0 -> 18320 bytes plugins/french/warriorlegendtrad.ts | 204 ++++++++++++++++++++++++ 2 files changed, 204 insertions(+) create mode 100644 icons/src/fr/warriorlegendtrad/icon.png create mode 100644 plugins/french/warriorlegendtrad.ts diff --git a/icons/src/fr/warriorlegendtrad/icon.png b/icons/src/fr/warriorlegendtrad/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1b15a1cf71defbe90480f41308639925a53c0596 GIT binary patch literal 18320 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 literal 0 HcmV?d00001 diff --git a/plugins/french/warriorlegendtrad.ts b/plugins/french/warriorlegendtrad.ts new file mode 100644 index 0000000..fb720df --- /dev/null +++ b/plugins/french/warriorlegendtrad.ts @@ -0,0 +1,204 @@ +import { CheerioAPI, load } from 'cheerio'; +import { fetchApi, fetchFile } from '@libs/fetch'; +import { Plugin } from '@typings/plugin'; +import { Filters } from '@libs/filterInputs'; +import { defaultCover } from '@libs/defaultCover'; +import { NovelStatus } from '@libs/novelStatus'; +import dayjs from 'dayjs'; + +class WarriorLegendTradPlugin implements Plugin.PluginBase { + id = 'warriorlegendtrad'; + name = 'Warrior Legend Trad'; + icon = 'src/fr/warriorlegendtrad/icon.png'; + site = 'https://warriorlegendtrad.fr'; + version = '1.0.0'; + filters: Filters | undefined = undefined; + + regexAuthors = [/Auteur\u00A0:([^\n]*)/]; + + regexGenres = [/Genre :([^\n]*)/]; + + regexSummary = [/Synopsis\u00A0:([\s\S]*)index chapitre :/i]; + + async getCheerio(url: string): Promise { + const r = await fetchApi(url); + const body = await r.text(); + const $ = load(body); + return $; + } + + async popularNovels( + pageNo: number, + { + showLatestNovels, + filters, + }: Plugin.PopularNovelsOptions, + ): Promise { + if (pageNo > 2) return []; + + const novels: Plugin.NovelItem[] = []; + let novel: Plugin.NovelItem; + let url; + // light novel + if (pageNo === 1) { + url = this.site + '/light-novel'; + } + // Original creation + else { + url = this.site + '/crea'; + } + + let $ = await this.getCheerio(url); + $('div div div article').each((i, elem) => { + const novelName = $(elem).find('.entry-wrapper h2').first().text().trim(); + const novelUrl = $(elem).find('.entry-wrapper h2 a').attr('href'); + const novelCover = + $(elem).find('figure a img').attr('src') || defaultCover; + + if (novelUrl && novelName) { + novel = { + name: novelName, + cover: novelCover, + path: novelUrl.replace(this.site, ''), + }; + novels.push(novel); + } + }); + return novels; + } + + async parseNovel(novelPath: string): Promise { + const novel: Plugin.SourceNovel = { + path: novelPath, + name: 'Sans titre', + }; + + let $ = await this.getCheerio(this.site + novelPath); + + novel.name = $('.site-main article header h1').text().trim(); + novel.cover = + $('.site-main article figure img').first().attr('src') || defaultCover; + const entryContentText = $('.entry-content').text(); + novel.author = this.extractInfo(entryContentText, this.regexAuthors); + novel.genres = this.extractInfo(entryContentText, this.regexGenres); + novel.summary = this.extractInfo(entryContentText, this.regexSummary); + novel.status = this.getStatus(entryContentText); + + let chapters: Plugin.ChapterItem[] = []; + $('div div article div') + .find('h2 a, h3 a') + .each((i, elem) => { + const chapterName = $(elem).text().trim(); + const chapterUrl = $(elem).attr('href'); + const releaseDate = dayjs( + chapterUrl?.substring(this.site.length + 1, this.site.length + 11), + ).format('DD MMMM YYYY'); + if (chapterUrl && chapterUrl.includes(this.site) && chapterName) { + chapters.push({ + name: chapterName, + path: chapterUrl.replace(this.site, ''), + releaseTime: releaseDate, + }); + } + }); + + //We sort by date because the elements are not in a fixed order, + //and then by name because there are chapters with the same dates. + novel.chapters = chapters.sort((a, b) => { + if (!a.releaseTime) return 1; + if (!b.releaseTime) return -1; + const dateA = new Date(a.releaseTime).getTime(); + const dateB = new Date(b.releaseTime).getTime(); + const dateComparison = dateA - dateB; + if (dateComparison === 0) { + return a.name.localeCompare(b.name); + } + return dateComparison; + }); + return novel; + } + + extractInfo(text: string, regexes: RegExp[]): string { + for (const regex of regexes) { + const match = regex.exec(text); + if (match !== null) { + return match[1].trim(); + } + } + return ''; + } + + getStatus(text: string) { + const regexSummary = [ + /État sur le site :([^\n]*)/i, + /état sur le site:([^\n]*)/i, + ]; + + const status = this.extractInfo(text, regexSummary); + if (status.includes('en cours')) { + return NovelStatus.Ongoing; + } else if (status.includes('en pause')) { + return NovelStatus.OnHiatus; + } else if (status.includes('terminé')) { + return NovelStatus.Completed; + } else if (status.includes('abandonné')) { + return NovelStatus.Cancelled; + } + + return NovelStatus.Ongoing; + } + + async parseChapter(chapterPath: string): Promise { + const $ = await this.getCheerio(this.site + chapterPath); + var contenuHtml = ''; + $('.entry-content') + .contents() + .each(function () { + if ( + !$.html(this)?.startsWith(' { + if (pageNo !== 1) return []; + + let popularNovels = this.popularNovels(1, { + showLatestNovels: true, + filters: undefined, + }); + + let novels = (await popularNovels).filter(novel => + novel.name + .toLowerCase() + .normalize('NFD') + .replace(/[\u0300-\u036f]/g, '') + .trim() + .includes( + searchTerm + .toLowerCase() + .normalize('NFD') + .replace(/[\u0300-\u036f]/g, '') + .trim(), + ), + ); + + return novels; + } + + async fetchImage(url: string): Promise { + // if your plugin has images and they won't load + // this is the function to fiddle with + return fetchFile(url); + } +} + +export default new WarriorLegendTradPlugin();