Skip to content

Get The Minecraft Overviewer Data #4930

Get The Minecraft Overviewer Data

Get The Minecraft Overviewer Data #4930

Workflow file for this run

name: Get The Minecraft Overviewer Data
on:
push:
branches:
- main
workflow_dispatch:
schedule:
- cron: "* 6 * * *"
permissions:
contents: write
jobs:
update_data:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.x"
- name: Install Dependencies
run: pip install requests
- name: Fetch and Update Data
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python - <<EOF
import json
import requests
import os
GITHUB_TOKEN = os.getenv("GITHUB_TOKEN")
REPO = "GregoryAM-SP/The-Minecraft-Overviewer"
HEADERS = {"Authorization": f"token {GITHUB_TOKEN}"}
def fetch_repo_stats():
url = f"https://api.github.com/repos/{REPO}"
response = requests.get(url, headers=HEADERS).json()
return {
"watchers": response.get("watchers_count", 0),
"forks": response.get("forks_count", 0),
"stars": response.get("stargazers_count", 0),
}
def fetch_release_data():
url = f"https://api.github.com/repos/{REPO}/releases"
releases = requests.get(url, headers=HEADERS).json()
tags = []
# Find the latest non-prerelease release
latest_release_tag = None
for release in releases:
if not release.get("prerelease", False):
latest_release_tag = release["tag_name"]
break
for release in releases:
tag_name = release["tag_name"]
assets = []
total_downloads = 0
for asset in release["assets"]:
asset_data = {
"name": asset["name"],
"url": asset["browser_download_url"],
"download_count": asset["download_count"]
}
assets.append(asset_data)
total_downloads += asset["download_count"]
assets.append({
"name": f"the-minecraft-overviewer-{tag_name}.zip",
"url": f"https://github.com/gregoryam-sp/the-minecraft-overviewer/archive/refs/tags/{tag_name}.zip",
"download_count": 0
})
assets.append({
"name": f"the-minecraft-overviewer-{tag_name}.tar.gz",
"url": f"https://github.com/gregoryam-sp/the-minecraft-overviewer/archive/refs/tags/{tag_name}.tar.gz",
"download_count": 0
})
is_latest = (tag_name == latest_release_tag)
tags.append({
"tag": tag_name,
"latest": is_latest,
"prerelease": release.get("prerelease", False),
"assets": assets,
"totalDownloads": total_downloads
})
return tags
data = fetch_repo_stats()
data["tags"] = fetch_release_data()
with open("data.json", "w") as f:
json.dump(data, f, indent=4)
EOF
- name: Commit and Push Changes
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git add data.json
git commit -m "Update repository data" || echo "No changes to commit"
git push origin main
continue-on-error: true
check_api_usage:
runs-on: ubuntu-latest
needs: update_data
steps:
- name: Check GitHub API Rate Limit
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python - <<EOF
import requests
import os
from datetime import datetime, timezone
GITHUB_TOKEN = os.getenv("GITHUB_TOKEN")
HEADERS = {"Authorization": f"token {GITHUB_TOKEN}"}
response = requests.get("https://api.github.com/rate_limit", headers=HEADERS).json()
used = response["rate"]["limit"] - response["rate"]["remaining"]
remaining = response["rate"]["remaining"]
reset_time_epoch = response["rate"]["reset"]
reset_time_utc = datetime.fromtimestamp(reset_time_epoch, tz=timezone.utc).strftime('%m/%d/%Y %I:%M:%S %p UTC')
print(f"GitHub API Requests Used: {used}")
print(f"GitHub API Requests Remaining: {remaining}")
print(f"GitHub API Rate Limit Resets At: {reset_time_utc}")
EOF