mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2025-12-15 16:07:03 +03:00
Merge pull request #303 from mchangrh/lockCategories/hashVideoID
add hashedVideoID to lockCategories
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
# SponsorTimesDB
|
# SponsorTimesDB
|
||||||
|
|
||||||
[vipUsers](#vipUsers)
|
[vipUsers](#vipUsers)
|
||||||
[sponsorTimes](#sponsorTimes)
|
[sponsorTimes](#sponsorTimes)
|
||||||
@@ -28,17 +28,17 @@
|
|||||||
| startTime | REAL | not null |
|
| startTime | REAL | not null |
|
||||||
| endTime | REAL | not null |
|
| endTime | REAL | not null |
|
||||||
| votes | INTEGER | not null |
|
| votes | INTEGER | not null |
|
||||||
| locked | INTEGER | not nul, default '0' |
|
| locked | INTEGER | not null, default '0' |
|
||||||
| incorrectVotes | INTEGER | not null, default 1 |
|
| incorrectVotes | INTEGER | not null, default 1 |
|
||||||
| UUID | TEXT | not null, unique |
|
| UUID | TEXT | not null, unique |
|
||||||
| userID | TEXT | not null |
|
| userID | TEXT | not null |
|
||||||
| timeSubmitted | INTEGER | not null |
|
| timeSubmitted | INTEGER | not null |
|
||||||
| views | INTEGER | not null |
|
| views | INTEGER | not null |
|
||||||
| category | TEXT | not null, default 'sponsor' |
|
| category | TEXT | not null, default 'sponsor' |
|
||||||
| service | TEXT | not nul, default 'Youtube' |
|
| service | TEXT | not null, default 'Youtube' |
|
||||||
| videoDuration | INTEGER | not nul, default '0' |
|
| videoDuration | INTEGER | not null, default '0' |
|
||||||
| hidden | INTEGER | not nul, default '0' |
|
| hidden | INTEGER | not null, default '0' |
|
||||||
| reputation | REAL | not nul, default '0' |
|
| reputation | REAL | not null, default '0' |
|
||||||
| shadowHidden | INTEGER | not null |
|
| shadowHidden | INTEGER | not null |
|
||||||
| hashedVideoID | TEXT | not null, default '', sha256 |
|
| hashedVideoID | TEXT | not null, default '', sha256 |
|
||||||
|
|
||||||
@@ -91,6 +91,7 @@
|
|||||||
| videoID | TEXT | not null |
|
| videoID | TEXT | not null |
|
||||||
| userID | TEXT | not null |
|
| userID | TEXT | not null |
|
||||||
| category | TEXT | not null |
|
| category | TEXT | not null |
|
||||||
|
| hashedVideoID | TEXT | not null, default '' |
|
||||||
|
|
||||||
| index | field |
|
| index | field |
|
||||||
| -- | :--: |
|
| -- | :--: |
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import {getHash} from '../utils/getHash';
|
|||||||
import {isUserVIP} from '../utils/isUserVIP';
|
import {isUserVIP} from '../utils/isUserVIP';
|
||||||
import {db} from '../databases/databases';
|
import {db} from '../databases/databases';
|
||||||
import {Request, Response} from 'express';
|
import {Request, Response} from 'express';
|
||||||
|
import { VideoIDHash } from "../types/segments.model";
|
||||||
|
|
||||||
export async function postLockCategories(req: Request, res: Response): Promise<string[]> {
|
export async function postLockCategories(req: Request, res: Response): Promise<string[]> {
|
||||||
// Collect user input data
|
// Collect user input data
|
||||||
@@ -56,10 +57,13 @@ export async function postLockCategories(req: Request, res: Response): Promise<s
|
|||||||
return categoriesToMark.indexOf(category) === index;
|
return categoriesToMark.indexOf(category) === index;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// calculate hash of videoID
|
||||||
|
const hashedVideoID: VideoIDHash = getHash(videoID, 1);
|
||||||
|
|
||||||
// create database entry
|
// create database entry
|
||||||
for (const category of categoriesToMark) {
|
for (const category of categoriesToMark) {
|
||||||
try {
|
try {
|
||||||
await db.prepare('run', `INSERT INTO "lockCategories" ("videoID", "userID", "category") VALUES(?, ?, ?)`, [videoID, userID, category]);
|
await db.prepare('run', `INSERT INTO "lockCategories" ("videoID", "userID", "category", "hashedVideoID") VALUES(?, ?, ?, ?)`, [videoID, userID, category, hashedVideoID]);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
Logger.error("Error submitting 'lockCategories' marker for category '" + category + "' for video '" + videoID + "'");
|
Logger.error("Error submitting 'lockCategories' marker for category '" + category + "' for video '" + videoID + "'");
|
||||||
Logger.error(err);
|
Logger.error(err);
|
||||||
|
|||||||
@@ -536,4 +536,42 @@ describe('lockCategoriesRecords', () => {
|
|||||||
})
|
})
|
||||||
.catch(err => done(err));
|
.catch(err => done(err));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should be able to get existing category lock', (done: Done) => {
|
||||||
|
const expected = {
|
||||||
|
categories: [
|
||||||
|
'sponsor',
|
||||||
|
'intro',
|
||||||
|
'outro',
|
||||||
|
'shilling'
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
fetch(getbaseURL() + "/api/lockCategories?videoID=" + "no-segments-video-id")
|
||||||
|
.then(async res => {
|
||||||
|
if (res.status === 200) {
|
||||||
|
const data = await res.json();
|
||||||
|
if (JSON.stringify(data) === JSON.stringify(expected)) {
|
||||||
|
done();
|
||||||
|
} else {
|
||||||
|
done("Incorrect response: expected " + JSON.stringify(expected) + " got " + JSON.stringify(data));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
done("Status code was " + res.status);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(err => done(err));
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Should be able to get hashedVideoID from lock', (done: Done) => {
|
||||||
|
const hashedVideoID = getHash('no-segments-video-id', 1);
|
||||||
|
db.prepare('get', 'SELECT "hashedVideoID" FROM "lockCategories" WHERE "videoID" = ?', ['no-segments-video-id'])
|
||||||
|
.then(result => {
|
||||||
|
if (result !== hashedVideoID) {
|
||||||
|
done();
|
||||||
|
} else {
|
||||||
|
done("Got unexpected video hash " + result);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user