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

View File

@@ -206,16 +206,28 @@ module.exports = function (req, res) {
const videoID = req.body.videoID || req.query.videoID;
// Default to sponsor
// 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 = []
let UUIDs = [];
/**
* @type {Array<{
* segment: number[],
* category: string,
* UUID: string
* }>
* }
*/
let segments = [];
let hashedIP = getHash(getIP(req) + config.globalSalt);
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++) {
//check if votes are above -1
@@ -237,15 +249,9 @@ module.exports = function (req, res) {
}
}
sponsorTimes.push([]);
let index = sponsorTimes.length - 1;
sponsorTimes[index][0] = rows[i].startTime;
sponsorTimes[index][1] = rows[i].endTime;
votes[index] = rows[i].votes;
UUIDs[index] = rows[i].UUID;
sponsorTimes.push([rows[i].startTime, rows[i].endTime]);
votes.push(rows[i].votes);
UUIDs.push(rows[i].UUID);
}
if (sponsorTimes.length == 0) {
@@ -257,17 +263,25 @@ module.exports = function (req, res) {
sponsorTimes = organisedData.sponsorTimes;
UUIDs = organisedData.UUIDs;
if (sponsorTimes.length == 0) {
res.sendStatus(404);
} else {
//send result
res.send({
sponsorTimes: sponsorTimes,
UUIDs: UUIDs
})
for (let i = 0; i < sponsorTimes.length; i++) {
segments.push({
segment: sponsorTimes[i],
category: category,
UUID: UUIDs[i]
});
}
}
} catch(error) {
console.error(error);
res.send(500);
return;
}
if (segments.length == 0) {
res.sendStatus(404);
} else {
//send result
res.send(segments)
}
}