Bunch small things: Notifs for react, subsplash...

This commit is contained in:
aeroreyna
2022-12-28 22:54:19 -05:00
parent 6b6f263821
commit 1f3cc06470
10 changed files with 686 additions and 295 deletions

83
routes/subsplash.js Normal file
View File

@@ -0,0 +1,83 @@
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></iframe>
//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