add collect_statistics tool #37
@ -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,
|
||||||
|
Reference in New Issue
Block a user