#!/usr/bin/env python3
"""Angka GSC/GA4 halaman 3065 sebelum-sesudah (tayangan, klik, posisi, sesi)."""
import json, urllib.parse, urllib.request
from datetime import date, timedelta
from google.oauth2.credentials import Credentials
from google.auth.transport.requests import Request

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
TOKEN = f"{WS}/seo-oauth/google_token_atun.json"
SITE = urllib.parse.quote("https://www.tslaw.id/", safe="")
HAL = "https://www.tslaw.id/5-layanan-jasa-hukum-surabaya-untuk-umkm-dan-perusahaan-kecil-3/"
c = Credentials.from_authorized_user_file(TOKEN)
if c.expired and c.refresh_token:
    c.refresh(Request()); open(TOKEN, "w").write(c.to_json())
H = {"Authorization": f"Bearer {c.token}", "Content-Type": "application/json"}


def api(u, data=None):
    r = urllib.request.Request(u, headers=H, data=json.dumps(data).encode() if data else None)
    with urllib.request.urlopen(r, timeout=150) as x:
        return json.loads(x.read())


akhir = date.today() - timedelta(days=3)
for hari in (7, 28, 90):
    awal = (akhir - timedelta(days=hari - 1)).isoformat()
    d = api(f"https://www.googleapis.com/webmasters/v3/sites/{SITE}/searchAnalytics/query",
            {"startDate": awal, "endDate": akhir.isoformat(),
             "dimensions": ["query"], "dimensionFilterGroups": [
                 {"filters": [{"dimension": "page", "operator": "equals", "expression": HAL}]}]})
    rows = d.get("rows", [])
    tot_t = sum(r["impressions"] for r in rows); tot_k = sum(r["clicks"] for r in rows)
    print(f"GSC {hari:>2} hari ({awal} → {akhir}): {tot_t} tayangan, {tot_k} klik")
    for r in sorted(rows, key=lambda z: -z["impressions"])[:5]:
        print(f"    {r['impressions']:>3} tayangan | {r['clicks']} klik | pos {r['position']:.1f} | {r['keys'][0]}")

ga = api("https://analyticsdata.googleapis.com/v1beta/properties/537990618:runReport",
         {"dateRanges": [{"startDate": "90daysAgo", "endDate": "today"}],
          "dimensions": [{"name": "landingPagePlusQueryString"}],
          "metrics": [{"name": "sessions"}, {"name": "engagedSessions"}],
          "dimensionFilter": {"filter": {"fieldName": "landingPagePlusQueryString",
                                         "stringFilter": {"matchType": "CONTAINS",
                                                          "value": "5-layanan-jasa-hukum-surabaya"}}}})
print("\nGA4 90 hari untuk halaman ini:")
rows = ga.get("rows", [])
if not rows:
    print("    (tidak ada sesi)")
for r in rows:
    print("   ", r["dimensionValues"][0]["value"], "| sesi:", r["metricValues"][0]["value"],
          "| engaged:", r["metricValues"][1]["value"])
