From 533ae5da2d757b2ae96ee2321e4df65d6a4417ea Mon Sep 17 00:00:00 2001 From: capitanwesler Date: Mon, 12 Apr 2021 23:17:01 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=A6=BE=20Adding=20the=20nextEpisodeDate?= =?UTF-8?q?=20and=20the=20anime=20state?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/AnimeController.ts | 2 +- src/controllers/DirectoryController.ts | 14 ++++---- src/utils/util.ts | 45 ++++++++++++++++++++++++-- 3 files changed, 52 insertions(+), 9 deletions(-) diff --git a/src/controllers/AnimeController.ts b/src/controllers/AnimeController.ts index 243ac15..a351160 100644 --- a/src/controllers/AnimeController.ts +++ b/src/controllers/AnimeController.ts @@ -654,7 +654,7 @@ export default class AnimeController { episodes = await jkanimeInfo(searchAnime?.id); break; case 'monoschinos': - episodes = await monoschinosInfo(searchAnime?.id); + episodes = await monoschinosInfo(searchAnime?.id, searchAnime?.mal_id); break; default: episodes = undefined; diff --git a/src/controllers/DirectoryController.ts b/src/controllers/DirectoryController.ts index 15933fc..4ea2d2f 100644 --- a/src/controllers/DirectoryController.ts +++ b/src/controllers/DirectoryController.ts @@ -280,17 +280,19 @@ export default class DirectoryController { $or: [{ title: { $eq: title } }, { title: { $eq: `${title} (TV)` } }], }); + const extraInfo: any = await animeExtraInfo(resultQuery!.mal_id); + switch (resultQuery?.source) { case 'animeflv': resultAnime = { title: resultQuery?.title, poster: resultQuery?.poster, synopsis: resultQuery?.description, - status: resultQuery?.state, + status: !extraInfo.aired.to ? 'En emisión' : 'Finalizado', type: resultQuery?.type, rating: resultQuery?.score, genres: resultQuery?.genres, - moreInfo: [await animeExtraInfo(resultQuery!.mal_id)], + moreInfo: [extraInfo], promo: await getAnimeVideoPromo(resultQuery!.mal_id), characters: await getAnimeCharacters(resultQuery!.mal_id), related: await getRelatedAnimesFLV(resultQuery!.id), @@ -301,11 +303,11 @@ export default class DirectoryController { title: resultQuery?.title, poster: resultQuery?.poster, synopsis: resultQuery?.description, - status: resultQuery?.state, + status: !extraInfo.aired.to ? 'En emisión' : 'Finalizado', type: resultQuery?.type, rating: resultQuery?.score, genres: resultQuery?.genres, - moreInfo: [await animeExtraInfo(resultQuery!.mal_id)], + moreInfo: [extraInfo], promo: await getAnimeVideoPromo(resultQuery!.mal_id), characters: await getAnimeCharacters(resultQuery!.mal_id), related: await getRelatedAnimesMAL(resultQuery!.mal_id), @@ -316,11 +318,11 @@ export default class DirectoryController { title: resultQuery?.title, poster: resultQuery?.poster, synopsis: resultQuery?.description, - status: resultQuery?.state, + status: !extraInfo.aired.to ? 'En emisión' : 'Finalizado', type: resultQuery?.type, rating: resultQuery?.score, genres: resultQuery?.genres, - moreInfo: [await animeExtraInfo(resultQuery!.mal_id)], + moreInfo: [extraInfo], promo: await getAnimeVideoPromo(resultQuery!.mal_id), characters: await getAnimeCharacters(resultQuery!.mal_id), related: await getRelatedAnimesMAL(resultQuery!.mal_id), diff --git a/src/utils/util.ts b/src/utils/util.ts index 9808175..d2108dd 100644 --- a/src/utils/util.ts +++ b/src/utils/util.ts @@ -530,18 +530,25 @@ export const jkanimeInfo = async (id: string | undefined) => { } }; -export const monoschinosInfo = async (id: string | undefined) => { +export const monoschinosInfo = async ( + id: string | undefined, + mal_id: number, +) => { let $: cheerio.Root; let episodeList: any[] = []; + let extraInfo: any; try { + /* Extra info of the anime */ + extraInfo = await animeExtraInfo(mal_id); + const resultQueryRedis: any = await redisClient.get( `monoschinosInfo_${hashStringMd5(id!)}`, ); if (resultQueryRedis) { const resultRedis: any = JSON.parse(resultQueryRedis); - + console.log(extraInfo); return resultRedis; } else { $ = await requestGot(`${urls.BASE_MONOSCHINOS}anime/${id}`, { @@ -553,6 +560,40 @@ export const monoschinosInfo = async (id: string | undefined) => { return err; } + let broadCastDate = new Date(); + let dd: number, mm: number, yyyy: number; + + const airDay: any = { + Lunes: 1, + Martes: 2, + Miércoles: 3, + Jueves: 4, + Viernes: 5, + Sábados: 6, + Domingos: 7, + 'Sin emisión': 'default', + }; + + if (!extraInfo.aired.to) { + if (airDay.hasOwnProperty(extraInfo.broadcast)) { + for ( + let i = broadCastDate.getDay(); + i < airDay[extraInfo.broadcast]; + i++ + ) { + broadCastDate.setDate(broadCastDate.getDate() + 1); + } + + dd = broadCastDate.getDate(); + mm = broadCastDate.getMonth(); + yyyy = broadCastDate.getFullYear(); + + episodeList.push({ + nextEpisodeDate: `${dd}/${mm + 1}/${yyyy}`, + }); + } + } + $('.SerieCaps a').each((index: number, element: cheerio.Element) => { let episode: number;