const axios = require('axios'); const cheerio = require('cheerio'); var express = require('express') var router = express.Router() const DB = require("./../mongoDB.js"); const fetchAndParse = async (url) => { let detailHtml = await axios.get(url); return cheerio.load(detailHtml.data); } const getDetails = async (event) => { const $ = await fetchAndParse(event.detailPage); let detailsObj = { content: $(".kit-expanding-text-block__text-content").text(), subtitle: $(".route-event__basic-info h3").text(), image: $($('.kit-image__image')[0]).attr('src'), } return detailsObj; }; //g2cc4gr Florida //vwkqc93 Global const getEvents = async (eventId) => { const $ = await fetchAndParse('https://subsplash.com/+p4y7/lb/ca/+' + eventId + '?embed'); let events = $('.kit-list-item'); let eventsArr = []; let promises = []; for (let index = 0; index < events.length; index++) { const element = events[index]; let event = {} event.title = $(element).find(".kit-list-item__title").text(); event.date = $(element).find(".kit-list-item__subtitle").text(); event.summary = $(element).find(".kit-list-item__summary").text(); event.detailPage = 'https://subsplash.com' + $(element).parent().attr('href'); promises.push(getDetails(event).then((r) => { event.details = r; eventsArr.push(event); })); } let r = await Promise.all(promises); return eventsArr; }; //https://subsplash.com/+p4y7/lb/ms/+y42zyf3?embed&1665854077751 //https://subsplash.com/+p4y7/embed/mi/+b2zqkyb?audio&video&info&logoWatermark&shareable&embeddable"frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen> //kit-list-item const getMedia = async (eventId) => { const $ = await fetchAndParse('https://subsplash.com/+p4y7/lb/ms/+' + eventId + '?embed&1665854077751'); let events = $('.kit-list-item'); let eventsArr = []; let promises = []; for (let index = 0; index < events.length; index++) { const element = events[index]; let event = {} event.title = $(element).find(".kit-list-item__title").text(); event.date = $(element).find(".kit-list-item__subtitle").text(); event.summary = $(element).find(".kit-list-item__summary").text(); event.detailPage = 'https://subsplash.com' + $(element).find('a').attr('href'); promises.push(getDetails(event).then((r) => { event.details = r; eventsArr.push(event); })); } let r = await Promise.all(promises); return eventsArr; }; //getMedia('y42zyf3').then(console.log) DB.getDB.then((DB) => { router.get("/events/:calendarId", async (req, res) => { const events = await getEvents(req.params.calendarId) return res.json(events); }); router.get("/media/:seriesId", async (req, res) => { const events = await getMedia(req.params.seriesId) return res.json(events); }); }); module.exports = router