Skip to content

Daily Download Stats #86

Daily Download Stats

Daily Download Stats #86

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"