const fs = require('fs'); const path = require('path'); async function syncTrackers() { const today = new Date().toISOString().split('T')[0]; const dirPath = path.join(__dirname, 'list'); const filePath = path.join(dirPath, `${today}.txt`); // 1. 检查文件是否已存在 if (fs.existsSync(filePath)) { console.log(`文件 ${today}.txt 已存在,跳过下载。`); return; } const urls = [ "https://trackerslist.com/all.txt", "https://trackerslist.com/http.txt" ]; try { console.log("开始获取追踪器列表..."); // 2. 并行获取内容 const responses = await Promise.all(urls.map(url => fetch(url).then(res => { if (!res.ok) throw new Error(`无法获取 ${url}`); return res.text(); }) )); // 3. 合并、去重、过滤空行 const allLines = responses.flatMap(text => text.trim().split('\n')); const uniqueLines = [...new Set(allLines.map(line => line.trim()))].filter(line => line.length > 0); const finalContent = uniqueLines.join('\n'); // 4. 确保目录存在并保存 if (!fs.existsSync(dirPath)) { fs.mkdirSync(dirPath, { recursive: true }); } fs.writeFileSync(filePath, finalContent, 'utf8'); console.log(`成功生成: ${filePath}`); } catch (error) { console.error("执行出错:", error.message); process.exit(1); } } syncTrackers();