66 lines
1.8 KiB
JavaScript
Executable File
66 lines
1.8 KiB
JavaScript
Executable File
const fs = require("fs")
|
|
const constants = require("../utils/constants");
|
|
const path = require("path");
|
|
|
|
const cacheNames = [ "video", "dearrow", "sb", "download", "ogg" ];
|
|
const cachesSaved = [ "video", "dearrow", "sb" ];
|
|
function getCachePath(cacheName) {
|
|
return path.join(constants.server_setup.json_cache_path, `${cacheName}_cache.json`);
|
|
}
|
|
|
|
let caches = {}
|
|
try {
|
|
for (let cache of cacheNames) {
|
|
let cachePath = getCachePath(cache)
|
|
if (cachesSaved.includes(cache)) {
|
|
if (!fs.existsSync(cachePath))
|
|
fs.writeFileSync(cachePath, "{}")
|
|
caches[cache] = JSON.parse(fs.readFileSync(cachePath).toString())
|
|
} else
|
|
caches[cache] = {}
|
|
}
|
|
} catch (error) {}
|
|
|
|
module.exports = {
|
|
write: function(cacheName, key, value) {
|
|
caches[cacheName][key] = value
|
|
},
|
|
read: function(cacheName) {
|
|
return caches[cacheName]
|
|
},
|
|
clean: function(cacheName) {
|
|
caches[cacheName] = {}
|
|
}
|
|
}
|
|
|
|
// Save caches every hour
|
|
setInterval(() => {
|
|
// Clear dearrow entries from videos
|
|
for (const vidId in caches["video"]) {
|
|
delete caches["video"][vidId].dearrowData
|
|
for (const recVidId in caches["video"][vidId].recommendedVideos)
|
|
delete caches["video"][vidId].recommendedVideos[recVidId].dearrowData
|
|
}
|
|
|
|
// Clear empty entries in dearrow cache
|
|
for (const vidId in caches["dearrow"]) {
|
|
let data = caches["dearrow"][vidId]
|
|
if (!data.title && !data.thumbnail)
|
|
delete caches["dearrow"][data]
|
|
}
|
|
|
|
// Save savable caches
|
|
for (const cache of cachesSaved)
|
|
fs.writeFileSync(getCachePath(cache), JSON.stringify(caches[cache]))
|
|
|
|
// Clear download cache
|
|
for (const vidName in caches["download"])
|
|
if (caches["download"][vidName].status == 3)
|
|
delete caches["download"][vidName]
|
|
|
|
// Clear ogg cache
|
|
for (const oggName in caches["ogg"])
|
|
if (caches["ogg"][oggName].status == 2)
|
|
delete caches["ogg"][oggName]
|
|
}, constants.server_setup.time_between_cache_save_to_disk)
|