#!/usr/bin/env python3
"""Peta halaman + tren 28d untuk keyword prioritas DAS."""
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://dasindonesia.com/"
e = date.today() - timedelta(days=2)
S90, S28, END = (e - timedelta(days=89)).isoformat(), (e - timedelta(days=27)).isoformat(), e.isoformat()

KW = ["bengkel mercy surabaya", "bengkel nissan surabaya", "bengkel matic surabaya", "bengkel bmw surabaya",
      "bengkel toyota terdekat", "bengkel lexus terdekat", "bengkel spesialis lexus", "bengkel lexus surabaya",
      "bengkel spesialis alphard", "bengkel alphard terdekat", "bengkel honda surabaya", "bengkel nissan terdekat",
      "bengkel mobil mewah surabaya", "bengkel spesialis bmw surabaya", "layanan konsultasi otomotif"]


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


print(f"{'keyword':<34} {'90d imp':>7} {'28d imp':>7} {'tren':>5} | halaman penahan (90d)")
for kw in KW:
    b90 = {"startDate": S90, "endDate": END, "dimensions": ["query"],
           "dimensionFilterGroups": [{"filters": [{"dimension": "query", "operator": "equals", "expression": kw}]}], "rowLimit": 1}
    b28 = dict(b90, startDate=S28)
    r90 = q(b90)
    r28 = q(b28)
    if not r90:
        print(f"{kw:<34} {'—':>7} {'—':>7} {'—':>5} | (tidak ada data)")
        continue
    i90 = int(r90[0]["impressions"])
    i28 = int(r28[0]["impressions"]) if r28 else 0
    tren = "naik" if i28 * 3 > i90 * 1.2 else ("turun" if i28 * 3 < i90 * 0.6 else "datar")
    pg = q({"startDate": S90, "endDate": END, "dimensions": ["page"],
            "dimensionFilterGroups": [{"filters": [{"dimension": "query", "operator": "equals", "expression": kw}]}], "rowLimit": 3})
    hal = " ; ".join(f"{x['keys'][0].replace('https://dasindonesia.com','')} ({int(x['impressions'])} imp, pos {x['position']:.1f})" for x in pg)
    print(f"{kw:<34} {i90:>7} {i28:>7} {tren:>5} | {hal[:110]}")
