diff --git a/src/scraper/ScraperAnimeModel.ts b/src/scraper/ScraperAnimeModel.ts index bdaefff..0b9dda7 100644 --- a/src/scraper/ScraperAnimeModel.ts +++ b/src/scraper/ScraperAnimeModel.ts @@ -1,5 +1,5 @@ import { Anime } from "../types/anime"; -import { IResultSearch, IAnimeSearch } from "../types/search"; +import { type IResultSearch, type IAnimeSearch } from "../types/search"; import { Episode } from "../types/episode"; export abstract class AnimeProviderModel { diff --git a/src/scraper/sites/anime/animeBlixs/AnimeBlix.ts b/src/scraper/sites/anime/animeBlixs/AnimeBlix.ts index 7c3930d..83aa1a5 100644 --- a/src/scraper/sites/anime/animeBlixs/AnimeBlix.ts +++ b/src/scraper/sites/anime/animeBlixs/AnimeBlix.ts @@ -5,8 +5,8 @@ import { Episode, EpisodeServer } from "../../../../types/episode"; import { AnimeSearch, ResultSearch, - IResultSearch, - IAnimeSearch, + type IResultSearch, + type IAnimeSearch, } from "../../../../types/search"; import { AnimeProviderModel } from "../../../ScraperAnimeModel"; //import { Calendar } from "@animetypes/date"; diff --git a/src/scraper/sites/anime/animeflv/AnimeFlv.ts b/src/scraper/sites/anime/animeflv/AnimeFlv.ts index 5cdbae1..5c43387 100644 --- a/src/scraper/sites/anime/animeflv/AnimeFlv.ts +++ b/src/scraper/sites/anime/animeflv/AnimeFlv.ts @@ -11,8 +11,8 @@ import { import { AnimeSearch, ResultSearch, - IResultSearch, - IAnimeSearch, + type IResultSearch, + type IAnimeSearch, } from "../../../../types/search"; import { AnimeProviderModel } from "../../../ScraperAnimeModel"; diff --git a/src/scraper/sites/anime/animelatinohd/AnimeLatinoHD.ts b/src/scraper/sites/anime/animelatinohd/AnimeLatinoHD.ts index 719e531..cc5ad4c 100644 --- a/src/scraper/sites/anime/animelatinohd/AnimeLatinoHD.ts +++ b/src/scraper/sites/anime/animelatinohd/AnimeLatinoHD.ts @@ -5,8 +5,8 @@ import { Episode, EpisodeServer } from "../../../../types/episode"; import { AnimeSearch, ResultSearch, - IResultSearch, - IAnimeSearch, + type IResultSearch, + type IAnimeSearch, } from "../../../../types/search"; import { AnimeProviderModel } from "../../../ScraperAnimeModel"; diff --git a/src/scraper/sites/anime/animevostfr/Animevostfr.ts b/src/scraper/sites/anime/animevostfr/Animevostfr.ts index 9aa9a1c..c9334a0 100644 --- a/src/scraper/sites/anime/animevostfr/Animevostfr.ts +++ b/src/scraper/sites/anime/animevostfr/Animevostfr.ts @@ -5,8 +5,8 @@ import { Episode, EpisodeServer } from "../../../../types/episode"; import { AnimeSearch, ResultSearch, - IResultSearch, - IAnimeSearch, + type IResultSearch, + type IAnimeSearch, } from "../../../../types/search"; import { AnimeProviderModel } from "../../../ScraperAnimeModel"; //import { Calendar } from "@animetypes/date"; diff --git a/src/scraper/sites/anime/gogoanime/Gogoanime.ts b/src/scraper/sites/anime/gogoanime/Gogoanime.ts index 301d40d..70cae33 100644 --- a/src/scraper/sites/anime/gogoanime/Gogoanime.ts +++ b/src/scraper/sites/anime/gogoanime/Gogoanime.ts @@ -1,181 +1,148 @@ -/* import { getHTML } from "./assets/getHTML"; +import { getHTML } from "./assets/getHTML"; import { Anime } from "../../../../types/anime"; import { getAllAnimes } from "./assets/getAllAnimesHTML"; import { Episode } from "../../../../types/episode"; - //This is a class export class GogoanimeInfo { - async getAnimeInfo(animeName: string) { - - try { - - const $ = await getHTML(`https://www3.gogoanimes.fi/category/${animeName}`); - - const anime = new Anime; - - anime.genres = []; - - anime.name = $("div.anime_info_body_bg h1").text(); - - anime.image = { - url: $("div.anime_info_body_bg ").find("img").attr("src") - } - - anime.alt_name = $("div.anime_info_body_bg"). - find("p"). - last(). - text(). - replace("Other name: ", ""). - trim(); - - - - $("div.anime_info_body_bg p.type a").each((iterator, elementHTML) => { - - if (iterator) - - anime.genres.push($(elementHTML).html()); - - }) - - - $('div.anime_info_body_bg p.type').each((index, element) => { - //Skips for first p.type - if (index) - - if (index == 1) { - anime.synopsis = $(element).text().replace('Plot Summary: ', '').trim(); - } - - if (index == 4 && $(element).text().trim() != 'Status: ') { + try { + const $ = await getHTML( + `https://www3.gogoanimes.fi/category/${animeName}` + ); + + const anime = new Anime(); + + anime.genres = []; + + anime.name = $("div.anime_info_body_bg h1").text(); + + anime.image = { + url: $("div.anime_info_body_bg ").find("img").attr("src"), + }; + + anime.alt_name = $("div.anime_info_body_bg") + .find("p") + .last() + .text() + .replace("Other name: ", "") + .trim(); + + $("div.anime_info_body_bg p.type a").each((iterator, elementHTML) => { + if (iterator) anime.genres.push($(elementHTML).html()); + }); + + $("div.anime_info_body_bg p.type").each((index, element) => { + //Skips for first p.type + if (index) + if (index == 1) { + anime.synopsis = $(element) + .text() + .replace("Plot Summary: ", "") + .trim(); + } + + if (index == 4 && $(element).text().trim() != "Status: ") { anime.status = true; - } - - if (index == 5) { - anime.alt_name = $(element).text().trim() - .replace('Other name:', '') - .replace(/\s/g, '') } - }) - + if (index == 5) { + anime.alt_name = $(element) + .text() + .trim() + .replace("Other name:", "") + .replace(/\s/g, ""); + } + }); - let getNumberEpisodes: any = $('#episode_page li').last().text().trim().split("-")[1]; - getNumberEpisodes = parseInt(getNumberEpisodes); + let getNumberEpisodes: any = $("#episode_page li") + .last() + .text() + .trim() + .split("-")[1]; + getNumberEpisodes = parseInt(getNumberEpisodes); - for (let index = 1; index <= getNumberEpisodes; index++) { - anime.episodes.push({ + for (let index = 1; index <= getNumberEpisodes; index++) { + anime.episodes.push({ name: `${animeName}-cap-${index}`, - url: `/anime/gogoanime/episode/${animeName}/${index}`,//sorry for the change + url: `/anime/gogoanime/episode/${animeName}/${index}`, //sorry for the change number: `${index}`, - image: "That isn't image" - }) - } - - return anime + image: "That isn't image", + }); + } - } catch(error) { + return anime; + } catch (error) { return error; } - - } - } export class GogoanimeFilter { + async getAnimesfilterByGenre(genre: string, numPage: number) { + let animesByGenre = await getAllAnimes( + `https://www3.gogoanimes.fi/genre/${genre}`, + numPage + ); - async getAnimesfilterByGenre(genre: string, numPage: number) { - - - let animesByGenre = await getAllAnimes( - - `https://www3.gogoanimes.fi/genre/${genre}`, numPage - - ) - - - return animesByGenre; - - } - - - async filterBySeasons( season: string, year: string, numPage: number ) { + return animesByGenre; + } + async filterBySeasons(season: string, year: string, numPage: number) { let animes = await getAllAnimes( - `https://www3.gogoanimes.fi/sub-category/${season}-${year}-anime`, numPage + `https://www3.gogoanimes.fi/sub-category/${season}-${year}-anime`, + numPage ); - - return animes - + return animes; } - } - - - export class GogoanimeServer { - - async getAnimeServerEpisode(animeName: string, episodeNumber: number) { - - + async getAnimeServerEpisode(animeName: string, episodeNumber: number) { let serverUrl: string; let serverName: string; const $ = await getHTML( - `https://www3.gogoanimes.fi/${animeName}-episode-${episodeNumber}` + `https://www3.gogoanimes.fi/${animeName}-episode-${episodeNumber}` ); const episode = new Episode(); - - episode.name = "This isn't name"; - episode.servers = []; - - - - $(".anime_muti_link ul li ").each((iterator, element) => { + episode.name = "This isn't name"; + episode.servers = []; - if (iterator == 0 || iterator == 1){ - - serverName = $(element).find("a").text(). - replace(" this server", "").trim(); + $(".anime_muti_link ul li ").each((iterator, element) => { + if (iterator == 0 || iterator == 1) { + serverName = $(element) + .find("a") + .text() + .replace(" this server", "") + .trim(); serverUrl = `http:${$(element).find("a").attr("data-video")}`; - - episode.servers.push({ + episode.servers.push({ name: serverName, - url: serverUrl + url: serverUrl, }); - - }if(iterator > 2) { - - - serverName = $(element).find("a").text(). - replace(" this server", "").trim(); - - serverUrl = $(element).find("a").attr("data-video"); + } + if (iterator > 2) { + serverName = $(element) + .find("a") + .text() + .replace(" this server", "") + .trim(); + serverUrl = $(element).find("a").attr("data-video"); - episode.servers.push({ + episode.servers.push({ name: serverName, - url: serverUrl + url: serverUrl, }); - } - - }) + }); return episode; } - } - - - - */ diff --git a/src/scraper/sites/anime/monoschinos/Monoschinos.ts b/src/scraper/sites/anime/monoschinos/Monoschinos.ts index 6acbd4a..935d13f 100644 --- a/src/scraper/sites/anime/monoschinos/Monoschinos.ts +++ b/src/scraper/sites/anime/monoschinos/Monoschinos.ts @@ -4,8 +4,8 @@ import { api, utils } from "../../../../types/utils"; import * as types from "../../../../types/."; import { ResultSearch, - IResultSearch, - IAnimeSearch, + type IResultSearch, + type IAnimeSearch, } from "../../../../types/search"; const PageInfo = { @@ -32,9 +32,9 @@ async function getEpisodeServers(url: string): Promise { new types.EpisodeServer( $(element).text().trim(), Buffer.from($(element).attr("data-player"), "base64").toString( - "binary", - ), - ), + "binary" + ) + ) ); }); return servers; @@ -103,7 +103,7 @@ function getAnimeEpisodes($): types.Episode[] { episode.name = $(element).find("img.animeimghv").attr("alt"); episode.url = api.getEpisodeURL( PageInfo, - $(element).find("a").attr("href"), + $(element).find("a").attr("href") ); episodes.push(episode); }); @@ -157,7 +157,7 @@ async function getAnime(url: string): Promise { // The anime page in monoschinos does not define the chronology and type const $ = cheerio.load((await axios.get(url)).data); const calendar = getAnimeCalendar( - $($("div.chapterdetails nav").children()[1]), + $($("div.chapterdetails nav").children()[1]) ); const anime = new types.Anime(); anime.name = $("div.chapterdetails").find("h1").text(); @@ -167,7 +167,7 @@ async function getAnime(url: string): Promise { anime.genres = getGenres($); anime.image = new types.Image( $("div.chapterpic img").attr("src"), - $("div.herobg img").attr("src"), + $("div.herobg img").attr("src") ); anime.status = "estreno" === $("div.butns button.btn1").text().toLowerCase().trim(); @@ -186,7 +186,7 @@ async function getAnime(url: string): Promise { async function getLastAnimes(url?: string): Promise { let animes: types.Anime[] = []; const $ = cheerio.load( - (await axios.get(url ?? `${PageInfo.url}/emision`)).data, + (await axios.get(url ?? `${PageInfo.url}/emision`)).data ); const elements = $("div.heroarea div.heromain div.row").children(); for (let i = 0; i < elements.length; i++) { @@ -221,7 +221,7 @@ export class Monoschinos { category?: string, genre?: string, year?: string, - letter?: string, + letter?: string ): Promise> { const animes = new ResultSearch(); const link = utils.isUsableValue(name) diff --git a/src/scraper/sites/anime/tioanime/TioAnime.ts b/src/scraper/sites/anime/tioanime/TioAnime.ts index 55ce4f8..dd0e14b 100644 --- a/src/scraper/sites/anime/tioanime/TioAnime.ts +++ b/src/scraper/sites/anime/tioanime/TioAnime.ts @@ -4,8 +4,8 @@ import { utils } from "../../../../types/utils"; import * as types from "../../../../types/."; import { ResultSearch, - IResultSearch, - IAnimeSearch, + type IResultSearch, + type IAnimeSearch, } from "../../../../types/search"; const PageInfo = { @@ -21,8 +21,8 @@ function getAnimeChronology($) { new types.Chronology( $(element).find("h3.title").text(), PageInfo.url + $(element).find("div.media-body a").attr("href"), - PageInfo.url + $(element).find("figure.fa-play-circle img").attr("src"), - ), + PageInfo.url + $(element).find("figure.fa-play-circle img").attr("src") + ) ); }); return chrono_list; @@ -37,11 +37,11 @@ async function getEpisodeServers(url) { const videos = new Function( script .substring(0, script.indexOf("$(document)")) - .replace("var videos =", "return"), + .replace("var videos =", "return") )(); for (let i = 0; i < videos.length; i++) { servers.push( - new types.EpisodeServer(videos[i][0], videos[i][1].replace("\\", "")), + new types.EpisodeServer(videos[i][0], videos[i][1].replace("\\", "")) ); } @@ -149,7 +149,7 @@ async function getAnime(url) { //anime.url = url; anime.url = url.replace( "https://tioanime.com/anime/", - "/anime/tioanime/name/", + "/anime/tioanime/name/" ); //anime.type = $('div.meta span.anime-type-peli').text(); anime.type = (() => { @@ -171,8 +171,8 @@ async function getAnime(url) { new types.Calendar( data.info.length < 4 ? parseInt($("div.meta span.year").text().trim().substring(0, 4)) - : new Date(data.info[3]).getFullYear(), - ), + : new Date(data.info[3]).getFullYear() + ) ); anime.synopsis = $("p.sinopsis").text().trim(); anime.genres = getGenres($, $("div.container p.genres span")); @@ -180,7 +180,7 @@ async function getAnime(url) { PageInfo.url + $("div.container div.thumb figure img").attr("src"), $("figure.backdrop img").attr("src") == undefined ? "" - : PageInfo.url + $("figure.backdrop img").attr("src"), + : PageInfo.url + $("figure.backdrop img").attr("src") ); anime.status = $("div.thumb a.status").text().trim() === "En emision"; anime.station = $("div.meta span.fa-snowflake").text().trim().split("\n")[0]; @@ -197,7 +197,7 @@ async function getLastAnimes(url: string) { const elements = $( utils.isUsableValue(url) ? "ul.animes" - : "div.container section ul.list-unstyled.row li", + : "div.container section ul.list-unstyled.row li" ).children(); for (let i = 0; i < elements.length; i++) { const anime_url = $(elements[i]).find("article.anime a").attr("href"); @@ -216,15 +216,14 @@ async function getSectionContents(section: number) { let animes: types.IAnime[] = []; try { const $ = cheerio.load( - (await axios.get(`${PageInfo.url}/directorio?type%5B%5D=${section}`)) - .data, + (await axios.get(`${PageInfo.url}/directorio?type%5B%5D=${section}`)).data ); const elements = $(`ul.animes`).children(); for (let i = 0; i < elements.length; i++) { animes.push( await getAnime( - PageInfo.url + $(elements[i]).find("article.anime a").attr("href"), - ), + PageInfo.url + $(elements[i]).find("article.anime a").attr("href") + ) ); } } catch (error) { @@ -284,7 +283,7 @@ export class TioAnime { genres?: string[], year_range?: IYearRange, status?: number, - sort?: string, + sort?: string ): Promise> { const animes = new ResultSearch(); let usable; @@ -298,11 +297,11 @@ export class TioAnime { ? `q=${name}` : `${this.arrayToURLParams("type", types)}${this.arrayToURLParams( "genero", - genres, + genres )}year=${year_range.begin}%2C${year_range.end}&status=${ status ?? 2 }&sort=${sort ?? "recent"}` - }`, + }` ) ).forEach((element) => { if (utils.isUsableValue(element)) { diff --git a/src/scraper/sites/anime/wcostream/WcoStream.ts b/src/scraper/sites/anime/wcostream/WcoStream.ts index a3fdc50..730b6cb 100644 --- a/src/scraper/sites/anime/wcostream/WcoStream.ts +++ b/src/scraper/sites/anime/wcostream/WcoStream.ts @@ -3,8 +3,8 @@ import axios from "axios"; import { Anime } from "../../../../types/anime"; import { Episode, EpisodeServer } from "../../../../types/episode"; import { - IResultSearch, - IAnimeSearch, + type IResultSearch, + type IAnimeSearch, ResultSearch, AnimeSearch, } from "../../../../types/search"; diff --git a/src/scraper/sites/anime/zoro/Zoro.ts b/src/scraper/sites/anime/zoro/Zoro.ts index df00ab3..67acb94 100644 --- a/src/scraper/sites/anime/zoro/Zoro.ts +++ b/src/scraper/sites/anime/zoro/Zoro.ts @@ -5,7 +5,7 @@ import { Episode, EpisodeServer } from "../../../../types/episode"; import { AnimeSearch, ResultSearch, - IAnimeSearch, + type IAnimeSearch, } from "../../../../types/search"; import { AnimeProviderModel } from "../../../ScraperAnimeModel"; diff --git a/src/scraper/sites/doramas/dramanice/Dramanice.ts b/src/scraper/sites/doramas/dramanice/Dramanice.ts index a8087c4..a84b5b4 100644 --- a/src/scraper/sites/doramas/dramanice/Dramanice.ts +++ b/src/scraper/sites/doramas/dramanice/Dramanice.ts @@ -5,8 +5,8 @@ import { Episode, EpisodeServer } from "../../../../types/episode"; import { AnimeSearch, ResultSearch, - IResultSearch, - IAnimeSearch, + type IResultSearch, + type IAnimeSearch, } from "../../../../types/search"; export class Dramanice { @@ -132,8 +132,8 @@ export class Dramanice { Server.url = "https://filemoon.sx" + "/e/" + id_file }*/ AnimeEpisodeInfo.servers.push(Server); - }, - ), + } + ) ); return AnimeEpisodeInfo; @@ -147,7 +147,7 @@ export class Dramanice { type?: number, page?: number, year?: string, - genre?: string, + genre?: string ): Promise> { try { const { data } = await axios.get(`${this.api}/api/anime/list`, { diff --git a/src/scraper/sites/manga/MangaBuddy/MangaBuddy.ts b/src/scraper/sites/manga/MangaBuddy/MangaBuddy.ts index d04a3b8..feede7d 100644 --- a/src/scraper/sites/manga/MangaBuddy/MangaBuddy.ts +++ b/src/scraper/sites/manga/MangaBuddy/MangaBuddy.ts @@ -1,7 +1,11 @@ import axios from "axios"; import { load } from "cheerio"; -import { Manga, IMangaChapter, IMangaResult } from "../../../../types/manga"; -import { IResultSearch } from "@animetypes/search"; +import { + Manga, + type IMangaChapter, + type IMangaResult, +} from "../../../../types/manga"; +import { type IResultSearch } from "@animetypes/search"; export class MangaBuddy { readonly url = "https://mangabuddy.com"; @@ -60,10 +64,10 @@ export class MangaBuddy { const dateText = $(e).find("time.chapter-update").text().trim(); //date string const yearMangaVerification = Number.isNaN( - Number(dateText.split(" ")[2]), + Number(dateText.split(" ")[2]) ); const dayMangaVerification = Number.isNaN( - Number(dateText.split(" ")[0]), + Number(dateText.split(" ")[0]) ); let monthAbbr; diff --git a/src/scraper/sites/manga/MangaReader/MangaReader.ts b/src/scraper/sites/manga/MangaReader/MangaReader.ts index b17c1e6..20ee896 100644 --- a/src/scraper/sites/manga/MangaReader/MangaReader.ts +++ b/src/scraper/sites/manga/MangaReader/MangaReader.ts @@ -1,6 +1,6 @@ import { Image } from "../../../../types/image"; import { - IMangaResult, + type IMangaResult, Manga, MangaChapter, MangaVolume, @@ -12,7 +12,7 @@ import { MangaReaderChapterType, MangaReaderFilterData, } from "./MangaReaderTypes"; -import { IResultSearch, ResultSearch } from "../../../../types/search"; +import { type IResultSearch, ResultSearch } from "../../../../types/search"; export class MangaReader { readonly url = "https://mangareader.to"; @@ -22,7 +22,7 @@ export class MangaReader { const $ = load(data); const rangeResult: number[] = $( - "div.volume-list-ul div.manga_list div.manga_list-wrap", + "div.volume-list-ul div.manga_list div.manga_list-wrap" ) .find("div.item") .map((_, element) => { @@ -41,7 +41,7 @@ export class MangaReader { mangaId: number, chapterNumber: number, language: (typeof MangaReaderFilterLanguage)[number], - type: MangaReaderChapterType, + type: MangaReaderChapterType ): Promise { const { data } = await axios.get(`${this.url}/a-${mangaId}`); const $ = load(data); @@ -91,11 +91,11 @@ export class MangaReader { else if (type === "volume") idType = "vol"; const { data: pagesAjaxData } = await axios.get( - `${this.url}/ajax/image/list/${idType}/${chapterId}?mode=horizontal&quality=high`, + `${this.url}/ajax/image/list/${idType}/${chapterId}?mode=horizontal&quality=high` ); const $pagesAjaxData = load(pagesAjaxData.html); const pagesSection = $pagesAjaxData( - "div#main-wrapper div.container-reader-hoz div#divslide div.divslide-wrapper div.ds-item", + "div#main-wrapper div.container-reader-hoz div#divslide div.divslide-wrapper div.ds-item" ).find("div.ds-image"); let pages = pagesSection @@ -109,14 +109,14 @@ export class MangaReader { try { const { data } = await axios.get(`${this.url}/a-${mangaId}`); const { data: charactersAjaxList } = await axios.get( - `${this.url}/ajax/character/list/${mangaId}`, + `${this.url}/ajax/character/list/${mangaId}` ); const $ = load(data); const $characterListAjaxResult = load(charactersAjaxList.html); const charactersSection = $characterListAjaxResult( - "div.character-list div.cl-item div.cli-info", + "div.character-list div.cl-item div.cli-info" ); const title = $("h2.manga-name").text().trim(); @@ -124,7 +124,7 @@ export class MangaReader { ? Array.of($("div.manga-name-or").text().trim()) : null; const thumbnailUrl = $("div.manga-poster img.manga-poster-img").attr( - "src", + "src" ); const description = $("div.description").text().trim(); const status = $("div.anisc-info div.item") @@ -196,7 +196,7 @@ export class MangaReader { manga.volumes = []; const mangaVolumeItemSection = $( - "div.volume-list-ul div.manga_list div.manga_list-wrap", + "div.volume-list-ul div.manga_list div.manga_list-wrap" ); let langVolumeCode: string = ``; @@ -243,13 +243,13 @@ export class MangaReader { } catch (error) { console.log(error); throw new Error( - "I've found an error while trying to get the manga info.", + "I've found an error while trying to get the manga info." ); } } async Filter( - options: MangaReaderFilterData, + options: MangaReaderFilterData ): Promise> { const { type, @@ -337,11 +337,11 @@ export class MangaReader { mangaId: number, chapterNumber: number, language: (typeof MangaReaderFilterLanguage)[number], - type: MangaReaderChapterType, + type: MangaReaderChapterType ) { try { const { data } = await axios.get( - `${this.url}/read/a-${mangaId}/${language}/${type}-${chapterNumber}`, + `${this.url}/read/a-${mangaId}/${language}/${type}-${chapterNumber}` ); const $ = load(data); @@ -353,7 +353,7 @@ export class MangaReader { mangaId, chapterNumber, language, - type, + type ); if (type === "chapter") { @@ -384,7 +384,7 @@ export class MangaReader { } catch (error) { console.log(error); throw new Error( - `I've found an error while trying to get the manga ${type} pages.`, + `I've found an error while trying to get the manga ${type} pages.` ); } } diff --git a/src/scraper/sites/manga/comick/Comick.ts b/src/scraper/sites/manga/comick/Comick.ts index fca0ad6..c898807 100644 --- a/src/scraper/sites/manga/comick/Comick.ts +++ b/src/scraper/sites/manga/comick/Comick.ts @@ -1,7 +1,11 @@ import * as cheerio from "cheerio"; import axios from "axios"; -import { Manga, MangaChapter, IMangaResult } from "../../../../types/manga"; -import { IResultSearch } from "../../../../types/search"; +import { + Manga, + MangaChapter, + type IMangaResult, +} from "../../../../types/manga"; +import { type IResultSearch } from "../../../../types/search"; //Default Set Axios Cookie axios.defaults.withCredentials = true; @@ -28,7 +32,7 @@ export class Comick { search?: string, type?: number, year?: string, - genre?: string, + genre?: string ) { try { const { data } = await axios.get(`${this.api}/v1.0/search`, { @@ -59,7 +63,7 @@ export class Comick { url: `/manga/comick/title/${e.slug}`, }; ResultList.results.push(ListMangaResult); - }, + } ); return ResultList; @@ -77,14 +81,14 @@ export class Comick { const mangaInfoParseObj = data; const dataApi = await axios.get( - `${this.api}/comic/${mangaInfoParseObj.comic.hid}/chapters${currentLang}`, + `${this.api}/comic/${mangaInfoParseObj.comic.hid}/chapters${currentLang}` ); const MangaInfo: Manga = { id: mangaInfoParseObj.comic.id, title: mangaInfoParseObj.comic.title, altTitles: mangaInfoParseObj.comic.md_titles.map( - (e: { title: string }) => e.title, + (e: { title: string }) => e.title ), url: `/manga/comick/title/${mangaInfoParseObj.comic.slug}`, description: mangaInfoParseObj.comic.desc, @@ -93,7 +97,7 @@ export class Comick { status: mangaInfoParseObj.comic.status == "1" ? "ongoing" : "completed", authors: mangaInfoParseObj.authors.map((e: { name: string }) => e.name), genres: mangaInfoParseObj.comic.md_comic_md_genres.map( - (e: { md_genres: { name: string } }) => e.md_genres.name, + (e: { md_genres: { name: string } }) => e.md_genres.name ), chapters: [], thumbnail: { @@ -131,9 +135,9 @@ export class Comick { }, }; return MangaInfo.chapters.push( - !langChapter.includes("?lang=id") ? MangaInfoChapter : null, + !langChapter.includes("?lang=id") ? MangaInfoChapter : null ); - }, + } ); return MangaInfo; @@ -159,7 +163,7 @@ export class Comick { } const { data } = await axios.get( - `${this.url}/comic/${title}/${urlchange}`, + `${this.url}/comic/${title}/${urlchange}` ); const $ = cheerio.load(data); @@ -181,7 +185,7 @@ export class Comick { name: e.name, image: "https://meo.comick.pictures/" + e.b2key, }; - }, + } ), cover: "https://meo.comick.pictures/" + @@ -200,7 +204,7 @@ export class Comick { ? `${title}/${hid}.json?slug=${title}&chapter=${hid}` : `${title}/${hid}-chapter-${idNumber}${currentLang}.json?slug=${title}&chapter=${hid}-chapter-${idNumber}${currentLang}`; const dataBuild = await axios.get( - `${this.url}/_next/data/${buildid}/comic/${currentUrl}`, + `${this.url}/_next/data/${buildid}/comic/${currentUrl}` ); const mindate = new Date(dataBuild.data.pageProps.chapter.created_at); @@ -218,7 +222,7 @@ export class Comick { name: s.name, image: "https://meo.comick.pictures/" + s.b2key, }; - }, + } ), cover: "https://meo.comick.pictures/" + diff --git a/src/scraper/sites/manga/inmanga/Inmanga.ts b/src/scraper/sites/manga/inmanga/Inmanga.ts index f78ba6d..3e7e7d3 100644 --- a/src/scraper/sites/manga/inmanga/Inmanga.ts +++ b/src/scraper/sites/manga/inmanga/Inmanga.ts @@ -1,7 +1,11 @@ import * as cheerio from "cheerio"; import axios from "axios"; -import { Manga, MangaChapter, IMangaResult } from "../../../../types/manga"; -import { IResultSearch } from "../../../../types/search"; +import { + Manga, + MangaChapter, + type IMangaResult, +} from "../../../../types/manga"; +import { type IResultSearch } from "../../../../types/search"; //Default Set Axios Cookie axios.defaults.withCredentials = true; @@ -83,7 +87,7 @@ export class Inmanga { if (genreList.includes(e)) { formdata.append( "filter[generes][]", - genreList[genreList.indexOf(e)], + genreList[genreList.indexOf(e)] ); } }); @@ -94,7 +98,7 @@ export class Inmanga { const bodyContent = formdata; const { data } = await axios.post( `${this.url}/manga/getMangasConsultResult`, - bodyContent, + bodyContent ); const $ = cheerio.load(data); @@ -141,7 +145,7 @@ export class Inmanga { altTitles: [], url: `/manga/inmanga/title/${manga}`, description: $_( - "body > div > section > div > div > div:nth-child(6) > div > div.panel-body", + "body > div > section > div > div > div:nth-child(6) > div > div.panel-body" ) .text() .trim(), @@ -160,19 +164,19 @@ export class Inmanga { }; $_( - ".col-md-9.col-sm-8.col-xs-12 .panel.widget .panel-heading .text-muted span", + ".col-md-9.col-sm-8.col-xs-12 .panel.widget .panel-heading .text-muted span" ).each((_i, e) => - MangaInfo.altTitles.push($_(e).text().replace(";", "")), + MangaInfo.altTitles.push($_(e).text().replace(";", "")) ); $_( - ".col-md-9.col-sm-8.col-xs-12 .panel.widget .panel-heading .label.ml-sm", + ".col-md-9.col-sm-8.col-xs-12 .panel.widget .panel-heading .label.ml-sm" ).each((_i, e) => MangaInfo.genres.push($_(e).text().trim())); MangaInfo.altTitles.slice(MangaInfo.altTitles.indexOf('""'), 0); MangaInfo.genres.slice(MangaInfo.genres.indexOf('""'), 0); const dataChPost = await axios.get( - `${this.url}/chapter/getall?mangaIdentification=${cid}`, + `${this.url}/chapter/getall?mangaIdentification=${cid}` ); const dataCh = JSON.parse(dataChPost.data.data); dataCh.result.map( @@ -196,7 +200,7 @@ export class Inmanga { }, }; MangaInfo.chapters.push(MangaInfoChapter); - }, + } ); return MangaInfo; @@ -211,7 +215,7 @@ export class Inmanga { const idNumber = Number(manga.substring(manga.lastIndexOf("-") + 1)); const { data } = await axios.get( - `${this.url}/chapter/chapterIndexControls?identification=${cid}`, + `${this.url}/chapter/chapterIndexControls?identification=${cid}` ); const $ = cheerio.load(data); diff --git a/src/scraper/sites/manga/manganelo/Manganelo.ts b/src/scraper/sites/manga/manganelo/Manganelo.ts index 8a59f1f..5e8f0c0 100644 --- a/src/scraper/sites/manga/manganelo/Manganelo.ts +++ b/src/scraper/sites/manga/manganelo/Manganelo.ts @@ -3,7 +3,7 @@ import axios from "axios"; import { load } from "cheerio"; import { Image } from "../../../../types/image"; import { ManganatoManagerUtils } from "./ManganatoManagerUtils"; -import { IManganatoFilterParams } from "./ManganatoTypes"; +import { type IManganatoFilterParams } from "./ManganatoTypes"; import { ResultSearch } from "../../../../types/search"; export class Manganelo { @@ -25,7 +25,7 @@ export class Manganelo { private GetMangaStatus(data: cheerio.Root) { const selector = data( - "div.panel-story-info > div.story-info-right > table > tbody > tr:nth-child(3) > td.table-value", + "div.panel-story-info > div.story-info-right > table > tbody > tr:nth-child(3) > td.table-value" ); if (selector.length == 0) return null; @@ -36,7 +36,7 @@ export class Manganelo { private GetMangaAuthors(data: cheerio.Root): string[] | null { const selector = data( - "div.panel-story-info > div.story-info-right > table > tbody > tr:nth-child(2) > td.table-value", + "div.panel-story-info > div.story-info-right > table > tbody > tr:nth-child(2) > td.table-value" ); if (selector.length == 0 && selector.find("a.a-h").length == 0) return null; @@ -51,7 +51,7 @@ export class Manganelo { private GetMangaGenres(data: cheerio.Root): string[] | null { const selector = data( - "div.panel-story-info > div.story-info-right > table > tbody > tr:nth-child(4) > td.table-value", + "div.panel-story-info > div.story-info-right > table > tbody > tr:nth-child(4) > td.table-value" ); if (selector.length == 0 && selector.find("a.a-h").length == 0) return null; @@ -67,7 +67,7 @@ export class Manganelo { private isNsfw(genres: string[]) { return genres.some( (genre) => - genre === "Pornographic" || genre === "Mature" || genre === "Erotica", + genre === "Pornographic" || genre === "Mature" || genre === "Erotica" ); } @@ -124,7 +124,7 @@ export class Manganelo { const thumbnail = this.url + $( - "div.panel-story-info > div.story-info-left > span.info-image > img", + "div.panel-story-info > div.story-info-left > span.info-image > img" ).attr("src"); const altTitle = $("table > tbody > tr:nth-child(1) > td.table-value > h2") .text() @@ -181,7 +181,7 @@ export class Manganelo { async GetMangaChapters(mangaId: string, chapterNumber: number) { const { data } = await axios.get( - `${this.url}/chapter/manga-${mangaId}/chapter-${chapterNumber}`, + `${this.url}/chapter/manga-${mangaId}/chapter-${chapterNumber}` ); const $ = load(data); diff --git a/src/scraper/sites/manga/manganelo/managers/ManganatoURLManager.ts b/src/scraper/sites/manga/manganelo/managers/ManganatoURLManager.ts index cf1e266..abccecf 100644 --- a/src/scraper/sites/manga/manganelo/managers/ManganatoURLManager.ts +++ b/src/scraper/sites/manga/manganelo/managers/ManganatoURLManager.ts @@ -1,6 +1,6 @@ import { URLSearchParams } from "url"; import { - IManganatoFilterParams, + type IManganatoFilterParams, ManganatoFilterURLParams, manganatoGenreList, manganatoOrderByOptions, @@ -43,7 +43,7 @@ export class ManganatoAdvancedSearchURLManager extends ManganatoManager { private processOrderBy(order: unknown) { return typeof order === "string" && manganatoOrderByOptionsList.includes( - order.toLowerCase() as manganatoOrderByOptions, + order.toLowerCase() as manganatoOrderByOptions ) ? order : ""; diff --git a/src/scraper/sites/manga/nhentai/Nhentai.ts b/src/scraper/sites/manga/nhentai/Nhentai.ts index 7593b9b..61496c2 100644 --- a/src/scraper/sites/manga/nhentai/Nhentai.ts +++ b/src/scraper/sites/manga/nhentai/Nhentai.ts @@ -1,7 +1,7 @@ import axios from "axios"; import { load } from "cheerio"; import { getFilterByPages } from "./assets/getFilterByPage"; -import { IMangaChapter, Manga } from "../../../../types/manga"; +import { type IMangaChapter, Manga } from "../../../../types/manga"; export class Nhentai { async filter(mangaName: string) { @@ -102,9 +102,9 @@ class NhentaiGetMangaChapters { mangaImagesPages.push( $(chapterImage) .attr("data-src") - .replace("cdn.dogehls.xyz", "t7.nhentai.net"), + .replace("cdn.dogehls.xyz", "t7.nhentai.net") ); - }, + } ); mangaChapters.push({