def marc2json(fields): """ Transforme le marc en json Pour voir le Marc: ouvrir data/data.xml Pour la documentation des champs marc utilisés dans RERO DOC: http://www.rero.ch/pdfview.php?section=fiche&filename=metadonnees_rerodoc.pdf Exercice: rajouter les champs: language, cdu_class, keywords, document_type, institution Note: pour visualiser le json: python es_lab/records.py data/data.xml ou http://localhost:5000/record/<recid>, par ex: http://localhost:5000/record/12739 """ from records import get_subfield to_return = {} for field in fields: for k, v in field.iteritems(): if k == "001": to_return["recid"] = int(v) if k == "100": to_return.setdefault("authors", {})["first_author"] = get_subfield(v, "a") if k == "245": to_return.setdefault("title", {})\ .setdefault("title", get_subfield(v, "a")) subtitle = get_subfield(v, "b") if subtitle: to_return.setdefault("title", {})\ .setdefault("subtitle", get_subfield(v, "b")) if k == "520": abstract = get_subfield(v, "a") if abstract: to_return["abstract"] = abstract if k == "700": other_authors = get_subfield(v, "a") if other_authors: to_return.setdefault("authors", {}).setdefault("other_authors", []).append(other_authors) return to_return
def marc2json(fields): from records import get_subfield to_return = {} for field in fields: for k, v in field.iteritems(): if k == "001": to_return["recid"] = int(v) if k == "041": to_return["language"] = get_subfield(v, "a") if k == "080": cdu_class = get_subfield(v, "a") if cdu_class: to_return["cdu_class"] = cdu_class if k == "100": to_return.setdefault("authors", {})["first_author"] = get_subfield(v, "a") if k == "245": to_return.setdefault("title", {})\ .setdefault("title", get_subfield(v, "a")) subtitle = get_subfield(v, "b") if subtitle: to_return.setdefault("title", {})\ .setdefault("subtitle", get_subfield(v, "b")) if k == "520": abstract = get_subfield(v, "a") if abstract: to_return["abstract"] = abstract if k == "695": keywords = get_subfield(v, "a") if keywords: to_return["keywords"] = keywords if k == "700": other_authors = get_subfield(v, "a") if other_authors: to_return.setdefault("authors", {}).setdefault("other_authors", []).append(other_authors) if k == "980": to_return["document_type"] = get_subfield(v, "a") if k == "980": to_return["institution"] = get_subfield(v, "b") return to_return