mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2026-02-01 15:21:07 +03:00
37
index.js
37
index.js
@@ -38,6 +38,11 @@ var adminUserID = config.adminUserID;
|
|||||||
//if so, it will use the x-forwarded header instead of the ip address of the connection
|
//if so, it will use the x-forwarded header instead of the ip address of the connection
|
||||||
var behindProxy = config.behindProxy;
|
var behindProxy = config.behindProxy;
|
||||||
|
|
||||||
|
// A cache of the number of chrome web store users
|
||||||
|
var chromeUsersCache = null;
|
||||||
|
var firefoxUsersCache = null;
|
||||||
|
var lastUserCountCheck = 0;
|
||||||
|
|
||||||
// Enable WAL mode checkpoint number
|
// Enable WAL mode checkpoint number
|
||||||
if (!config.readOnly && config.mode === "production") {
|
if (!config.readOnly && config.mode === "production") {
|
||||||
db.exec("PRAGMA journal_mode=WAL;");
|
db.exec("PRAGMA journal_mode=WAL;");
|
||||||
@@ -763,16 +768,46 @@ app.get('/api/getTotalStats', function (req, res) {
|
|||||||
//send this result
|
//send this result
|
||||||
res.send({
|
res.send({
|
||||||
userCount: row.userCount,
|
userCount: row.userCount,
|
||||||
|
activeUsers: chromeUsersCache + firefoxUsersCache,
|
||||||
viewCount: row.viewCount,
|
viewCount: row.viewCount,
|
||||||
totalSubmissions: row.totalSubmissions,
|
totalSubmissions: row.totalSubmissions,
|
||||||
minutesSaved: row.minutesSaved
|
minutesSaved: row.minutesSaved
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Check if the cache should be updated (every ~14 hours)
|
||||||
|
let now = Date.now();
|
||||||
|
if (now - lastUserCountCheck > 5000000) {
|
||||||
|
lastUserCountCheck = now;
|
||||||
|
|
||||||
|
// Get total users
|
||||||
|
request.get("https://addons.mozilla.org/api/v3/addons/addon/sponsorblock/", function (err, firefoxResponse, body) {
|
||||||
|
try {
|
||||||
|
firefoxUsersCache = parseInt(JSON.parse(body).average_daily_users);
|
||||||
|
|
||||||
|
request.get("https://chrome.google.com/webstore/detail/sponsorblock-for-youtube/mnjggcdmjocbbbhaepdhchncahnbgone", function(err, chromeResponse, body) {
|
||||||
|
if (body !== undefined) {
|
||||||
|
try {
|
||||||
|
chromeUsersCache = parseInt(body.match(/(?<=\<span class=\"e-f-ih\" title=\").*?(?= users\">)/)[0].replace(",", ""));
|
||||||
|
} catch (error) {
|
||||||
|
// Re-check later
|
||||||
|
lastUserCountCheck = 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
lastUserCountCheck = 0;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
// Re-check later
|
||||||
|
lastUserCountCheck = 0;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
//send out a formatted time saved total
|
//send out a formatted time saved total
|
||||||
app.get('/api/getDaysSavedFormatted', function (req, res) {
|
app.get('/api/getDaysSavedFormatted', function (req, res) {
|
||||||
let row = db.prepare("SELECT SUM((endTime - startTime) / 60 / 60 / 24 * views) as daysSaved FROM sponsorTimes").get();
|
let row = db.prepare("SELECT SUM((endTime - startTime) / 60 / 60 / 24 * views) as daysSaved FROM sponsorTimes WHERE shadowHidden != 1").get();
|
||||||
|
|
||||||
if (row !== undefined) {
|
if (row !== undefined) {
|
||||||
//send this result
|
//send this result
|
||||||
|
|||||||
Reference in New Issue
Block a user