mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2024-11-12 18:04:29 +01:00
Limit reward time per segment
This commit is contained in:
parent
e86f442249
commit
d6ba5684e0
4 changed files with 6 additions and 2 deletions
|
@ -38,5 +38,6 @@
|
||||||
"max": 20, // 20 requests in 15min time window
|
"max": 20, // 20 requests in 15min time window
|
||||||
"statusCode": 200
|
"statusCode": 200
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"maxRewardTimePerSegmentInSeconds": 86400 // maximum time a user get rewarded in the leaderboard for a single segment
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,7 @@ addDefaults(config, {
|
||||||
},
|
},
|
||||||
userCounterURL: null,
|
userCounterURL: null,
|
||||||
youtubeAPIKey: null,
|
youtubeAPIKey: null,
|
||||||
|
maxRewardTimePerSegmentInSeconds: 86400,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Add defaults
|
// Add defaults
|
||||||
|
|
|
@ -5,6 +5,7 @@ import {Request, Response} from 'express';
|
||||||
|
|
||||||
const MILLISECONDS_IN_MINUTE = 60000;
|
const MILLISECONDS_IN_MINUTE = 60000;
|
||||||
const getTopUsersWithCache = createMemoryCache(generateTopUsersStats, config.getTopUsersCacheTimeMinutes * MILLISECONDS_IN_MINUTE);
|
const getTopUsersWithCache = createMemoryCache(generateTopUsersStats, config.getTopUsersCacheTimeMinutes * MILLISECONDS_IN_MINUTE);
|
||||||
|
const maxRewardTimePerSegmentInSeconds = config.maxRewardTimePerSegmentInSeconds ?? 86400;
|
||||||
|
|
||||||
function generateTopUsersStats(sortBy: string, categoryStatsEnabled: boolean = false) {
|
function generateTopUsersStats(sortBy: string, categoryStatsEnabled: boolean = false) {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
|
@ -25,7 +26,7 @@ function generateTopUsersStats(sortBy: string, categoryStatsEnabled: boolean = f
|
||||||
}
|
}
|
||||||
|
|
||||||
const rows = db.prepare('all', "SELECT COUNT(*) as totalSubmissions, SUM(views) as viewCount," +
|
const rows = db.prepare('all', "SELECT COUNT(*) as totalSubmissions, SUM(views) as viewCount," +
|
||||||
"SUM((sponsorTimes.endTime - sponsorTimes.startTime) / 60 * sponsorTimes.views) as minutesSaved, " +
|
"SUM(((CASE WHEN endTime - startTime > " + maxRewardTimePerSegmentInSeconds + " THEN " + maxRewardTimePerSegmentInSeconds + " ELSE endTime - startTime END) / 60) * views) as minutesSaved," +
|
||||||
"SUM(votes) as userVotes, " +
|
"SUM(votes) as userVotes, " +
|
||||||
additionalFields +
|
additionalFields +
|
||||||
"IFNULL(userNames.userName, sponsorTimes.userID) as userName FROM sponsorTimes LEFT JOIN userNames ON sponsorTimes.userID=userNames.userID " +
|
"IFNULL(userNames.userName, sponsorTimes.userID) as userName FROM sponsorTimes LEFT JOIN userNames ON sponsorTimes.userID=userNames.userID " +
|
||||||
|
|
|
@ -36,6 +36,7 @@ export interface SBSConfig {
|
||||||
minimumPrefix?: string;
|
minimumPrefix?: string;
|
||||||
maximumPrefix?: string;
|
maximumPrefix?: string;
|
||||||
redis?: redis.ClientOpts;
|
redis?: redis.ClientOpts;
|
||||||
|
maxRewardTimePerSegmentInSeconds?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface WebhookConfig {
|
export interface WebhookConfig {
|
||||||
|
|
Loading…
Reference in a new issue