From 865c9cc345aa105714dfe3ccf1d1c0a9a6a75f7f Mon Sep 17 00:00:00 2001 From: piotrruss Date: Sun, 19 Sep 2021 12:47:21 +0200 Subject: youtube & player apps fixes --- pages/api/youtube/player.js | 32 -------------------------------- pages/api/youtube/playlist.js | 26 ++++++++++++++++++++++++++ pages/api/youtube/search.js | 9 +++++++-- pages/api/youtube/video.js | 26 ++++++++++++++++++++++++++ pages/index.js | 9 ++++++++- 5 files changed, 67 insertions(+), 35 deletions(-) delete mode 100644 pages/api/youtube/player.js create mode 100644 pages/api/youtube/playlist.js create mode 100644 pages/api/youtube/video.js (limited to 'pages') diff --git a/pages/api/youtube/player.js b/pages/api/youtube/player.js deleted file mode 100644 index a6d3a7e..0000000 --- a/pages/api/youtube/player.js +++ /dev/null @@ -1,32 +0,0 @@ -import withSession from 'hocs/withSession' -import ytdl from 'ytdl-core' - -const getId = url => { - const regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/ - const match = url.match(regExp) - return (match && match[7].length === 11) ? match[7] : false -} - -export default withSession(async (req, res) => { - switch (req.method) { - case 'POST': - try { - const user = req.session.get('user') - const { url } = req.body - - if (!user || !user?.isVerified || !url) { - throw new Error('Something went wrong') - } - - const info = await ytdl.getInfo(getId(url)) - - res.status(200).json(info) - } catch (error) { - res.status(400).json([]) - } - break - default: - res.status(400).send() - break - } -}) diff --git a/pages/api/youtube/playlist.js b/pages/api/youtube/playlist.js new file mode 100644 index 0000000..e75e00d --- /dev/null +++ b/pages/api/youtube/playlist.js @@ -0,0 +1,26 @@ +import withSession from 'hocs/withSession' +import ytpl from 'ytpl' + +export default withSession(async (req, res) => { + switch (req.method) { + case 'POST': + try { + const user = req.session.get('user') + const { id } = req.body + + if (!user || !user?.isVerified || !id) { + throw new Error('Something went wrong') + } + + const info = await ytpl(id, { gl: user.language || 'en' }) + + res.status(200).json(info) + } catch (error) { + res.status(400).json([]) + } + break + default: + res.status(400).send() + break + } +}) diff --git a/pages/api/youtube/search.js b/pages/api/youtube/search.js index b17d008..f1b461f 100644 --- a/pages/api/youtube/search.js +++ b/pages/api/youtube/search.js @@ -12,9 +12,14 @@ export default withSession(async (req, res) => { throw new Error('Something went wrong') } - const video = await youtube.search(quote) + const results = await youtube.search(quote[0], { + ...quote[1], + requestOptions: { + headers: { 'Accept-Language': user.language || 'en' } + } + }) - res.status(200).json(video) + res.status(200).json(results) } catch (error) { res.status(400).json([]) } diff --git a/pages/api/youtube/video.js b/pages/api/youtube/video.js new file mode 100644 index 0000000..aeb2e8b --- /dev/null +++ b/pages/api/youtube/video.js @@ -0,0 +1,26 @@ +import withSession from 'hocs/withSession' +import ytdl from 'ytdl-core' + +export default withSession(async (req, res) => { + switch (req.method) { + case 'POST': + try { + const user = req.session.get('user') + const { id } = req.body + + if (!user || !user?.isVerified || !id) { + throw new Error('Something went wrong') + } + + const info = await ytdl.getInfo(id, { lang: user.language || 'en' }) + + res.status(200).json(info) + } catch (error) { + res.status(400).json([]) + } + break + default: + res.status(400).send() + break + } +}) diff --git a/pages/index.js b/pages/index.js index af25f7b..a13a840 100644 --- a/pages/index.js +++ b/pages/index.js @@ -1,4 +1,5 @@ import styles from 'styles/Main.module.scss' +import { useMemo } from 'react' import Image from 'next/image' import useUser from 'hooks/useUser' import useSettings from 'hooks/useSettings' @@ -70,7 +71,7 @@ const Home = () => { app={app} setApps={setApps} > - + ) })} @@ -79,4 +80,10 @@ const Home = () => { ) } +const AppContainer = ({ AppComponent, appProps }) => { + const Component = useMemo(() => , [appProps]) + + return Component +} + export default Home -- cgit v1.2.3