#!/usr/bin/env python3
"""Data GSC untuk keyword 'jasa buat website surabaya' + variannya di studiosoft.id."""
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)
S = "https://studiosoft.id/"
e = date.today() - timedelta(days=2)
S90, S28, END = (e - timedelta(days=89)).isoformat(), (e - timedelta(days=27)).isoformat(), e.isoformat()


def q(body):
    return gsc.searchanalytics().query(siteUrl=S, body=body).execute().get("rows", [])


VARIAN = ["jasa buat website surabaya", "buat website surabaya", "jasa pembuatan website surabaya",
          "jasa bikin website surabaya", "bikin website surabaya", "jasa website surabaya",
          "jasa buat website", "pembuatan website surabaya", "jasa pembuatan website",
          "jasa buat website murah", "harga jasa pembuatan website", "website company profile surabaya"]

print("=== keyword utama (90 hari) ===")
for kw in VARIAN:
    r = q({"startDate": S90, "endDate": END, "dimensions": ["query"],
           "dimensionFilterGroups": [{"filters": [{"dimension": "query", "operator": "equals", "expression": kw}]}], "rowLimit": 1})
    r28 = q({"startDate": S28, "endDate": END, "dimensions": ["query"],
             "dimensionFilterGroups": [{"filters": [{"dimension": "query", "operator": "equals", "expression": kw}]}], "rowLimit": 1})
    if r:
        x = r[0]
        i28 = int(r28[0]["impressions"]) if r28 else 0
        print(f"  {kw:<34} {int(x['impressions']):>4} imp | {int(x['clicks'])} klik | pos {x['position']:>5.1f} | 28d: {i28} imp")
    else:
        print(f"  {kw:<34} (belum ada data)")

print("\n=== semua query yang mengandung 'website' (90 hari) ===")
rows = q({"startDate": S90, "endDate": END, "dimensions": ["query"],
          "dimensionFilterGroups": [{"filters": [{"dimension": "query", "operator": "contains", "expression": "website"}]}],
          "rowLimit": 40})
tot_i = sum(int(x["impressions"]) for x in rows)
tot_k = sum(int(x["clicks"]) for x in rows)
print(f"  total {len(rows)} query | {tot_i} impresi | {tot_k} klik")
for x in sorted(rows, key=lambda y: -y["impressions"])[:20]:
    print(f"   {int(x['impressions']):>4} imp | {int(x['clicks'])} klik | pos {x['position']:>5.1f} | {x['keys'][0]}")

print("\n=== halaman yang menahan query website (90 hari) ===")
pg = q({"startDate": S90, "endDate": END, "dimensions": ["page"],
        "dimensionFilterGroups": [{"filters": [{"dimension": "query", "operator": "contains", "expression": "website"}]}],
        "rowLimit": 12})
for x in sorted(pg, key=lambda y: -y["impressions"]):
    print(f"   {int(x['impressions']):>4} imp | {int(x['clicks'])} klik | pos {x['position']:>5.1f} | {x['keys'][0].replace('https://studiosoft.id','')[:70]}")

print("\n=== semua halaman yang URL-nya memuat 'website' (90 hari, dari data halaman) ===")
semua = q({"startDate": S90, "endDate": END, "dimensions": ["page"], "rowLimit": 500})
for x in sorted([y for y in semua if "website" in y["keys"][0].lower()], key=lambda y: -y["impressions"])[:10]:
    print(f"   {int(x['impressions']):>5} imp | {int(x['clicks'])} klik | pos {x['position']:>5.1f} | {x['keys'][0].replace('https://studiosoft.id','')[:70]}")
