const { logger, parser, db, date } = require('../../core') const { program } = require('commander') const options = program .option( '-t, --threshold ', 'Number of days after which the stream should be deleted', parser.parseNumber, 7 ) .option('--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() let buffer = {} let removed = 0 logger.info('searching...') for (const stream of streams) { if ( stream.status === 'error' && date.utc().diff(stream.updated_at, 'day') >= options.threshold ) { logger.info(`${stream.url} (offline)`) removed += await db.streams.remove({ url: stream.url }, { multi: true }) } 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 } } await db.streams.compact() logger.info(`removed ${removed} streams`) } main()