ffmpeg-api / cleanup.js
opex792's picture
Upload 4 files
0d25770 verified
raw
history blame
2.59 kB
import cron from 'node-cron';
import fs from 'fs/promises';
import path from 'path';
import { fileURLToPath } from 'url';
// ИСПРАВЛЕНИЕ: Получаем путь к директории аналогично index.js
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const TEMP_DIR = path.join(__dirname, 'tmp');
const MAX_AGE_MS = 24 * 60 * 60 * 1000; // 24 часа в миллисекундах
/**
* Удаляет старые файлы из временной директории.
*/
async function cleanupOldFiles() {
console.log('Запуск задачи по очистке старых файлов...');
try {
const files = await fs.readdir(TEMP_DIR);
const now = Date.now();
for (const file of files) {
const filePath = path.join(TEMP_DIR, file);
try {
const stats = await fs.stat(filePath);
const fileAge = now - stats.mtime.getTime();
if (fileAge > MAX_AGE_MS) {
await fs.unlink(filePath);
console.log(`Удален старый файл: ${filePath}`);
}
} catch (statError) {
// Если файл был удален между readdir и stat, просто игнорируем ошибку
if (statError.code !== 'ENOENT') {
console.error(`Не удалось получить информацию о файле ${filePath}:`, statError);
}
}
}
} catch (readDirError) {
if (readDirError.code === 'ENOENT') {
console.log('Временная директория не существует, очистка не требуется.');
} else {
console.error('Ошибка при чтении временной директории:', readDirError);
}
}
console.log('Очистка завершена.');
}
/**
* Запускает периодическую задачу (cron job) для очистки.
* Задача будет выполняться каждый час.
*/
export function startCleanupJob() {
// Запускаем сразу при старте, а затем каждый час
cleanupOldFiles();
cron.schedule('0 * * * *', cleanupOldFiles); // '0 * * * *' - каждую 0-ю минуту каждого часа
console.log('Задача по очистке запланирована на запуск каждый час.');
}