mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2025-12-06 11:36:58 +03:00
added ability for vips to submit segments not in a video
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
var fs = require('fs');
|
|
||||||
var config = require('../config.js');
|
var config = require('../config.js');
|
||||||
|
|
||||||
var databases = require('../databases/databases.js');
|
var databases = require('../databases/databases.js');
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
const db = require('../databases/databases.js').db;
|
||||||
const getHash = require('../utils/getHash.js');
|
const getHash = require('../utils/getHash.js');
|
||||||
const isUserVIP = require('../utils/isUserVIP.js');
|
const isUserVIP = require('../utils/isUserVIP.js');
|
||||||
|
const logger = require('../utils/logger.js');
|
||||||
|
|
||||||
module.exports = (req, res) => {
|
module.exports = (req, res) => {
|
||||||
// Collect user input data
|
// Collect user input data
|
||||||
@@ -27,5 +29,34 @@ module.exports = (req, res) => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
res.status(200).json({status: 200});
|
// Get existing no segment markers
|
||||||
|
let noSegmentList = db.prepare('all', 'SELECT category from noSegments where videoID = ?', [videoID]);
|
||||||
|
if (!noSegmentList || noSegmentList.length === 0) {
|
||||||
|
noSegmentList = [];
|
||||||
|
} else {
|
||||||
|
noSegmentList = noSegmentList.map((obj) => {
|
||||||
|
return obj.category;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// get user categorys not already submitted
|
||||||
|
let categorysToMark = categorys.filter((category) => {
|
||||||
|
return noSegmentList.indexOf(category) === -1;
|
||||||
|
});
|
||||||
|
|
||||||
|
// remove any duplicates
|
||||||
|
categorysToMark = categorysToMark.filter((category, index) => {
|
||||||
|
return categorysToMark.indexOf(category) === index;
|
||||||
|
});
|
||||||
|
|
||||||
|
// create database entry
|
||||||
|
categorysToMark.forEach((category) => {
|
||||||
|
db.prepare('run', "INSERT INTO noSegments (videoID, userID, category) VALUES(?, ?, ?)", [videoID, userID, category]);
|
||||||
|
//ogger.debug('submitting ' + category);
|
||||||
|
});
|
||||||
|
|
||||||
|
res.status(200).json({
|
||||||
|
status: 200,
|
||||||
|
submitted: categorysToMark
|
||||||
|
});
|
||||||
};
|
};
|
||||||
@@ -9,6 +9,9 @@ var db = databases.db;
|
|||||||
describe('postNoSegments', () => {
|
describe('postNoSegments', () => {
|
||||||
before(() => {
|
before(() => {
|
||||||
db.exec("INSERT INTO vipUsers (userID) VALUES ('" + getHash("VIPUser-noSegments") + "')");
|
db.exec("INSERT INTO vipUsers (userID) VALUES ('" + getHash("VIPUser-noSegments") + "')");
|
||||||
|
|
||||||
|
db.exec("INSERT INTO noSegments (userID, videoID, category) VALUES ('" + getHash("VIPUser-noSegments") + "', 'no-segments-video-id', 'sponsor')");
|
||||||
|
db.exec("INSERT INTO noSegments (userID, videoID, category) VALUES ('" + getHash("VIPUser-noSegments") + "', 'no-segments-video-id', 'intro')");
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should update the database version when starting the application', (done) => {
|
it('should update the database version when starting the application', (done) => {
|
||||||
@@ -17,12 +20,23 @@ describe('postNoSegments', () => {
|
|||||||
else done('Version isn\'t greater that 1. Version is ' + version);
|
else done('Version isn\'t greater that 1. Version is ' + version);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Should be able to submit no segments', (done) => {
|
it('Should be able to submit categorys not in video', (done) => {
|
||||||
let json = {
|
let json = {
|
||||||
videoID: 'noSegmentsTestVideoID',
|
videoID: 'no-segments-video-id',
|
||||||
userID: 'VIPUser-noSegments',
|
userID: 'VIPUser-noSegments',
|
||||||
categorys: [
|
categorys: [
|
||||||
'sponsor'
|
'outro',
|
||||||
|
'shilling',
|
||||||
|
'shilling',
|
||||||
|
'intro'
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
let expected = {
|
||||||
|
status: 200,
|
||||||
|
submitted: [
|
||||||
|
'outro',
|
||||||
|
'shilling'
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -31,12 +45,11 @@ describe('postNoSegments', () => {
|
|||||||
(err, res, body) => {
|
(err, res, body) => {
|
||||||
if (err) done(err);
|
if (err) done(err);
|
||||||
else if (res.statusCode === 200) {
|
else if (res.statusCode === 200) {
|
||||||
//let row = db.prepare('get', "SELECT startTime, endTime, category FROM sponsorTimes WHERE videoID = ?", ["noSegmentsTestVideoID"]);
|
if (JSON.stringify(body) === JSON.stringify(expected)) {
|
||||||
//if (row.startTime === 2 && row.endTime === 10 && row.category === "sponsor") {
|
done();
|
||||||
done()
|
} else {
|
||||||
//} else {
|
done("Incorrect response: expected " + JSON.stringify(expected) + " got " + JSON.stringify(body));
|
||||||
// done("Submitted times were not saved. Actual submission: " + JSON.stringify(row));
|
}
|
||||||
//}
|
|
||||||
} else {
|
} else {
|
||||||
console.log(body);
|
console.log(body);
|
||||||
done("Status code was " + res.statusCode);
|
done("Status code was " + res.statusCode);
|
||||||
@@ -166,7 +179,7 @@ describe('postNoSegments', () => {
|
|||||||
(err, res, body) => {
|
(err, res, body) => {
|
||||||
if (err) done(err);
|
if (err) done(err);
|
||||||
else if (res.statusCode === 403) {
|
else if (res.statusCode === 403) {
|
||||||
done()
|
done();
|
||||||
} else {
|
} else {
|
||||||
done("Status code was " + res.statusCode);
|
done("Status code was " + res.statusCode);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user