#!/usr/bin/env python3
"""Yasma: halaman mana yang menahan query maklon herbal utama, dan kondisi halaman itu."""
import json, os, re, urllib.request
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://yasmanatura.co.id/"
e = date.today() - timedelta(days=2)
a, b = (e - timedelta(days=89)).isoformat(), e.isoformat()

KW = ["jasa maklon herbal", "maklon teh herbal", "maklon herbal", "maklon minuman herbal",
      "maklon minuman kesehatan", "maklon minuman serbuk", "maklon teh", "maklon madu",
      "maklon madu herbal", "maklon herbal surabaya", "jasa maklon teh sidoarjo", "maklon herbal sidoarjo"]
print("=== query → halaman penahan (90 hari) ===")
for kw in KW:
    r = gsc.searchanalytics().query(siteUrl=S, body={
        "startDate": a, "endDate": b, "dimensions": ["page"],
        "dimensionFilterGroups": [{"filters": [{"dimension": "query", "operator": "equals", "expression": kw}]}],
        "rowLimit": 3}).execute().get("rows", [])
    if not r:
        print(f"  {kw:<26} (tidak ada data halaman)")
        continue
    print(f"  {kw:<26}", end="")
    for x in r:
        print(f"{int(x['impressions'])} imp pos {x['position']:.1f} → {x['keys'][0].replace(S,'')[:44]}", end="  ")
    print()

print("\n=== halaman Yasma dengan impresi terbesar (90 hari) ===")
for x in gsc.searchanalytics().query(siteUrl=S, body={"startDate": a, "endDate": b, "dimensions": ["page"],
                                                     "rowLimit": 15}).execute().get("rows", []):
    print(f"  {int(x['impressions']):>6} imp | {int(x['clicks']):>4} klik | CTR {x['ctr']*100:>5.1f}% | pos {x['position']:>5.1f} | {x['keys'][0].replace(S,'')[:56]}")

print("\n=== artikel/topik yang sudah ada (dari sitemap) ===")
try:
    r = urllib.request.Request(S + "post-sitemap.xml", headers={"User-Agent": "Mozilla/5.0"})
    sm = urllib.request.urlopen(r, timeout=60).read().decode("utf-8", "replace")
    locs = [l for l in re.findall(r"<loc>(.*?)</loc>", sm)]
    print(f"  total URL di post-sitemap: {len(locs)}")
    for l in locs[:20]:
        print("   ", l.replace(S, ""))
except Exception as ex:
    print("  gagal:", str(ex)[:70])
