Daily Download Stats #86
This file contains hidden or 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: Daily Download Stats | |
| on: | |
| schedule: | |
| - cron: "0 15 * * *" # every day at 15:00 UTC (22:00 Novosibirsk UTC+7) | |
| workflow_dispatch: # allow manual run | |
| jobs: | |
| stats: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install dependencies | |
| run: pip install matplotlib numpy scipy requests | |
| - name: Generate chart and collect stats | |
| id: stats | |
| run: python .github/scripts/download_stats.py | |
| - name: Send stats to Telegram | |
| env: | |
| BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} | |
| CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} | |
| run: | | |
| DATE="${{ steps.stats.outputs.date }}" | |
| YESTERDAY="$(python3 -c "import sys; v=${{ steps.stats.outputs.yesterday_downloads }}; print(f'{v/1e6:.1f}M' if v>=1e6 else f'{v/1e3:.1f}K' if v>=1e3 else str(v))")" | |
| WEEK="$(python3 -c "import sys; v=${{ steps.stats.outputs.week_downloads }}; print(f'{v/1e6:.1f}M' if v>=1e6 else f'{v/1e3:.1f}K' if v>=1e3 else str(v))")" | |
| MONTH="$(python3 -c "import sys; v=${{ steps.stats.outputs.month_downloads }}; print(f'{v/1e6:.1f}M' if v>=1e6 else f'{v/1e3:.1f}K' if v>=1e3 else str(v))")" | |
| AVG="${{ steps.stats.outputs.avg_daily }}" | |
| TOTAL="$(python3 -c "import sys; v=${{ steps.stats.outputs.total_downloads }}; print(f'{v/1e6:.1f}M' if v>=1e6 else f'{v/1e3:.1f}K' if v>=1e3 else str(v))")" | |
| TEXT="📊 <b>fasthttp-client</b> — статистика загрузок | |
| Дата: ${DATE} | |
| 📥 Вчера: <b>${YESTERDAY}</b> | |
| 📥 За 7 дней: <b>${WEEK}</b> | |
| 📥 За 30 дней: <b>${MONTH}</b> | |
| 📊 В среднем: <b>${AVG}/день</b> | |
| 🏆 Всего: <b>${TOTAL}</b> | |
| 🔗 <a href=\"https://pypi.org/project/fasthttp-client/\">PyPI</a> · <a href=\"https://pepy.tech/projects/fasthttp-client\">pepy.tech</a>" | |
| # Send photo with caption | |
| curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendPhoto" \ | |
| -F "chat_id=${CHAT_ID}" \ | |
| -F "photo=@stats.png" \ | |
| -F "caption=${TEXT}" \ | |
| -F "parse_mode=HTML" |