diff --git a/src/controllers/AnimeController.ts b/src/controllers/AnimeController.ts index ae5b871..7005825 100644 --- a/src/controllers/AnimeController.ts +++ b/src/controllers/AnimeController.ts @@ -200,50 +200,179 @@ export default class AnimeController { } } - async getContent(req: Request, res: Response, next: NextFunction) { - const { type, page, url } = req.params; + async getContentTv(req: Request, res: Response, next: NextFunction) { + const { type, page } = req.params; + const url = 'tv'; let data: any; - if (['movies', 'ova', 'tv', 'special'].indexOf(url) > -1) { - try { - data = await requestGot( - `${urls.BASE_ANIMEFLV_JELU}${ - url.charAt(0).toUpperCase() + url.slice(1) - }/${type}/${page}`, - { - parse: true, - scrapy: false, - }, - ); - } catch (err) { - return next(err); - } + try { + data = await requestGot( + `${urls.BASE_ANIMEFLV_JELU}${ + url.charAt(0).toUpperCase() + url.slice(1) + }/${type}/${page}`, + { + parse: true, + scrapy: false, + }, + ); + } catch (err) { + return next(err); + } - const animes: Movie[] = data[url.toLowerCase()].map((item: any) => { - return { - id: item.id, - title: item.title, - type: url.toLowerCase(), - page: page, - banner: item.banner, - image: item.poster, - synopsis: item.synopsis, - status: item.debut, - rate: item.rating, - genres: item.genres.map((genre: any) => genre), - episodes: item.episodes.map((episode: any) => episode), - }; + const animes: Movie[] = data[url].map((item: any) => { + return { + id: item.id, + title: item.title, + type: url, + page: page, + banner: item.banner, + image: item.poster, + synopsis: item.synopsis, + status: item.debut, + rate: item.rating, + genres: item.genres.map((genre: any) => genre), + episodes: item.episodes.map((episode: any) => episode), + }; + }); + + if (animes.length > 0) { + res.status(200).json({ + animes, }); + } else { + res.status(500).json({ message: 'Aruppi lost in the shell' }); + } + } - if (animes.length > 0) { - res.status(200).json({ - animes, - }); - } else { - res.status(500).json({ message: 'Aruppi lost in the shell' }); - } + async getContentSpecial(req: Request, res: Response, next: NextFunction) { + const { type, page } = req.params; + const url = 'special'; + let data: any; + + try { + data = await requestGot( + `${urls.BASE_ANIMEFLV_JELU}${ + url.charAt(0).toUpperCase() + url.slice(1) + }/${type}/${page}`, + { + parse: true, + scrapy: false, + }, + ); + } catch (err) { + return next(err); + } + + const animes: Movie[] = data[url].map((item: any) => { + return { + id: item.id, + title: item.title, + type: url, + page: page, + banner: item.banner, + image: item.poster, + synopsis: item.synopsis, + status: item.debut, + rate: item.rating, + genres: item.genres.map((genre: any) => genre), + episodes: item.episodes.map((episode: any) => episode), + }; + }); + + if (animes.length > 0) { + res.status(200).json({ + animes, + }); } else { - next(); + res.status(500).json({ message: 'Aruppi lost in the shell' }); + } + } + + async getContentOva(req: Request, res: Response, next: NextFunction) { + const { type, page } = req.params; + const url = 'ova'; + let data: any; + + try { + data = await requestGot( + `${urls.BASE_ANIMEFLV_JELU}${ + url.charAt(0).toUpperCase() + url.slice(1) + }/${type}/${page}`, + { + parse: true, + scrapy: false, + }, + ); + } catch (err) { + return next(err); + } + + const animes: Movie[] = data[url].map((item: any) => { + return { + id: item.id, + title: item.title, + type: url, + page: page, + banner: item.banner, + image: item.poster, + synopsis: item.synopsis, + status: item.debut, + rate: item.rating, + genres: item.genres.map((genre: any) => genre), + episodes: item.episodes.map((episode: any) => episode), + }; + }); + + if (animes.length > 0) { + res.status(200).json({ + animes, + }); + } else { + res.status(500).json({ message: 'Aruppi lost in the shell' }); + } + } + + async getContentMovie(req: Request, res: Response, next: NextFunction) { + const { type, page } = req.params; + const url = 'movies'; + let data: any; + + try { + data = await requestGot( + `${urls.BASE_ANIMEFLV_JELU}${ + url.charAt(0).toUpperCase() + url.slice(1) + }/${type}/${page}`, + { + parse: true, + scrapy: false, + }, + ); + } catch (err) { + return next(err); + } + + const animes: Movie[] = data[url].map((item: any) => { + return { + id: item.id, + title: item.title, + type: url, + page: page, + banner: item.banner, + image: item.poster, + synopsis: item.synopsis, + status: item.debut, + rate: item.rating, + genres: item.genres.map((genre: any) => genre), + episodes: item.episodes.map((episode: any) => episode), + }; + }); + + if (animes.length > 0) { + res.status(200).json({ + animes, + }); + } else { + res.status(500).json({ message: 'Aruppi lost in the shell' }); } } diff --git a/src/controllers/UtilsController.ts b/src/controllers/UtilsController.ts index 69dd6dd..61d1598 100644 --- a/src/controllers/UtilsController.ts +++ b/src/controllers/UtilsController.ts @@ -84,7 +84,7 @@ export default class UtilsController { 'Diciembre', ]; - feed.items.forEach(item => { + feed.items.forEach((item: any) => { const date: Date = new Date(item.pubDate!); const formattedObject: Podcast = { @@ -131,7 +131,7 @@ export default class UtilsController { for (const rssPage of pagesRss) { const feed = await parser.parseURL(rssPage.url); - feed.items.forEach(item => { + feed.items.forEach((item: any) => { const formattedObject: News = { title: item.title, url: item.link, diff --git a/src/routes.ts b/src/routes.ts index 606a8e0..b13b744 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -73,7 +73,10 @@ 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/:url/:type/:page', animeController.getContent); +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); +routes.get('/api/v4/tv/:type/:page', animeController.getContentTv); routes.get('/api/v4/getEpisodes/:title', animeController.getEpisodes); routes.get( '/api/v4/getAnimeServers/:id([^/]+/[^/]+)',