mirror of
https://github.com/Ride-The-Lightning/RTL.git
synced 2026-08-13 12:33:07 +02:00
Create export_traffic.py
Github metrics export
This commit is contained in:
parent
c27f4aff45
commit
f1ed21915a
1 changed files with 86 additions and 0 deletions
86
.github/scripts/export_traffic.py
vendored
Normal file
86
.github/scripts/export_traffic.py
vendored
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
import os
|
||||
import gspread
|
||||
import requests
|
||||
from datetime import datetime
|
||||
from oauth2client.service_account import ServiceAccountCredentials
|
||||
|
||||
# --- CONFIGURATION ---
|
||||
# GitHub repository details
|
||||
GITHUB_REPO = "YOUR_USERNAME/YOUR_REPO_NAME" # e.g., "google/gemini"
|
||||
|
||||
# Get credentials from environment variables (for GitHub Actions)
|
||||
# For local testing, you can temporarily hardcode these or set them in your terminal
|
||||
GITHUB_TOKEN = os.getenv('GH_TOKEN')
|
||||
GOOGLE_SHEETS_CREDENTIALS = os.getenv('GOOGLE_SHEETS_CREDENTIALS')
|
||||
|
||||
# --- MAIN SCRIPT ---
|
||||
def get_github_traffic(repo, token, metric):
|
||||
"""Fetches view or clone traffic data from the GitHub API."""
|
||||
url = f"https://api.github.com/repos/{repo}/traffic/{metric}"
|
||||
headers = {
|
||||
"Authorization": f"token {token}",
|
||||
"Accept": "application/vnd.github.v3+json"
|
||||
}
|
||||
try:
|
||||
response = requests.get(url, headers=headers)
|
||||
response.raise_for_status() # Raises an error for bad responses (4xx or 5xx)
|
||||
data = response.json()
|
||||
print(f"Successfully fetched {metric} data. Total: {data['count']}, Unique: {data['uniques']}.")
|
||||
return data
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"Error fetching GitHub data for {metric}: {e}")
|
||||
return None
|
||||
|
||||
def main():
|
||||
"""Main function to fetch data and write to Google Sheets."""
|
||||
# 1. Authenticate with Google Sheets
|
||||
try:
|
||||
scope = ["https://spreadsheets.google.com/feeds", 'https://www.googleapis.com/auth/spreadsheets',
|
||||
"https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive"]
|
||||
|
||||
# Use credentials from environment variable
|
||||
creds = ServiceAccountCredentials.from_json_keyfile_name(GOOGLE_SHEETS_CREDENTIALS, scope)
|
||||
client = gspread.authorize(creds)
|
||||
|
||||
# Open the worksheet
|
||||
# Make sure your service account email has editor access to this sheet
|
||||
sheet = client.open("GitHub Repo Traffic").sheet1
|
||||
print("Successfully connected to Google Sheets.")
|
||||
except Exception as e:
|
||||
print(f"Error connecting to Google Sheets: {e}")
|
||||
return
|
||||
|
||||
# 2. Fetch traffic data from GitHub
|
||||
views_data = get_github_traffic(GITHUB_REPO, GITHUB_TOKEN, "views")
|
||||
clones_data = get_github_traffic(GITHUB_REPO, GITHUB_TOKEN, "clones")
|
||||
|
||||
# 3. Prepare and append the data
|
||||
if views_data and clones_data:
|
||||
today_str = datetime.now().strftime("%Y-%m-%d")
|
||||
|
||||
# Create a new row with today's summary
|
||||
new_row = [
|
||||
today_str,
|
||||
views_data['count'],
|
||||
views_data['uniques'],
|
||||
clones_data['count'],
|
||||
clones_data['uniques']
|
||||
]
|
||||
|
||||
# Check if headers are needed
|
||||
if not sheet.get_all_values():
|
||||
sheet.append_row(["Date", "Total Views", "Unique Views", "Total Clones", "Unique Clones"])
|
||||
|
||||
sheet.append_row(new_row)
|
||||
print(f"Successfully appended data for {today_str} to the sheet.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
# For local testing, you need to set up the credentials file path
|
||||
# For example: os.environ['GOOGLE_SHEETS_CREDENTIALS'] = 'your-key-file.json'
|
||||
# And your GitHub token: os.environ['GH_TOKEN'] = 'your_github_token'
|
||||
|
||||
# Check if credentials are set
|
||||
if not GITHUB_TOKEN or not GOOGLE_SHEETS_CREDENTIALS:
|
||||
print("Error: Required environment variables GH_TOKEN or GOOGLE_SHEETS_CREDENTIALS are not set.")
|
||||
else:
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue