#!/usr/bin/env python3
"""Lightweight Baidu SERP fetcher (unofficial).

Notes:
- Uses the third-party `baidusearch` package which scrapes Baidu HTML.
- Treat as *best-effort* and *low-frequency* fallback: may hit captcha/403.
- Output is JSON lines for easy piping.

Usage:
  ./baidu_search.py "query" --n 10

Exit codes:
  0: success
  2: no results
  3: likely blocked/captcha/parse error
"""

import argparse
import json
import sys
import time

from baidusearch.baidusearch import search


def main():
    ap = argparse.ArgumentParser()
    ap.add_argument("query")
    ap.add_argument("--n", type=int, default=10, help="max results")
    ap.add_argument("--sleep", type=float, default=0.0, help="sleep seconds between yielding results")
    args = ap.parse_args()

    try:
        it = search(args.query, num_results=args.n)
        got = 0
        for item in it:
            got += 1
            sys.stdout.write(json.dumps(item, ensure_ascii=False) + "\n")
            sys.stdout.flush()
            if args.sleep:
                time.sleep(args.sleep)
        if got == 0:
            return 2
        return 0
    except Exception as e:
        sys.stderr.write(f"ERROR: {type(e).__name__}: {e}\n")
        return 3


if __name__ == "__main__":
    raise SystemExit(main())
