| 10 | |
| 11 | |
| 12 | def parser() -> argparse.ArgumentParser: |
| 13 | p = argparse.ArgumentParser(description=__doc__ or "create input record") |
| 14 | p.add_argument("--title", required=True, help="Canonical paper title.") |
| 15 | p.add_argument("--translated-title", default="", help="Optional translated title.") |
| 16 | p.add_argument("--authors-json", default="[]", help="JSON array of author names.") |
| 17 | p.add_argument("--affiliations-json", default="[]", help="JSON array of affiliations.") |
| 18 | p.add_argument("--year", default="", help="Publication year.") |
| 19 | p.add_argument("--venue", default="", help="Venue or journal.") |
| 20 | p.add_argument("--doi", default="", help="DOI if known.") |
| 21 | p.add_argument("--arxiv-id", default="", help="arXiv id if known.") |
| 22 | p.add_argument("--source-url", default="", help="Canonical source URL.") |
| 23 | p.add_argument("--pdf-url", default="", help="Preferred PDF URL if known.") |
| 24 | p.add_argument("--local-pdf-path", default="", help="Local PDF path if already available.") |
| 25 | p.add_argument("--zotero-key", default="", help="Local Zotero item key.") |
| 26 | p.add_argument("--abstract", default="", help="Abstract text when available.") |
| 27 | p.add_argument("--source-type", default="", help="Optional explicit source type.") |
| 28 | p.add_argument("--output", default="", help="Output JSON path.") |
| 29 | return p |
| 30 | |
| 31 | |
| 32 | def parse_json_list(raw: str) -> list[str]: |