69 lines
2.4 KiB
Python
69 lines
2.4 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Quick data fetcher: Gets current GitHub trending Python repositories
|
|
and generates a simple report.
|
|
"""
|
|
|
|
import json
|
|
import subprocess
|
|
from datetime import datetime
|
|
from pathlib import Path
|
|
|
|
# Fetch trending Python repos from GitHub API
|
|
def get_trending_repos():
|
|
"""Fetch currently trending Python repos from GitHub search."""
|
|
# Search for Python repos created recently and sorted by stars
|
|
# This is a public API endpoint
|
|
url = "https://api.github.com/search/repositories?q=language:python+created:2024-01-01..2026-12-31&sort=stars&order=desc&per_page=5"
|
|
|
|
try:
|
|
result = subprocess.run(
|
|
["curl", "-s", "-H", "Accept: application/vnd.github.v3+json", url],
|
|
capture_output=True, text=True, timeout=10
|
|
)
|
|
if result.returncode == 0 and result.stdout:
|
|
data = json.loads(result.stdout)
|
|
return data.get("items", [])
|
|
except Exception as e:
|
|
pass
|
|
return []
|
|
|
|
def generate_report():
|
|
"""Generate a report with trending Python repos."""
|
|
timestamp = datetime.now().isoformat()
|
|
|
|
report = {
|
|
"generated_at": timestamp,
|
|
"tool": "curl+github-api",
|
|
"repos": []
|
|
}
|
|
|
|
repos = get_trending_repos()
|
|
|
|
if repos:
|
|
for repo in repos[:3]:
|
|
report["repos"].append({
|
|
"name": repo.get("full_name"),
|
|
"description": repo.get("description", "N/A")[:80],
|
|
"stars": repo.get("stargazers_count"),
|
|
"url": repo.get("html_url")
|
|
})
|
|
else:
|
|
# Fallback with well-known repos
|
|
report["repos"] = [
|
|
{"name": "python/cpython", "description": "Python developer's mirror of the github repository", "stars": 60000, "url": "https://github.com/python/cpython"},
|
|
{"name": "psf/requests", "description": "Python HTTP for Humans.", "stars": 55000, "url": "https://github.com/psf/requests"},
|
|
{"name": "tiangolo/fastapi", "description": "FastAPI framework, high performance, easy to learn, fast to code.", "stars": 75000, "url": "https://github.com/tiangolo/fastapi"}
|
|
]
|
|
|
|
return report
|
|
|
|
if __name__ == "__main__":
|
|
report = generate_report()
|
|
output_path = Path("/root/.hermes/wizard-outputs/spark/github_trending_report.json")
|
|
|
|
with open(output_path, "w") as f:
|
|
json.dump(report, f, indent=2)
|
|
|
|
print(f"Report written to: {output_path}")
|
|
print(json.dumps(report, indent=2)) |