Files
2026-05-20 12:27:01 +02:00

58 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 3060 Sekunden durch.