diff --git a/src/controllers/DirectoryController.ts b/src/controllers/DirectoryController.ts index 78cc48b..2915a8d 100644 --- a/src/controllers/DirectoryController.ts +++ b/src/controllers/DirectoryController.ts @@ -402,30 +402,72 @@ export default class DirectoryController { async getAnimeGenres(req: Request, res: Response, next: NextFunction) { const { genre, order, page } = req.params; - let data: Genre[]; - let resultReq: any; + let result: any; + + const genres: any = { + accion: 'Acción', + 'artes-marciales': 'Artes Marciales', + aventura: 'Aventuras', + carreras: 'Carreras', + 'ciencia-ficcion': 'Ciencia Ficción', + comedia: 'Comedia', + demencia: 'Demencia', + demonios: 'Demonios', + deportes: 'Deportes', + drama: 'Drama', + ecchi: 'Ecchi', + escolares: 'Escolares', + espacial: 'Espacial', + fantasia: 'Fantasía', + harem: 'Harem', + historico: 'Historico', + infantil: 'Infantil', + josei: 'Josei', + juegos: 'Juegos', + magia: 'Magia', + mecha: 'Mecha', + militar: 'Militar', + misterio: 'Misterio', + musica: 'Música', + parodia: 'Parodia', + policia: 'Policía', + psicologico: 'Psicológico', + 'recuentos-de-la-vida': 'Recuentos de la vida', + romance: 'Romance', + samurai: 'Samurai', + seinen: 'Seinen', + shoujo: 'Shoujo', + shounen: 'Shounen', + sobrenatural: 'Sobrenatural', + superpoderes: 'Superpoderes', + suspenso: 'Suspenso', + terror: 'Terror', + vampiros: 'Vampiros', + yaoi: 'Yaoi', + yuri: 'Yuri', + }; try { if (genre === undefined && order === undefined && page === undefined) { - data = await GenreModel.find(); + result = await AnimeModel.aggregate([{ $sample: { size: 25 } }]); } else { - if (page !== undefined) { - resultReq = await requestGot( - `${urls.BASE_ANIMEFLV_JELU}Genres/${genre}/${order}/${page}`, - { parse: true, scrapy: false }, - ); + if (genres.hasOwnProperty(genre)) { + if (page !== undefined && parseInt(page) > 1) { + result = await AnimeModel.find({ genres: genres[genre] }) + .limit(25) + .skip(25 * parseInt(page)); + } else { + result = await AnimeModel.find({ genres: genres[genre] }).limit(25); + } } else { - resultReq = await requestGot( - `${urls.BASE_ANIMEFLV_JELU}Genres/${genre}/${order}/1`, - { parse: true, scrapy: false }, - ); + return res.status(500).json({ message: 'Aruppi lost in the shell' }); } } } catch (err) { return next(err); } - const animes: any[] = resultReq.animes.map((item: any) => { + const animes: any[] = result.map((item: any) => { return { id: item.id, title: item.title.trim(),