示例#1
0
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
示例#2
0
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