#!/usr/bin/env python3
"""MediaRAG source adapter: raindrop://bookmarks — Raindrop.io bookmarks as text items.

Env: RAINDROP_API_TOKEN (required). Stdout = one JSON line per bookmark.
Stdlib only; no dependencies. Community adapters follow this shape.
"""
import json
import os
import sys
import urllib.request


def resolve_token():
    return os.environ.get("RAINDROP_API_TOKEN", "").strip()


def main():
    if len(sys.argv) != 3 or sys.argv[1] != "fetch":
        print("usage: raindrop fetch <what> (e.g. raindrop://bookmarks)", file=sys.stderr)
        return 2
    token = resolve_token()
    if not token:
        print("set RAINDROP_API_TOKEN in the server environment", file=sys.stderr)
        return 1
    total = 0
    page = -1  # raindrop pagination is 0-indexed; loop pre-increments
    while True:
        page += 1
        url = f"https://api.raindrop.io/rest/v1/raindrops/0?perpage=50&page={page}"
        req = urllib.request.Request(url, headers={"Authorization": f"Bearer {token}"})
        try:
            resp = json.load(urllib.request.urlopen(req, timeout=30))
        except Exception as e:
            print(f"raindrop API page {page} failed: {e}", file=sys.stderr)
            return 1
        if resp.get("result") not in (0, True):
            print(f"raindrop API error on page {page}: {resp.get('error')}", file=sys.stderr)
            return 1
        items = resp.get("items") or []
        for d in items:
            title = (d.get("title") or "").strip() or "(untitled)"
            parts = [f"# {title}"]
            if d.get("excerpt"):
                parts.append(f"Excerpt: {d['excerpt']}")
            if d.get("tags"):
                parts.append("Tags: " + ", ".join(d["tags"]))
            if d.get("note"):
                parts.append(f"Note: {d['note']}")
            if d.get("link"):
                parts.append(f"URL: {d['link']}")
            text = "\n\n".join(parts).strip()
            if not text:
                continue
            item = {"uri": f"raindrop://{d['_id']}", "title": title, "text": text}
            print(json.dumps(item, ensure_ascii=False))
            total += 1
        if len(items) < 50:
            break
    print(f"emitted {total} bookmarks", file=sys.stderr)
    return 0


if __name__ == "__main__":
    sys.exit(main())