#!/usr/bin/env python3
"""Post konten LinkedIn DMark Creative — 1x/hari, link artikel, konten UNIK"""
import urllib.request, json, os, sys
from datetime import datetime, timezone, timedelta

AUTH = 'NDY1NDYwOTg2Njpzb09vSDJJUnk2QmthSXJIU0FmMW5HbHkyUmNvaXc5Wg=='
HEADERS = {'Authorization': AUTH, 'Content-Type': 'application/json'}
BASE = 'https://api.repliz.com'
WIB = timezone(timedelta(hours=7))

DMark_LI = '6a350ecbc5ff4ce3a32299ce'

LOG_FILE = os.path.join(os.path.dirname(__file__), 'dmark_linkedin_history.json')

# Semua artikel dmark.id — update manual via WP API nanti
ARTICLES = [
    {'url': 'https://www.dmark.id/branding-dan-otomasi-duet-strategis/', 'title': 'Branding dan Otomasi: Duet Strategis yang Bikin Bisnis Lo Tumbuh 2x Lipat'},
    {'url': 'https://www.dmark.id/rekomendasi-jasa-seo-digital-marketing-terbaik-surabaya-2026/', 'title': '10 Rekomendasi Jasa SEO & Digital Marketing 2026'},
    {'url': 'https://www.dmark.id/rekomendasi-jasa-pembuatan-website-terbaik-surabaya/', 'title': '10 Jasa Pembuatan Website Terbaik di Surabaya'},
    {'url': 'https://www.dmark.id/rekomendasi-jasa-digital-creative-terbaik-surabaya/', 'title': '10 Jasa Digital Creative Terbaik di Surabaya'},
    {'url': 'https://www.dmark.id/rekomendasi-jasa-digital-marketing-terbaik-surabaya/', 'title': '10 Jasa Digital Marketing Terbaik di Surabaya'},
    {'url': 'https://www.dmark.id/rekomendasi-jasa-seo-terbaik-surabaya/', 'title': '10 Jasa SEO Terbaik di Surabaya'},
    {'url': 'https://www.dmark.id/fotografi-produk-tips-menampilkan-produk-agar-laris-online-shop/', 'title': '10 Tips Foto Produk Biar Laris di Online Shop'},
    {'url': 'https://www.dmark.id/panduan-lengkap-membangun-brand-identity-bisnis/', 'title': '7 Panduan Membangun Brand Identity'},
    {'url': 'https://www.dmark.id/desain-logo-profesional-investasi-visual-yang-tidak-boleh-asal-asalan/', 'title': 'Desain Logo Profesional: Investasi Visual'},
    {'url': 'https://www.dmark.id/studiosoft-solusi-digital-marketing-lengkap-surabaya/', 'title': 'StudioSoft: Solusi Digital Marketing Lengkap'},
    {'url': 'https://www.dmark.id/portofolio-studiosoft-keberhasilan-digital-marketing-surabaya/', 'title': 'Portofolio StudioSoft: Bukti Nyata'},
    {'url': 'https://www.dmark.id/studiosoft-branding-digital-marketing-surabaya/', 'title': 'StudioSoft: Branding Digital Marketing Surabaya'},
    {'url': 'https://www.dmark.id/cara-studiosoft-menangani-klien-digital-marketing/', 'title': 'Cara StudioSoft Menangani Klien'},
    {'url': 'https://www.dmark.id/klien-studiosoft-brand-ternama-digital-marketing-surabaya/', 'title': 'Klien StudioSoft: Brand Ternama'},
    {'url': 'https://www.dmark.id/mengapa-studiosoft-jasa-digital-marketing-surabaya/', 'title': 'Mengapa StudioSoft Pilihan Utama'},
    {'url': 'https://www.dmark.id/studiosoft-digital-marketing-surabaya-terbaik/', 'title': 'StudioSoft: Digital Marketing Surabaya Terbaik'},
    {'url': 'https://www.dmark.id/8-strategi-konten-visual-yang-bikin-bisnis-makin-dikenal/', 'title': '8 Strategi Konten Visual'},
    {'url': 'https://www.dmark.id/7-strategi-digital-marketing-untuk-klinik-estetika/', 'title': '7 Strategi Digital Marketing Klinik Estetika'},
    {'url': 'https://www.dmark.id/8-inovasi-digital-di-klinik-yang-sederhana-dan-efektif/', 'title': '8 Inovasi Digital di Klinik'},
    {'url': 'https://www.dmark.id/8-cara-personal-branding-dokter-kandungan-via-digital/', 'title': '8 Cara Personal Branding Dokter Kandungan'},
    {'url': 'https://www.dmark.id/7-strategi-bisnis-klinik-dengan-pendekatan-kreatif/', 'title': '7 Strategi Bisnis Klinik Kreatif'},
    {'url': 'https://www.dmark.id/7-cara-branding-klinik-kecantikan-dengan-digital-marketing/', 'title': '7 Cara Branding Klinik Kecantikan'},
    {'url': 'https://www.dmark.id/implementasi-seo-aeo-geo/', 'title': 'Implementasi SEO, AEO, dan GEO'},
    {'url': 'https://www.dmark.id/perbedaan-seo-aeo-geo/', 'title': 'Perbedaan SEO, AEO, dan GEO'},
    {'url': 'https://www.dmark.id/seo-masih-relevan-2026/', 'title': 'SEO Masih Relevan di Era AI 2026'},
    {'url': 'https://www.dmark.id/apa-itu-geo-generative-engine-optimization/', 'title': 'Apa Itu GEO dan Cara Kerjanya'},
    {'url': 'https://www.dmark.id/apa-itu-aeo-answer-engine-optimization/', 'title': 'Apa Itu AEO dan Bedanya dengan SEO'},
    {'url': 'https://www.dmark.id/6-tips-membangun-personal-branding-untuk-pebisnis-online/', 'title': '6 Tips Personal Branding Pebisnis Online'},
    {'url': 'https://www.dmark.id/7-cara-memilih-platform-e-commerce-yang-tepat-untuk-bisnis/', 'title': '7 Cara Memilih Platform E-commerce'},
    {'url': 'https://www.dmark.id/8-kesalahan-digital-marketing-yang-sering-dilakukan-pemula/', 'title': '8 Kesalahan Digital Marketing Pemula'},
    {'url': 'https://www.dmark.id/6-cara-memanfaatkan-user-generated-content-untuk-branding/', 'title': '6 Cara Manfaatkan UGC untuk Branding'},
    {'url': 'https://www.dmark.id/7-strategi-retensi-pelanggan-dengan-email-marketing-otomatis/', 'title': '7 Strategi Retensi dengan Email Marketing'},
    {'url': 'https://www.dmark.id/8-tips-mengoptimalkan-landing-page-untuk-tingkatkan-konversi/', 'title': '8 Tips Optimasi Landing Page'},
    {'url': 'https://www.dmark.id/6-langkah-membangun-sales-funnel-digital-yang-efektif/', 'title': '6 Langkah Sales Funnel Digital Efektif'},
    {'url': 'https://www.dmark.id/7-cara-meningkatkan-engagement-media-sosial-dengan-konten-interaktif/', 'title': '7 Cara Tingkatkan Engagement Medsos'},
    {'url': 'https://www.dmark.id/8-strategi-pemasaran-konten-video-untuk-bisnis-di-tahun-2026/', 'title': '8 Strategi Pemasaran Konten Video 2026'},
    {'url': 'https://www.dmark.id/7-strategi-konten-marketing-efektif-untuk-bisnis-modern-2026/', 'title': '7 Strategi Konten Marketing Efektif 2026'},
    {'url': 'https://www.dmark.id/8-strategi-branding-kreatif-untuk-umkm-di-surabaya/', 'title': '8 Strategi Branding Kreatif UMKM'},
    {'url': 'https://www.dmark.id/7-ide-konten-kreatif-untuk-marketing-bisnis-kecil/', 'title': '7 Ide Konten Kreatif Marketing'},
    {'url': 'https://www.dmark.id/8-tips-seo-untuk-website-bisnis-agar-cepat-di-google/', 'title': '8 Tips SEO Website Bisnis'},
    {'url': 'https://www.dmark.id/6-cara-meningkatkan-penjualan-dengan-digital-marketing-di-surabaya/', 'title': '6 Cara Tingkatkan Penjualan Digital Marketing'},
    {'url': 'https://www.dmark.id/5-strategi-social-media-marketing-untuk-bisnis-di-surabaya-2026/', 'title': '5 Strategi Social Media Marketing 2026'},
    {'url': 'https://www.dmark.id/7-strategi-marketing-terbukti-untuk-bisnis-di-surabaya-2026/', 'title': '7 Strategi Marketing Terbukti 2026'},
    {'url': 'https://www.dmark.id/teknik-copywriting-untuk-bisnis-cara-menulis-teks-marketing-yang-meyakinkan-dan-mengkonversi/', 'title': 'Teknik Copywriting untuk Bisnis'},
    {'url': 'https://www.dmark.id/panduan-influencer-marketing-untuk-bisnis-cara-memilih-dan-bekerja-sama-dengan-content-creator/', 'title': 'Panduan Influencer Marketing'},
    {'url': 'https://www.dmark.id/strategi-mobile-marketing-untuk-bisnis-manfaatkan-aplikasi-dan-smartphone-untuk-meningkatkan-penjualan/', 'title': 'Strategi Mobile Marketing'},
    {'url': 'https://www.dmark.id/ai-untuk-marketing-cara-memanfaatkan-artificial-intelligence-dan-chatbot-untuk-bisnis/', 'title': 'AI untuk Marketing dan Chatbot'},
    {'url': 'https://www.dmark.id/panduan-iklan-berbayar-google-ads-dan-meta-ads-untuk-meningkatkan-penjualan-bisnis/', 'title': 'Panduan Google Ads dan Meta Ads'},
    {'url': 'https://www.dmark.id/strategi-video-marketing-untuk-bisnis-tiktok-reels-dan-youtube-shorts-yang-efektif/', 'title': 'Strategi Video Marketing TikTok Reels'},
    {'url': 'https://www.dmark.id/strategi-email-marketing-untuk-bisnis-cara-efektif-membangun-newsletter-dan-meningkatkan-penjualan/', 'title': 'Strategi Email Marketing Newsletter'},
]

def load_history():
    if os.path.exists(LOG_FILE):
        with open(LOG_FILE) as f:
            return json.load(f)
    return {'posts': []}

def save_history(h):
    with open(LOG_FILE, 'w') as f:
        json.dump(h, f, indent=2)

def get_unused_article(history):
    used_urls = {p['article_url'] for p in history['posts']}
    for a in ARTICLES:
        if a['url'] not in used_urls:
            return a
    # Kalo semua udah dipakai, reset cycle
    print('⚠️ Semua artikel sudah dipakai! Reset cycle.')
    return None

def schedule_post(caption, article, jam_wib='11:00'):
    """Schedule 1 posting LinkedIn DMark.
    FIX TZ 2 Sep 2026: jam WIB dikonversi ke UTC dulu (sebelumnya strftime
    WIB-aware + suffix Z -> jadwal jalan 7 jam lebih lambat, e.g. 11:00 WIB
    jadi 18:00 WIB). Sekarang 11:00 WIB -> T04:00:00.000Z."""
    now = datetime.now(WIB)
    h, m = jam_wib.split(':')
    # Kalo hari ini udah lewat jam, schedule besok
    sched = now.replace(hour=int(h), minute=int(m), second=0, microsecond=0)
    if now > sched:
        sched += timedelta(days=1)
    iso = sched.astimezone(timezone.utc).strftime('%Y-%m-%dT%H:%M:%S.000Z')

    payload = {
        'title': '',
        'description': caption,
        'topic': 'Digital Marketing',
        'type': 'text',
        'medias': [],
        'meta': {
            'title': article['title'],
            'description': f'Baca artikel selengkapnya di DMark Creative — {article["title"]}',
            'url': article['url']
        },
        'additionalInfo': {'isAiGenerated':False,'isDraft':False,'collaborators':[],'mentions':[],
            'music':{'id':'','artist':'','name':'','thumbnail':''},'products':[],'tags':[]},
        'replies': [],
        'accountId': DMark_LI,
        'scheduleAt': iso,
    }

    body = json.dumps(payload).encode()
    req = urllib.request.Request(f'{BASE}/public/schedule', data=body, headers=HEADERS, method='POST')
    with urllib.request.urlopen(req) as resp:
        result = json.loads(resp.read())
        sid = result.get('scheduleId', '?')

        # Catat history
        h = load_history()
        h['posts'].append({
            'date': sched.strftime('%Y-%m-%d'),
            'time': jam_wib,
            'article_url': article['url'],
            'article_title': article['title'],
            'schedule_id': sid,
        })
        save_history(h)

        print(f'✅ DMark LinkedIn — {sched.strftime("%d %b %Y %H:%M")} WIB')
        print(f'   ID: {sid}')
        print(f'   Artikel: {article["title"][:50]}...')
        return sid


if __name__ == '__main__':
    h = load_history()
    article = get_unused_article(h)
    if not article:
        print('❌ Gak ada artikel baru yang tersedia.')
        sys.exit(1)

    print(f'📅 DMark LinkedIn — artikel: {article["title"]}')
    print('=' * 50)
    # Catatan: caption dibuat manual oleh agent cron (humanis, 2-3 paragraf,
    # pancingan diskusi) lalu panggil schedule_post(caption, article).
