iptv/scripts/commands/database/clear.js

48 lines
1.1 KiB
JavaScript
Raw Normal View History

2022-08-15 01:22:44 +02:00
const { logger, parser, db, date } = require('../../core')
const { program } = require('commander')
const options = program
.option(
'-t, --threshold <threshold>',
'Number of days after which the stream should be deleted',
parser.parseNumber,
7
)
.option('--input-dir <input-dir>', 'Set path to input directory', 'streams')
.parse(process.argv)
.opts()
async function main() {
await db.streams.load()
const streams = await db.streams.all()
2022-09-08 20:09:50 +02:00
let buffer = {}
let removed = 0
2022-08-22 19:28:08 +02:00
logger.info('searching...')
2022-08-15 01:22:44 +02:00
for (const stream of streams) {
if (
stream.status === 'error' &&
date.utc().diff(stream.updated_at, 'day') >= options.threshold
) {
2022-09-08 20:09:50 +02:00
logger.info(`${stream.url} (offline)`)
removed += await db.streams.remove({ url: stream.url }, { multi: true })
}
2022-08-22 19:28:08 +02:00
2022-09-08 20:09:50 +02:00
const key = stream.url.toLowerCase()
if (buffer[key]) {
logger.info(`${stream.url} (duplicate)`)
await db.streams.remove({ _id: stream._id })
removed++
} else {
buffer[key] = true
2022-08-15 01:22:44 +02:00
}
}
await db.streams.compact()
2022-09-08 20:09:50 +02:00
logger.info(`removed ${removed} streams`)
2022-08-15 01:22:44 +02:00
}
main()