添加每日追踪器同步工作流和同步脚本

This commit is contained in:
2026-03-16 01:27:26 +08:00
Unverified
parent d3100724de
commit b30bdfdf39
2 changed files with 78 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
name: Daily Tracker Sync
on:
schedule:
- cron: '0 0 * * *' # 每天凌晨运行
workflow_dispatch: # 允许手动在页面点击“重新运行”
jobs:
update-list:
runs-on: ubuntu-latest # 你的 act_runner 标签
steps:
- uses: actions/checkout@v3
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Run sync script
run: node sync-trackers.js
- name: Commit and Push
run: |
git config --local user.email "action@gitea.com"
git config --local user.name "Gitea Action"
git add list/
git commit -m "Update tracker list: $(date +%Y-%m-%d)" || exit 0
git push origin main

50
sync-trackers.js Normal file
View File

@@ -0,0 +1,50 @@
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();