Added new segment getting endpoint

This commit is contained in:
Ajay Ramachandran
2020-04-07 01:54:19 -04:00
parent ca8f571978
commit 3c9380c2a2
2 changed files with 85 additions and 64 deletions

View File

@@ -8,8 +8,7 @@ var corsMiddleware = require('./middleware/cors.js');
var loggerMiddleware = require('./middleware/logger.js'); var loggerMiddleware = require('./middleware/logger.js');
// Routes // Routes
var getVideoSponsorTimes = require('./routes/getVideoSponsorTimes.js'); var getSkipSegments = require('./routes/getSkipSegments.js');
var oldSubmitSponsorTimes = require('./routes/oldSubmitSponsorTimes.js');
var postSkipSegments = require('./routes/postSkipSegments.js'); var postSkipSegments = require('./routes/postSkipSegments.js');
var voteOnSponsorTime = require('./routes/voteOnSponsorTime.js'); var voteOnSponsorTime = require('./routes/voteOnSponsorTime.js');
var viewedVideoSponsorTime = require('./routes/viewedVideoSponsorTime.js'); var viewedVideoSponsorTime = require('./routes/viewedVideoSponsorTime.js');
@@ -23,12 +22,19 @@ var getTopUsers = require('./routes/getTopUsers.js');
var getTotalStats = require('./routes/getTotalStats.js'); var getTotalStats = require('./routes/getTotalStats.js');
var getDaysSavedFormatted = require('./routes/getDaysSavedFormatted.js'); var getDaysSavedFormatted = require('./routes/getDaysSavedFormatted.js');
// Old Routes
var getVideoSponsorTimes = require('./routes/getVideoSponsorTimes.js');
var oldSubmitSponsorTimes = require('./routes/oldSubmitSponsorTimes.js');
//setup CORS correctly //setup CORS correctly
app.use(corsMiddleware); app.use(corsMiddleware);
app.use(loggerMiddleware); app.use(loggerMiddleware);
app.use(express.json()) app.use(express.json())
// Setup pretty JSON
if (config.mode === "development") app.set('json spaces', 2);
//add the get function //add the get function
app.get('/api/getVideoSponsorTimes', getVideoSponsorTimes); app.get('/api/getVideoSponsorTimes', getVideoSponsorTimes);
@@ -36,7 +42,8 @@ app.get('/api/getVideoSponsorTimes', getVideoSponsorTimes);
app.get('/api/postVideoSponsorTimes', oldSubmitSponsorTimes); app.get('/api/postVideoSponsorTimes', oldSubmitSponsorTimes);
app.post('/api/postVideoSponsorTimes', oldSubmitSponsorTimes); app.post('/api/postVideoSponsorTimes', oldSubmitSponsorTimes);
//add the post function //add the skip segments functions
app.get('/api/skipSegments', getSkipSegments);
app.post('/api/skipSegments', postSkipSegments); app.post('/api/skipSegments', postSkipSegments);
//voting endpoint //voting endpoint

View File

@@ -206,16 +206,28 @@ module.exports = function (req, res) {
const videoID = req.body.videoID || req.query.videoID; const videoID = req.body.videoID || req.query.videoID;
// Default to sponsor // Default to sponsor
// If using params instead of JSON, only one category can be pulled // If using params instead of JSON, only one category can be pulled
const categories = req.body.categories || [req.query.category] ["sponsor"]; const categories = req.body.categories || (req.query.category ? [req.query.category] : ["sponsor"]);
let sponsorTimes = []; /**
let votes = [] * @type {Array<{
let UUIDs = []; * segment: number[],
* category: string,
* UUID: string
* }>
* }
*/
let segments = [];
let hashedIP = getHash(getIP(req) + config.globalSalt); let hashedIP = getHash(getIP(req) + config.globalSalt);
try { try {
let rows = db.prepare("SELECT startTime, endTime, votes, UUID, shadowHidden FROM sponsorTimes WHERE videoID = ? ORDER BY startTime").all(videoID); for (const category of categories) {
let rows = db.prepare("SELECT startTime, endTime, votes, UUID, shadowHidden FROM sponsorTimes WHERE videoID = ? and category = ? ORDER BY startTime")
.all(videoID, category);
let sponsorTimes = [];
let votes = []
let UUIDs = [];
for (let i = 0; i < rows.length; i++) { for (let i = 0; i < rows.length; i++) {
//check if votes are above -1 //check if votes are above -1
@@ -237,15 +249,9 @@ module.exports = function (req, res) {
} }
} }
sponsorTimes.push([]); sponsorTimes.push([rows[i].startTime, rows[i].endTime]);
votes.push(rows[i].votes);
let index = sponsorTimes.length - 1; UUIDs.push(rows[i].UUID);
sponsorTimes[index][0] = rows[i].startTime;
sponsorTimes[index][1] = rows[i].endTime;
votes[index] = rows[i].votes;
UUIDs[index] = rows[i].UUID;
} }
if (sponsorTimes.length == 0) { if (sponsorTimes.length == 0) {
@@ -257,17 +263,25 @@ module.exports = function (req, res) {
sponsorTimes = organisedData.sponsorTimes; sponsorTimes = organisedData.sponsorTimes;
UUIDs = organisedData.UUIDs; UUIDs = organisedData.UUIDs;
if (sponsorTimes.length == 0) { for (let i = 0; i < sponsorTimes.length; i++) {
res.sendStatus(404); segments.push({
} else { segment: sponsorTimes[i],
//send result category: category,
res.send({ UUID: UUIDs[i]
sponsorTimes: sponsorTimes, });
UUIDs: UUIDs }
})
} }
} catch(error) { } catch(error) {
console.error(error); console.error(error);
res.send(500); res.send(500);
return;
}
if (segments.length == 0) {
res.sendStatus(404);
} else {
//send result
res.send(segments)
} }
} }