From e38b3f48f6c79c218885e85280615e0f61613a19 Mon Sep 17 00:00:00 2001 From: riegera Date: Wed, 20 May 2026 12:27:01 +0200 Subject: [PATCH] README.md aktualisiert --- README.md | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/README.md b/README.md index 4155dac..2239116 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,57 @@ # 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.