Files
Tracker-api/sync-trackers.js

50 lines
1.5 KiB
JavaScript

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();