Skip to content
Snippets Groups Projects
Commit 0268ee67 authored by JOUNEAU Thomas's avatar JOUNEAU Thomas
Browse files

Replace generate_citation.py

parent 95f94880
Branches
No related tags found
No related merge requests found
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment