#!/usr/bin/env python3
"""Bandingkan tren mingguan DAS vs situs klien lain — penurunan DAS-spesifik atau fleet-wide?"""
import os
from datetime import date, timedelta
from google.oauth2 import service_account
from googleapiclient.discovery import build

creds = service_account.Credentials.from_service_account_file(os.path.expanduser("~/.hermes/gsc_service_account.json"),
                                                              scopes=["https://www.googleapis.com/auth/webmasters.readonly"])
gsc = build("webmasters", "v3", credentials=creds, cache_discovery=False)

SITES = [
    "https://dasindonesia.com/",
    "https://studiosoft.id/",
    "https://www.theskincodeclinic.com/",
    "https://rsia.kendangsari.com/",
    "https://yasmanatura.co.id/",
    "https://www.surabaya-skincentre.com/",
    "https://www.tslaw.id/",
    "sc-domain:everybeofficial.com",
]
e = date.today() - timedelta(days=2)


def q(site, a, b):
    try:
        r = gsc.searchanalytics().query(siteUrl=site, body={"startDate": a, "endDate": b, "dimensions": [], "rowLimit": 1}).execute().get("rows", [])
        return (int(r[0]["clicks"]), int(r[0]["impressions"])) if r else (0, 0)
    except Exception as ex:
        return (-1, -1)


print(f"periode akhir data: {e}\n")
print(f"{'situs':<34} {'28d kini':>16} {'28d lalu':>16} {'perubahan impresi':>18}")
for s in SITES:
    n = q(s, (e - timedelta(days=27)).isoformat(), e.isoformat())
    o = q(s, (e - timedelta(days=55)).isoformat(), (e - timedelta(days=28)).isoformat())
    if o[1] == 0 and n[1] == 0:
        print(f"{s:<34} {'(tidak ada data / bukan properti SA)':>50}")
        continue
    delta = (n[1] - o[1]) / o[1] * 100 if o[1] else 0
    print(f"{s:<34} {n[0]:>6} klik {n[1]:>7} imp {o[0]:>6} klik {o[1]:>7} imp {delta:>17.1f}%")

print("\n=== DAS: impresi per minggu (12 minggu) ===")
for i in range(12):
    en = e - timedelta(days=7 * i)
    st = en - timedelta(days=6)
    c, im = q("https://dasindonesia.com/", st.isoformat(), en.isoformat())
    bar = "█" * int(im / 120)
    print(f"  {st} : {im:>5} imp | {c:>3} klik  {bar}")
