From 0268ee67b2e91d3528f83b7c6adaad01e738e879 Mon Sep 17 00:00:00 2001 From: JOUNEAU Thomas <thomas.jouneau@univ-lorraine.fr> Date: Thu, 13 Jan 2022 16:00:06 +0000 Subject: [PATCH] Replace generate_citation.py --- dorel_export_v0.2/generate_citation.py | 226 ++++++++++++++----------- 1 file changed, 123 insertions(+), 103 deletions(-) diff --git a/dorel_export_v0.2/generate_citation.py b/dorel_export_v0.2/generate_citation.py index a7a64de..0e55dce 100644 --- a/dorel_export_v0.2/generate_citation.py +++ b/dorel_export_v0.2/generate_citation.py @@ -95,118 +95,138 @@ bibliography_list = [] for doi,metadata in complete_list.items(): # print (f"\n{doi} : \n") # Retour du DOI. Décommenter pour débogage + authors_list=[] subjects_list=[] + # On vérifie la présence de "latestVersion" dans metadata + metadata = metadata[0] # le dictionnaire étant enserré entre des crochets, on prend le premier et unique élément de cette "liste" - # on récupère tout ce qu'on peut au niveau 1 de l'entrée et dans "latestVersion" - - dataset_id = metadata["id"] - # print (dataset_id) + + if "latestVersion" in metadata: - dataset_identifier = metadata["identifier"] - # mapping de champs seulement s'ils existent (tests avec if) - if "persistentUrl" in metadata : - dataset_persistentUrl = metadata["persistentUrl"] - # print (dataset_persistentUrl) - elif "persistentUrl" not in metadata : - dataset_persistentUrl = "" - else : - print ("Vérifier la partie du code concernant le mapping de persistentUrl") + # ------------------------------------------------------------------------------ + # on récupère tout ce qu'on peut au niveau 1 de l'entrée et dans "latestVersion" + # ------------------------------------------------------------------------------ + + dataset_id = metadata["id"] + # print (dataset_id) + + dataset_identifier = metadata["identifier"] + # mapping de champs seulement s'ils existent (tests avec if) + if "persistentUrl" in metadata : + dataset_persistentUrl = metadata["persistentUrl"] + # print (dataset_persistentUrl) + elif "persistentUrl" not in metadata : + dataset_persistentUrl = "" + else : + print ("Vérifier la partie du code concernant le mapping de persistentUrl") + + if "publicationDate" in metadata : + dataset_publicationDate = metadata["publicationDate"] + # print (dataset_publicationDate) + elif "publicationDate" not in metadata : + dataset_publicationDate = "" + else : + print ("Vérifier la partie du code concernant le mapping de publicationDate") + + if "publisher" in metadata : + dataset_publisher = metadata["publisher"] + # print (dataset_publisher) + elif "publisher" not in metadata : + dataset_publisher = "" + else : + print ("Vérifier la partie du code concernant le mapping de publisher") + + dataset_yearofPublication = dataset_publicationDate[0:4] + + if "license" in metadata["latestVersion"] : + dataset_license = metadata["latestVersion"]["license"] + # print (dataset_license) + elif "license" not in metadata["latestVersion"] : + dataset_license = "" + else : + print ("Vérifier la partie du code concernant le mapping de license") + + if "versionNumber" in metadata["latestVersion"] : + dataset_versionNumber = metadata["latestVersion"]["versionNumber"] + # print (dataset_versionNumber) + elif "versionNumber" not in metadata["latestVersion"] : + dataset_versionNumber = "" + else : + print ("Vérifier la partie du code concernant le mapping de versionNumber") + + if "versionMinorNumber" in metadata["latestVersion"] : + dataset_versionMinorNumber = metadata["latestVersion"]["versionMinorNumber"] + # print (dataset_versionMinorNumber) + elif "versionMinorNumber" not in metadata["latestVersion"] : + dataset_versionMinorNumber = "0" + else : + print ("Vérifier la partie du code concernant le mapping de versionMinorNumber") + + if "UNF" in metadata["latestVersion"] : + dataset_unf = metadata["latestVersion"]["UNF"] + # print (dataset_unf) + elif "UNF" not in metadata["latestVersion"] : + dataset_unf = "" + else : + print ("Vérifier la partie du code concernant le mapping de UNF") + + print ("y") + + # ---------------------------------------------------------------- + # Exploration des sous-blocs et récupération des champs répétables + # ---------------------------------------------------------------- + + fields = metadata["latestVersion"]["metadataBlocks"]["citation"]["fields"] + for field in fields: # chaque champ est pris l'un après l'autre. field est un dictionnaire + # print (field) + # print (f"{field['typeName']} : {field['value']}") + typeName = field['typeName'] + # title = "" # on définit par avance l'ensemble des champs en leur attribuant une valeur vide + # authors = "" + # datasetContacts = "" + # dsDescriptions = "" + # subjects = "" + # keywords = "" + # languages = "" + # depositors = "" + # dateOfDeposit = "" + if typeName == 'title': + title = field['value'] # champ unique + if typeName == 'author': + authors = field['value'] # liste de dictionnaires donc chaque élément est un auteur + for author in authors: + authorName = author["authorName"]["value"] + authors_list.append(authorName) + if typeName == 'datasetContact': + datasetContacts = field['value'] # champ multiple + if typeName == 'dsDescription': + dsDescriptions = field['value'] # champ multiple + if typeName == 'subject': + subjects = field['value'] # champ multiple + if typeName == 'language': + languages = field['value'] # liste + if typeName == 'depositor': + depositors = field['value'] + if typeName == 'keyword': + keywords = field['value'] + if typeName == 'dateofDeposit': + dateofDeposit = field['value'] + + # Appel de la fonction de génération de citation + + citation_current = citation_generation(cit_authors = authors_list,cit_title=title,cit_year=dataset_yearofPublication,cit_data_repository=dataset_publisher,cit_version_number=dataset_versionNumber,cit_version_minor_number=dataset_versionMinorNumber, cit_doi=doi,cit_unf=dataset_unf) + print (citation_current) + bibliography_list.append(citation_current) - if "publicationDate" in metadata : - dataset_publicationDate = metadata["publicationDate"] - # print (dataset_publicationDate) - elif "publicationDate" not in metadata : - dataset_publicationDate = "" - else : - print ("Vérifier la partie du code concernant le mapping de publicationDate") - - dataset_yearofPublication = dataset_publicationDate[0:4] + elif "latestVersion" not in metadata : + print ("Pas de version trouvée pour ce jeu de données. Pas d'export.") - - if "license" in metadata["latestVersion"] : - dataset_license = metadata["latestVersion"]["license"] - # print (dataset_license) - elif "license" not in metadata["latestVersion"] : - dataset_license = "" - else : - print ("Vérifier la partie du code concernant le mapping de license") - - if "publisher" in metadata : - dataset_publisher = metadata["publisher"] - # print (dataset_publisher) - elif "publisher" not in metadata : - dataset_publisher = "" - else : - print ("Vérifier la partie du code concernant le mapping de publisher") - - if "versionNumber" in metadata["latestVersion"] : - dataset_versionNumber = metadata["latestVersion"]["versionNumber"] - # print (dataset_versionNumber) - elif "versionNumber" not in metadata["latestVersion"] : - dataset_versionNumber = "" - else : - print ("Vérifier la partie du code concernant le mapping de versionNumber") - - if "versionMinorNumber" in metadata["latestVersion"] : - dataset_versionMinorNumber = metadata["latestVersion"]["versionMinorNumber"] - # print (dataset_versionMinorNumber) - elif "versionMinorNumber" not in metadata["latestVersion"] : - dataset_versionMinorNumber = "0" - else : - print ("Vérifier la partie du code concernant le mapping de versionMinorNumber") - - if "UNF" in metadata["latestVersion"] : - dataset_unf = metadata["latestVersion"]["UNF"] - # print (dataset_unf) - elif "UNF" not in metadata["latestVersion"] : - dataset_unf = "" else : - print ("Vérifier la partie du code concernant le mapping de UNF") - + print ("Problème d'exception sur le test de présence de latestVersion, corriger le code.") + - fields = metadata["latestVersion"]["metadataBlocks"]["citation"]["fields"] - for field in fields: # chaque champ est pris l'un après l'autre. field est un dictionnaire - # print (field) - # print (f"{field['typeName']} : {field['value']}") - typeName = field['typeName'] - # title = "" # on définit par avance l'ensemble des champs en leur attribuant une valeur vide - # authors = "" - # datasetContacts = "" - # dsDescriptions = "" - # subjects = "" - # keywords = "" - # languages = "" - # depositors = "" - # dateOfDeposit = "" - if typeName == 'title': - title = field['value'] # champ unique - if typeName == 'author': - authors = field['value'] # liste de dictionnaires donc chaque élément est un auteur - for author in authors: - authorName = author["authorName"]["value"] - authors_list.append(authorName) - if typeName == 'datasetContact': - datasetContacts = field['value'] # champ multiple - if typeName == 'dsDescription': - dsDescriptions = field['value'] # champ multiple - if typeName == 'subject': - subjects = field['value'] # champ multiple - if typeName == 'language': - languages = field['value'] # liste - if typeName == 'depositor': - depositors = field['value'] - if typeName == 'keyword': - keywords = field['value'] - if typeName == 'dateofDeposit': - dateofDeposit = field['value'] - - # Appel de la fonction de génération de citation - - citation_current = citation_generation(cit_authors = authors_list,cit_title=title,cit_year=dataset_yearofPublication,cit_data_repository=dataset_publisher,cit_version_number=dataset_versionNumber,cit_version_minor_number=dataset_versionMinorNumber, cit_doi=doi,cit_unf=dataset_unf) - print (citation_current) - bibliography_list.append(citation_current) # ------------------------------------- # Génération de la bibliographie finale -- GitLab