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;