Skip to main content

MARC21-Datensätze aus MongoDB-Collections anzeigen

Project description

vwmrc – MARC21-Datensätze aus MongoDB anzeigen

vwmrc ist ein Kommandozeilenwerkzeug, das einen MARC21-Datensatz per PPN aus einer MongoDB-Collection lädt und als lesbaren MARC-Text ausgibt. Es erkennt automatisch, ob die Daten als binäres MARC, MARC-XML oder Base64-kodiertes Binär-MARC vorliegen. Der Export als .mrc oder .xml wird ebenfalls unterstützt.

Entwickelt an der Sächsischen Landesbibliothek – Staats- und Universitätsbibliothek Dresden (SLUB).

Transparenzhinweis: Dieses Tool wurde co-authored mit einem Large Language Model (LLM). Sämtlicher Code ist von einem menschlichen Entwickler geprüft, getestet und freigegeben.

Voraussetzungen

  • Python ≥ 3.10
  • MongoDB-Instanz, erreichbar unter der in MONGODB_URL angegebenen Adresse
  • Collections, deren Dokumente eine _id (die PPN) und ein Feld full_record oder fullrecord mit den MARC-Daten enthalten

Installation

# Empfohlen: via uv
uv tool install vwmrc

# Alternativ: via pipx
pipx install vwmrc

# Oder klassisch via pip
pip install vwmrc

Nach der Installation steht der Befehl vwmrc global zur Verfügung.

Verwendung

Grundaufruf

vwmrc DATENBANK.COLLECTION:PPN

Das Ziel wird in drei Teile zerlegt:

  • DATENBANK – alles vor dem ersten Punkt
  • COLLECTION – alles zwischen dem ersten Punkt und dem letzten Doppelpunkt
  • PPN – alles nach dem letzten Doppelpunkt

Diese Logik erlaubt PPNs, die selbst Doppelpunkte enthalten (z. B. 1787:123456).

Beispiele

# MongoDB-Verbindung setzen
export MONGODB_URL="mongodb://benutzer:passwort@example.com:27017"

# Datensatz anzeigen
vwmrc ahn.kxpzentral_marc:010000313

# Datensatz als binäres MARC speichern (z. B. für MarcEdit & Co.)
vwmrc ahn.kxpzentral_marc:010000313 --ofile record.mrc

# Datensatz als MARC-XML speichern
vwmrc ahn.kxpzentral_marc:010000313 --ofile record.xml

# Auch ohne gesetzte Umgebungsvariable (Default: localhost:27017)
vwmrc ahn.kxpzentral_marc:010000313

Ausgabe

Der Datensatz wird im klassischen MARC-Textformat ausgegeben – mit Tag, Indikatoren (Leerzeichen als #), Unterfeldcodes und Inhalt:

LDR  03383cam a2200781 c 4500
001   010000313
003   DE-627
005   20251030061346.0
...
245 00 $aJoseph Beuys in Wien und am Friedrichshof ...
700 1# $aBeuys, Joseph $d1921-1986 $4oth

Optionen

Option Beschreibung
--ofile DATEI Speichert den Datensatz in eine Datei. Endung .xml → MARC-XML; alles andere → binäres MARC (ISO 2709).

Funktionsweise

  1. Verbinden – Aufbau einer MongoDB-Verbindung über MONGODB_URL
  2. Suchenfind_one({"_id": ppn})
  3. Extrahieren – Sucht nach den Feldern full_record oder fullrecord (in dieser Reihenfolge). Ist der Wert eine Liste, wird das erste Element verwendet.
  4. Erkennen – Das Datenformat wird automatisch bestimmt:
    • bytes → binäres MARC
    • String, der mit <?xml oder < beginnt → MARC-XML
    • String, der mit 5 Ziffern beginnt → binäres MARC (Latin-1 → Bytes)
    • Base64-ähnlicher String → dekodieren, dann binäres MARC
  5. Ausgeben – Formatierung als lesbarer MARC-Text, oder Schreiben in eine Datei.

Fehlercodes

Code Bedeutung
1 Ungültiges Zielformat (muss db.coll:ppn sein)
2 MongoDB-Abfrage fehlgeschlagen
3 Kein Datensatz mit dieser _id gefunden
4 Kein full_record- oder fullrecord-Feld im Dokument
5 MARC-Daten konnten nicht geparst werden

Abhängigkeiten

  • pymarc ≥ 5.0 – MARC21-Parsing (Library of Congress)
  • pymongo ≥ 4.0 – MongoDB-Client
  • click ≥ 8.0 – CLI-Framework

Lizenz

MIT – siehe pyproject.toml.


English Summary

vwmrc is a command-line tool that fetches a MARC21 record from a MongoDB collection and displays it as human-readable MARC text. It auto-detects the data format (binary MARC, MARC-XML, or Base64-encoded binary) and can export records as .mrc or .xml files.

Usage: vwmrc DATABASE.COLLECTION:PPN

Authentication is handled entirely via the MONGODB_URL environment variable. The tool looks for a document whose _id matches the given PPN and extracts the MARC data from either full_record or fullrecord.

Developed at Saxon State and University Library Dresden (SLUB).

Transparency note: This tool was co-authored with a Large Language Model. All code has been reviewed, tested, and approved by a human developer.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vwmrc-1.0.1.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vwmrc-1.0.1-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file vwmrc-1.0.1.tar.gz.

File metadata

  • Download URL: vwmrc-1.0.1.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"KDE neon","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for vwmrc-1.0.1.tar.gz
Algorithm Hash digest
SHA256 0701cc36ed2e0faa437021d259dc3fbbd87bde060b7d22ac346e677f6ff8288f
MD5 6efaf01655af86c45679ddf050c1c7a7
BLAKE2b-256 e0a7597e99493fc52060509ef7f5610ffa54364c0b9a444ddec435156d385b4b

See more details on using hashes here.

File details

Details for the file vwmrc-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: vwmrc-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"KDE neon","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for vwmrc-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1ba34a2d620c89ec72d832e6bf86b70720bdcb7301ec984ad94b6879eff443e2
MD5 7158edd5b5c1f0fdfe06c4f9147eb505
BLAKE2b-256 063fba074bc159fe9b7dbf5e14be650983883b5060de12a81d8d6c4848126169

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page