#!/usr/bin/env python3
"""Monitor AOI (Applied Optoelectronics) press releases and send to Telegram."""
import json, os, time
import feedparser, requests
from openai import OpenAI

DIR = os.path.dirname(os.path.abspath(__file__))
CFG = json.load(open(os.path.join(DIR, 'config.json')))
SEEN_FILE = os.path.join(DIR, 'seen_aoi.json')
RSS_URL = 'https://investors.ao-inc.com/rss/news-releases.xml'
BOT = f"https://api.telegram.org/bot{CFG['telegram_bot_token']}"
CHAT_ID = CFG['chat_id']
LLM = OpenAI(base_url='https://openrouter.ai/api/v1', api_key=CFG['openrouter_api_key'])


def translate_kr(text):
    resp = LLM.chat.completions.create(
        model='deepseek/deepseek-chat-v3-0324',
        max_tokens=1024,
        messages=[{'role': 'user', 'content': f'다음 영문 뉴스를 자연스러운 한국어로 번역해줘. 번역문만 출력해:\n\n{text}'}],
    )
    return resp.choices[0].message.content


def load_seen():
    if os.path.exists(SEEN_FILE):
        return set(json.load(open(SEEN_FILE)))
    return set()


def save_seen(seen):
    with open(SEEN_FILE, 'w') as f:
        json.dump(list(seen), f)


def send_telegram(text):
    if len(text) > 4096:
        text = text[:4090] + '\n...'
    requests.post(f"{BOT}/sendMessage", json={
        'chat_id': CHAT_ID,
        'text': text,
        'parse_mode': 'HTML',
        'disable_web_page_preview': False,
    }, timeout=30)


def main():
    seen = load_seen()
    feed = feedparser.parse(RSS_URL)
    new_items = []

    for item in feed.entries:
        guid = item.get('id', item.get('link', ''))
        if guid in seen:
            continue
        new_items.append(item)
        seen.add(guid)

    # Send oldest first
    for item in reversed(new_items):
        title = item.get('title', 'No title')
        link = item.get('link', '')
        desc = item.get('summary', '')
        date = item.get('published', '')

        title_kr = translate_kr(title)
        desc_kr = translate_kr(desc)

        msg = (
            f"<b>📢 AOI 새 공시</b>\n\n"
            f"<b>{title_kr}</b>\n"
            f"📅 {date}\n\n"
            f"{desc_kr}\n\n"
            f"<a href=\"{link}\">자세히 보기</a>"
        )
        send_telegram(msg)
        time.sleep(1)

    save_seen(seen)

    if new_items:
        print(f"Sent {len(new_items)} new press release(s)")
    else:
        print("No new press releases")


if __name__ == '__main__':
    main()
