# doi2ris Python-Skript, das eine Liste von Literaturquellen einliest, DOIs extrahiert, bibliographische Metadaten via Crossref (Fallback DataCite) ergänzt und eine Zotero-kompatible **.ris**-Datei erzeugt. ## Voraussetzungen ```bash pip install requests ``` ## Verwendung ```bash python doi2ris.py quellen.txt -o bibliothek.ris --email du@example.com --workers 8 ``` ### Argumente | Argument | Beschreibung | | --------------- | ---------------------------------------------------------------------- | | `input` | Eingabedatei, eine Quelle pro Zeile | | `-o/--output` | RIS-Ausgabepfad (Default `library.ris`) | | `--email` | Mailadresse für Crossref Polite-Pool (empfohlen, beschleunigt Antworten) | | `--workers` | Anzahl paralleler Requests (Default 8) | | `--cache` | JSON-Cache, damit Wiederholungsläufe instantan laufen | | `--unresolved` | Logdatei für Zeilen ohne erfolgreiche Auflösung | | `-v/--verbose` | Debug-Logging | ### Eingabeformate Pro Zeile beliebig — das Skript zieht via Regex die DOI heraus: ``` 10.1038/s41586-020-2649-2 https://doi.org/10.1109/5.771073 Coble, R. L. (1961). Sintering crystalline solids ... doi:10.1063/1.1736107 @article{smith2020, doi = {10.1000/xyz123}, ...} ``` Zeilen **ohne** DOI werden per Crossref-Titelsuche aufgelöst (Top-Treffer ab Score 40). Klappt das nicht, landet die Zeile in `unresolved.txt`. ## Zotero-Import In Zotero: *Datei → Importieren … → RIS-Datei wählen*. Die Felder werden korrekt gemappt (Autor:innen, Journal, Band/Heft, Seiten, DOI, Abstract, Schlagwörter, ISSN/ISBN, URL). ## Hinweise - Crossref erlaubt großzügige Anfragen, im Polite-Pool (mit `--email`) bekommt man bevorzugte Antwortzeiten. Auch ohne Mail funktioniert es. - 5-fach Retry mit exponentiellem Backoff für HTTP 429/5xx ist eingebaut. - Der lokale `.doi_cache.json` macht erneute Läufe verlustfrei reproduzierbar. - Bei 107 Einträgen läuft das Skript typischerweise in 30–60 Sekunden durch.