From fc2dc9ae79f8fe017b134b5c151b80431e2f1ca3 Mon Sep 17 00:00:00 2001 From: capitanwesler Date: Sun, 14 Mar 2021 13:33:20 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A6=20Implementing=20the=20sectioned?= =?UTF-8?q?=20videos=20from=20youtube?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/UtilsController.ts | 78 ++++++++++++++++++++++++++++++ src/routes.ts | 1 + 2 files changed, 79 insertions(+) diff --git a/src/controllers/UtilsController.ts b/src/controllers/UtilsController.ts index 1c18d24..8c14d2d 100644 --- a/src/controllers/UtilsController.ts +++ b/src/controllers/UtilsController.ts @@ -199,4 +199,82 @@ export default class UtilsController { res.status(500).json({ message: 'Aruppi lost in the shell' }); } } + + async getSectionVideos(req: Request, res: Response, next: NextFunction) { + const { type } = req.params; + let y1: any, y2: any, y3: any; + let data: any; + + try { + if (type === 'learn') { + data = await requestGot( + `${urls.BASE_YOUTUBE}UCCyQwSS6m2mVB0-H2FOFJtw&part=snippet,id&order=date&maxResults=50`, + { parse: true, scrapy: false }, + ); + } else if (type === 'amv') { + y1 = await requestGot( + `${urls.BASE_YOUTUBE}UCkTFkshjAsLMKwhAe1uPC1A&part=snippet,id&order=date&maxResults=25`, + { parse: true, scrapy: false }, + ); + + y2 = await requestGot( + `${urls.BASE_YOUTUBE}UC2cpvlLeowpqnR6bQofwNew&part=snippet,id&order=date&maxResults=25`, + { parse: true, scrapy: false }, + ); + } else if (type === 'produccer') { + y1 = await requestGot( + `${urls.BASE_YOUTUBE}UC-5MT-BUxTzkPTWMediyV0w&part=snippet,id&order=date&maxResults=25`, + { parse: true, scrapy: false }, + ); + + y2 = await requestGot( + `${urls.BASE_YOUTUBE}UCwUeTOXP3DD9DIvHttowuSA&part=snippet,id&order=date&maxResults=25`, + { parse: true, scrapy: false }, + ); + + y3 = await requestGot( + `${urls.BASE_YOUTUBE}UCA8Vj7nN8bzT3rsukD2ypUg&part=snippet,id&order=date&maxResults=25`, + { parse: true, scrapy: false }, + ); + } + } catch (err) { + return next(err); + } + + if (data && !y1 && !y2 && !y3) { + const results: any[] = data.items.map((item: any) => ({ + title: item.snippet.title, + videoId: item.id.videoId, + thumbDefault: item.snippet.thumbnails.default.url, + thumbMedium: item.snippet.thumbnails.medium.url, + thumbHigh: item.snippet.thumbnails.high.url, + })); + + res.status(200).json({ videos: results }); + } else if (!data && y1 && y2 && !y3) { + const results: any[] = y1.items.concat(y2.items).map((item: any) => ({ + title: item.snippet.title, + videoId: item.id.videoId, + thumbDefault: item.snippet.thumbnails.default.url, + thumbMedium: item.snippet.thumbnails.medium.url, + thumbHigh: item.snippet.thumbnails.high.url, + })); + + res.status(200).json({ videos: results }); + } else if (!data && y1 && y2 && y3) { + const results: any[] = y1.items + .concat(y2.items.concat(y3.items)) + .map((item: any) => ({ + title: item.snippet.title, + videoId: item.id.videoId, + thumbDefault: item.snippet.thumbnails.default.url, + thumbMedium: item.snippet.thumbnails.medium.url, + thumbHigh: item.snippet.thumbnails.high.url, + })); + + res.status(200).json({ videos: results }); + } else { + res.status(500).json({ message: 'Aruppi lost in the shell' }); + } + } } diff --git a/src/routes.ts b/src/routes.ts index ad59790..9ee3ea7 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -96,5 +96,6 @@ routes.get('/api/v4/anitakume', utilsController.getAnitakume); routes.get('/api/v4/news', utilsController.getNews); routes.get('/api/v4/images/:title', utilsController.getImages); routes.get('/api/v4/videos/:channelId', utilsController.getVideos); +routes.get('/api/v4/sectionedVideos/:type', utilsController.getSectionVideos); export default routes;