Skip to content
Snippets Groups Projects
Commit b34d1de1 authored by Elias Chetouane's avatar Elias Chetouane
Browse files

Script pour récupération des DOIs de l'UGA depuis Datacite

parent 31859d11
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python
# coding: utf-8
# In[1]:
# récupérer les DOIs de l'UGA depuis Datacite
## 2023-12-01, Elias Chetouane
# In[12]:
"""
## todo
- recherche par affiliation contributeurs ?
## Documentation
* Doc générale API Datacite : https://support.datacite.org/docs/api
* Recherche d'un DOI : https://support.datacite.org/docs/api-sampling
* Pagination : https://support.datacite.org/docs/pagination
"""
# In[13]:
import requests, json
# In[14]:
# requête url de base
url = 'https://api.datacite.org/dois?affiliation=true&query=creators.affiliation.affiliationIdentifier:"https://ror.org/02rx3b187"&page[size]=100'
# obtenir les résultats de la première page
req = requests.get(url)
results = [req.json()]
# obtenir les résultats de chaque page dans la liste results
nb_pages = results[0]["meta"]["totalPages"]
page = 1
while(page < nb_pages):
url = (results[page-1]["links"]["next"])
req = requests.get(url)
results.append(req.json())
page += 1
# In[15]:
# ajouter les DOIs dans une liste, sans ajouter les résultats qui ne sont pas des DOIs
dois = []
not_dois = []
nb_dois = 0
# prendre en compte les résultats de chaque page
for res in results:
num_dois = res["data"]
nb_dois += len(num_dois)
for item in num_dois :
doi = item["id"]
if item.get("type") != "dois":
print("Le résultat " + str(item) + " est de type " + item.get("type") + " : " + doi)
not_dois.append(doi)
else:
dois.append(doi)
print("Nombre de résultats trouvés : " + str(nb_dois))
# In[43]:
# exporter la liste de DOI au format txt
with open("datacite-dois.txt", 'w') as f :
[f.write(f"{line}\n") for line in dois]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment