diff --git a/src/controllers/AnimeController.ts b/src/controllers/AnimeController.ts index 741fb71..6e80de8 100644 --- a/src/controllers/AnimeController.ts +++ b/src/controllers/AnimeController.ts @@ -250,7 +250,8 @@ export default class AnimeController { } async getLastEpisodes(req: Request, res: Response, next: NextFunction) { - // let data: any; + const { options } = req.params; + let data: any; let $: cheerio.Root; let episodes: Episode[] = []; let animeList: any[] = []; @@ -268,74 +269,83 @@ export default class AnimeController { } } - // @ANIMEFLV - // data = await requestGot( - // `${urls.BASE_ANIMEFLV_JELU}LatestEpisodesAdded`, - // { - // parse: true, - // scrapy: false, - // }, - // ); - - $ = await requestGot(`${urls.BASE_MONOSCHINOS}`, { - scrapy: true, - parse: false, - }); + switch (options) { + case 'monoschinos': + $ = await requestGot(`${urls.BASE_MONOSCHINOS}`, { + scrapy: true, + parse: false, + }); + break; + default: + data = await requestGot( + `${urls.BASE_ANIMEFLV_JELU}LatestEpisodesAdded`, + { + parse: true, + scrapy: false, + }, + ); + break; + } } catch (err) { return next(err); } - // @ANIMEFLV - // for (const episode of data.episodes) { - // const formattedEpisode: Episode = { - // id: '12345/' + episode.id, - // title: episode.title, - // image: episode.poster, - // episode: episode.episode, - // servers: await transformUrlServer(episode.servers), - // }; - - // episodes.push(formattedEpisode); - // } - - let getLastest: any = $('.container .caps .container')[0]; - - $(getLastest) - .find('.row article') - .each((index: number, element: cheerio.Element) => { - let el: cheerio.Cheerio = $(element); - let title: string | undefined = el - .find('.Title') - .html() - ?.split('\t')[0]; - let img: any = el.find('.Image img').attr('src'); - let type: any = el.find('.Image figure span').text(); - type = type.substring(1, type.length); - let nEpisode: any = el.find('.dataEpi .episode').text(); - nEpisode = parseInt(nEpisode.split('\n')[1]); - let id: any = el.find('a').attr('href'); - id = id.split('/')[4]; - id = id.split('-'); - id.splice(id.length - 2, 2); - id = `${id.join('-')}-episodio-${nEpisode}`; - - let anime = { - id: `ver/${id}`, - title, - image: img, - episode: nEpisode, - }; - - animeList.push(anime); - }); - for (const anime of animeList) { - episodes.push({ - id: anime.id, - title: anime.title, - image: await imageUrlToBase64(anime.image), - episode: anime.episode, - servers: await videoServersMonosChinos(anime.id), - }); + switch (options) { + case 'monoschinos': + let getLastest: any = $!('.container .caps .container')[0]; + + $!(getLastest) + .find('.row article') + .each((index: number, element: cheerio.Element) => { + let el: cheerio.Cheerio = $(element); + let title: string | undefined = el + .find('.Title') + .html() + ?.split('\t')[0]; + let img: any = el.find('.Image img').attr('src'); + let type: any = el.find('.Image figure span').text(); + type = type.substring(1, type.length); + let nEpisode: any = el.find('.dataEpi .episode').text(); + nEpisode = parseInt(nEpisode.split('\n')[1]); + let id: any = el.find('a').attr('href'); + id = id.split('/')[4]; + id = id.split('-'); + id.splice(id.length - 2, 2); + id = `${id.join('-')}-episodio-${nEpisode}`; + + let anime = { + id: `ver/${id}`, + title, + image: img, + episode: nEpisode, + }; + + animeList.push(anime); + }); + + for (const anime of animeList) { + episodes.push({ + id: anime.id, + title: anime.title, + image: await imageUrlToBase64(anime.image), + episode: anime.episode, + servers: await videoServersMonosChinos(anime.id), + }); + } + break; + default: + for (const episode of data.episodes) { + const formattedEpisode: Episode = { + id: '12345/' + episode.id, + title: episode.title, + image: episode.poster, + episode: episode.episode, + servers: await transformUrlServer(episode.servers), + }; + + episodes.push(formattedEpisode); + } + break; } if (episodes.length > 0) { diff --git a/src/routes.ts b/src/routes.ts index 6fca92e..a2d8444 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -72,7 +72,7 @@ routes.get('/api/v4/', (req: Request, res: Response) => { routes.get('/api/v4/schedule/:day', animeController.schedule); routes.get('/api/v4/top/:type/:subtype?/:page', animeController.top); routes.get('/api/v4/allAnimes', animeController.getAllAnimes); -routes.get('/api/v4/lastEpisodes', animeController.getLastEpisodes); +routes.get('/api/v4/lastEpisodes/:options?', animeController.getLastEpisodes); routes.get('/api/v4/movies/:type/:page', animeController.getContentMovie); routes.get('/api/v4/ova/:type/:page', animeController.getContentOva); routes.get('/api/v4/special/:type/:page', animeController.getContentSpecial);