crawler.yml 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. name: Hot News Crawler
  2. on:
  3. schedule:
  4. # 我们使用的是 github 官方提供的资源来进行的推送,而每个账号的资源是限额的,为了不被官方判定为滥用而面临封号的风险,不建议比半小时更低
  5. - cron: "0 * * * *" # 每小时整点运行一次(实际有偏差) 或者 "*/30 * * * *" (每半小时执行一次) 或者 "*/30 0-14 * * *"(每天早上 8 点到晚上 10 点期间,每半小时运行一次)
  6. workflow_dispatch:
  7. # 添加权限设置
  8. permissions:
  9. contents: write
  10. jobs:
  11. crawl:
  12. runs-on: ubuntu-latest
  13. steps:
  14. - name: Checkout repository
  15. uses: actions/checkout@v3
  16. - name: Set up Python
  17. uses: actions/setup-python@v4
  18. with:
  19. python-version: "3.10"
  20. - name: Install dependencies
  21. run: |
  22. python -m pip install --upgrade pip
  23. pip install -r requirements.txt
  24. - name: Verify required files
  25. run: |
  26. echo "🔍 检查必需的配置文件..."
  27. if [ ! -f config/config.yaml ]; then
  28. echo "❌ 错误: config/config.yaml 文件不存在"
  29. echo "请参考项目文档创建配置文件"
  30. exit 1
  31. fi
  32. if [ ! -f config/frequency_words.txt ]; then
  33. echo "❌ 错误: config/frequency_words.txt 文件不存在"
  34. echo "请参考项目文档创建频率词配置文件"
  35. exit 1
  36. fi
  37. echo "✅ 配置文件检查通过"
  38. - name: Run crawler
  39. env:
  40. FEISHU_WEBHOOK_URL: ${{ secrets.FEISHU_WEBHOOK_URL }}
  41. TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }}
  42. TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
  43. DINGTALK_WEBHOOK_URL: ${{ secrets.DINGTALK_WEBHOOK_URL }}
  44. WEWORK_WEBHOOK_URL: ${{ secrets.WEWORK_WEBHOOK_URL }}
  45. EMAIL_FROM: ${{ secrets.EMAIL_FROM }}
  46. EMAIL_PASSWORD: ${{ secrets.EMAIL_PASSWORD }}
  47. EMAIL_TO: ${{ secrets.EMAIL_TO }}
  48. EMAIL_SMTP_SERVER: ${{ secrets.EMAIL_SMTP_SERVER }}
  49. EMAIL_SMTP_PORT: ${{ secrets.EMAIL_SMTP_PORT }}
  50. NTFY_TOPIC: ${{ secrets.NTFY_TOPIC }}
  51. NTFY_SERVER_URL: ${{ secrets.NTFY_SERVER_URL }}
  52. NTFY_TOKEN: ${{ secrets.NTFY_TOKEN }}
  53. GITHUB_ACTIONS: true
  54. run: python main.py
  55. - name: Commit and push if changes
  56. run: |
  57. git config --global user.name 'GitHub Actions'
  58. git config --global user.email 'actions@github.com'
  59. git add -A
  60. git diff --quiet && git diff --staged --quiet || (git commit -m "Auto update by GitHub Actions at $(TZ=Asia/Shanghai date)" && git push)