diff options
author | 2023-04-10 21:57:33 +0200 | |
---|---|---|
committer | 2023-04-10 21:57:33 +0200 | |
commit | f8463676a40656893c2048655e8807099e3adb39 (patch) | |
tree | 9b38927a293e38ec38da2707434786d92327edd0 /pages/api/radio/stream.js | |
parent | f4e00553c4acf44de48af958afc8747128b55562 (diff) | |
download | my_apps-f8463676a40656893c2048655e8807099e3adb39.tar.gz my_apps-f8463676a40656893c2048655e8807099e3adb39.tar.bz2 my_apps-f8463676a40656893c2048655e8807099e3adb39.zip |
add radio app
Diffstat (limited to 'pages/api/radio/stream.js')
-rw-r--r-- | pages/api/radio/stream.js | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/pages/api/radio/stream.js b/pages/api/radio/stream.js new file mode 100644 index 0000000..42e8521 --- /dev/null +++ b/pages/api/radio/stream.js @@ -0,0 +1,34 @@ +import withSession from 'hocs/withSession' + +export default withSession(async (req, res) => { + switch (req.method) { + case 'POST': + try { + const user = req.session.get('user') + const { station } = JSON.parse(req.body) + + if (!user || !user?.isVerified || !station) { + throw new Error('Something went wrong') + } + + const response = await fetch(station.replace('radios', 'radios/play')) + const data = await response.text() + + const script = /(?<=ST\.radio = {)[\s\S]*?(?=script)/.exec(data)?.[0] + const url = /(?<=url: ").*(?=")/.exec(script)?.[0] + const mimeType = /(?<=content_type: ").*(?=")/.exec(script)?.[0] + + const songImage = /(?<="song-image")[\s\S]*?(?=div)/.exec(data)?.[0] + const thumbnail = /(?<=src\=").*(?=")/.exec(songImage)?.[0] + + res.status(200).json({url, mimeType, thumbnail}) + } catch (error) { + console.log(error) + res.status(400).send('') + } + break + default: + res.status(400).send('') + break + } +}) |