backend/utils/redis.js

33 lines
1.0 KiB
JavaScript
Raw Normal View History

2023-03-03 16:44:40 +00:00
const Redis = require('ioredis')
const fs = require('node:fs')
2023-03-03 16:44:40 +00:00
const logger = require("./logger.js")
const redis = new Redis({
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT,
password: process.env.REDIS_PASS,
});
2023-03-25 13:13:52 +00:00
redis.on('ready', async function () {
2023-03-03 16:44:40 +00:00
logger.info({ message: 'Connected to redis!' })
2023-03-25 13:13:52 +00:00
const keys = await redis.keys('*')
const filteredKeys = keys.filter(key => !key.startsWith('blacklist:'))
2023-03-25 13:20:43 +00:00
if (filteredKeys.length) await redis.del(filteredKeys)
2023-03-25 13:13:52 +00:00
2024-01-01 17:23:28 +00:00
setInterval(async () => {
const files = fs.readdirSync('videos')
2024-03-30 13:55:10 +00:00
const webmFiles = files.filter((file) => file.endsWith('.mp4'))
2024-01-01 17:23:28 +00:00
webmFiles.forEach(async (f) => {
2024-03-30 13:55:10 +00:00
const videoId = f.replace('.mp4', '')
2024-01-01 17:23:28 +00:00
const isActive = await redis.get(videoId)
if (!isActive) {
fs.unlinkSync(`./videos/${f}`)
logger.info({ message: `deleted file ${f} because there is no active download of it` })
}
})
}, 5*60000)
})
2023-03-03 16:44:40 +00:00
module.exports = redis