collect_website_statics #39

Merged
tischrei merged 8 commits from collect_website_statics into main 2025-08-08 13:40:25 +00:00
2 changed files with 31 additions and 157 deletions
Showing only changes of commit 95c38587fe - Show all commits

View File

@ -22,7 +22,6 @@ import otc_metadata.services
import argparse import argparse
# ===== Configuration ===== # ===== Configuration =====
UMAMI_BASE_URL = "https://analytics.otc-service.com"
USERNAME = os.getenv("UMAMI_USERNAME") USERNAME = os.getenv("UMAMI_USERNAME")
PASSWORD = os.getenv("UMAMI_PASSWORD") PASSWORD = os.getenv("UMAMI_PASSWORD")
OUTPUT_FILE = "stats.json" OUTPUT_FILE = "stats.json"
@ -31,7 +30,12 @@ def parse_args():
""" """
Command-line arguments Command-line arguments
""" """
parser = argparse.ArgumentParser(description="Umami Statistic Script") parser = argparse.ArgumentParser(description="Analytics Script")
parser.add_argument(
"--base-url",
default="https://analytics.otc-service.com",
help="Base_Url of analytics server"
)
parser.add_argument( parser.add_argument(
"--environment", "--environment",
default=['public'], default=['public'],
@ -53,9 +57,9 @@ def parse_args():
return parser.parse_args() return parser.parse_args()
def get_umami_token(): def get_umami_token(base_url):
"""Get Bearer-Token from Umami-API.""" """Get Bearer-Token from Umami-API."""
url = f"{UMAMI_BASE_URL}/api/auth/login" url = f"{base_url}/api/auth/login"
response = requests.post(url, json={"username": USERNAME, "password": PASSWORD}) response = requests.post(url, json={"username": USERNAME, "password": PASSWORD})
response.raise_for_status() response.raise_for_status()
return response.json().get("token") return response.json().get("token")
@ -69,10 +73,10 @@ def get_4_weeks_range():
end_ts = int(end_date.timestamp() * 1000) end_ts = int(end_date.timestamp() * 1000)
return start_ts, end_ts return start_ts, end_ts
def fetch_pageviews(token, start_ts, end_ts, website_id): def fetch_pageviews(token, start_ts, end_ts, website_id, base_url):
"""Retrieves statistics from API server.""" """Retrieves statistics from API server."""
headers = {"Authorization": f"Bearer {token}"} headers = {"Authorization": f"Bearer {token}"}
url = f"{UMAMI_BASE_URL}/api/websites/{website_id}/metrics" url = f"{base_url}/api/websites/{website_id}/metrics"
params = { params = {
"type": "url", "type": "url",
"startAt": start_ts, "startAt": start_ts,
@ -103,9 +107,9 @@ def save_to_file(data, filename):
def main(): def main():
args = parse_args() args = parse_args()
token = get_umami_token() token = get_umami_token(base_url=args.base_url)
start_ts, end_ts = get_4_weeks_range() start_ts, end_ts = get_4_weeks_range()
stats = fetch_pageviews(token, start_ts, end_ts, website_id=args.website_id) stats = fetch_pageviews(token, start_ts, end_ts, website_id=args.website_id, base_url=args.base_url)
filtered_stats = filter_stats_by_existing_services( filtered_stats = filter_stats_by_existing_services(
stats=stats, stats=stats,
cloud_environment=args.cloud_environment, cloud_environment=args.cloud_environment,