aboutsummaryrefslogtreecommitdiffstats
path: root/pages/api/radio/stations.js
diff options
context:
space:
mode:
Diffstat (limited to 'pages/api/radio/stations.js')
-rw-r--r--pages/api/radio/stations.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/pages/api/radio/stations.js b/pages/api/radio/stations.js
new file mode 100644
index 0000000..9ebb55e
--- /dev/null
+++ b/pages/api/radio/stations.js
@@ -0,0 +1,45 @@
+import withSession from 'hocs/withSession'
+import * as cheerio from 'cheerio';
+
+const DOMAIN = 'https://streema.com'
+
+export default withSession(async (req, res) => {
+ switch (req.method) {
+ case 'POST':
+ try {
+ const user = req.session.get('user')
+ const { query } = JSON.parse(req.body)
+
+ if (!user || !user?.isVerified || !query) {
+ throw new Error('Something went wrong')
+ }
+
+ const response = await fetch(`${DOMAIN}/radios/search/?q=${query.replaceAll(' ', '+')}`)
+ const data = await response.text()
+ const $ = cheerio.load(data);
+ const results = []
+
+ $('.item', '.items-list').each((_, item) => {
+ const link = $(item).find('.item-name a')
+ results.push({
+ logo: $(item).find('.item-logo img').attr('src'),
+ title: link.attr('title').replace('Listen to', ''),
+ url: DOMAIN + link.attr('href'),
+ genres: $(item).find('.item-extra .genre span')
+ .map((_, g) => ($(g).text().trim())).toArray(),
+ locations: $(item).find('.item-extra .location span')
+ .map((_, l) => ($(l).text().trim())).toArray(),
+ })
+ });
+
+ res.status(200).json(results)
+ } catch (e) {
+ console.error(e)
+ res.status(400).send('')
+ }
+ break
+ default:
+ res.status(400).send('')
+ break
+ }
+})