Sync and Compile NetEase Music Rules #17
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Sync and Compile NetEase Music Rules | |
on: | |
schedule: | |
- cron: '0 18 * * *' # 每天北京时间02:00执行 | |
workflow_dispatch: | |
permissions: | |
contents: write | |
jobs: | |
netease_music_rules: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the repository | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set up Git user | |
run: | | |
git config user.name "github-actions[bot]" | |
git config user.email "github-actions[bot]@users.noreply.github.com" | |
- name: Install mihomo | |
run: | | |
version=$(curl -sL https://github.com/MetaCubeX/mihomo/releases/download/Prerelease-Alpha/version.txt) | |
curl -sL "https://github.com/MetaCubeX/mihomo/releases/download/Prerelease-Alpha/mihomo-linux-amd64-${version}.gz" | \ | |
gunzip -c > /usr/local/bin/mihomo && chmod +x /usr/local/bin/mihomo | |
- name: Fetch NetEaseMusic Rules | |
run: | | |
mkdir -p rules/Domain rules/IP # 确保目录存在 | |
# 下载 NetEaseMusic 规则文件 | |
curl -sL "https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/refs/heads/master/rule/Clash/NetEaseMusic/NetEaseMusic.list" -o rules/NetEaseMusic.list | |
- name: Separate domain and ip rules | |
run: | | |
# 提取域名规则并保存到 NetEaseMusic-domain.list | |
grep '^DOMAIN-SUFFIX' rules/NetEaseMusic.list > rules/Domain/NetEaseMusic-domain.list | |
# 提取 IP 规则并保存到 NetEaseMusic-ip.list (去掉 no-resolve) | |
grep '^IP-CIDR' rules/NetEaseMusic.list | sed 's/,no-resolve//' > rules/IP/NetEaseMusic-ip.list | |
- name: Convert NetEaseMusic domain rules to YAML | |
run: | | |
# 将域名规则转换为 YAML 格式 | |
echo "payload:" > rules/Domain/NetEaseMusic-domain.yaml | |
while IFS=, read -r type domain; do | |
if [[ -n "$domain" && ! "$domain" =~ ^# ]]; then | |
echo " - $domain" >> rules/Domain/NetEaseMusic-domain.yaml | |
fi | |
done < rules/Domain/NetEaseMusic-domain.list | |
- name: Convert NetEaseMusic IP rules to YAML | |
run: | | |
# 将 IP 规则转换为 YAML 格式 | |
echo "payload:" > rules/IP/NetEaseMusic-ip.yaml | |
while IFS=, read -r type ip; do | |
if [[ -n "$ip" && ! "$ip" =~ ^# ]]; then | |
echo " - $ip" >> rules/IP/NetEaseMusic-ip.yaml | |
fi | |
done < rules/IP/NetEaseMusic-ip.list | |
- name: Convert NetEaseMusic domain rules to MRS | |
run: | | |
# 使用 mihomo 转换为 MRS 格式 | |
mihomo convert-ruleset domain yaml rules/Domain/NetEaseMusic-domain.yaml rules/Domain/NetEaseMusic-domain.mrs | |
- name: Convert NetEaseMusic IP rules to MRS | |
run: | | |
# 使用 mihomo 转换为 MRS 格式 | |
mihomo convert-ruleset ipcidr yaml rules/IP/NetEaseMusic-ip.yaml rules/IP/NetEaseMusic-ip.mrs | |
- name: Clean up temporary files | |
run: | | |
# 删除临时文件 | |
rm -f rules/NetEaseMusic.list rules/Domain/NetEaseMusic-domain.list rules/IP/NetEaseMusic-ip.list rules/Domain/NetEaseMusic-domain.yaml rules/IP/NetEaseMusic-ip.yaml | |
- name: Commit and Push Changes | |
run: | | |
git add . | |
git diff-index --quiet HEAD -- || (git commit -m "Updated NetEaseMusic rules -> domain and ip rules" && git push) |