diff --git a/hal/searchdatahal.py b/hal/searchdatahal.py new file mode 100644 index 0000000000000000000000000000000000000000..0dcaf0f2ccaea0919844fead0e394040b469048b --- /dev/null +++ b/hal/searchdatahal.py @@ -0,0 +1,74 @@ +import requests +from celery import shared_task + +from utils import mails + +@shared_task +def searchdatahal(mailretour, annee_debut, annee_fin, users_hal): + reponse_mail = "Bonjour\n\nVous avez demandé la liste des publications pour les idHal suivants {0}\n\n".format(users_hal) + reponse_mail += "Les informations présentées sont de la forme : idHal utilisateur ; Titre ; halId publi ; URL ; Type ; Date \n" + reponse_mail += "Vous pouvez récupérer les données et les importer comme un CSV avec ';' comme séparateur" + reponse_mail += "Voici le résultat de la recherche dans HAL :\n\n" + + + list_users = users_hal.split(',') + for user in list_users : + idhal = user.strip() + #reponse_mail += "idHal : {0}\n".format(idhal) + + if len(idhal) > 0 : + url = "https://api.archives-ouvertes.fr/search/?q=authIdHal_s:{0}&start=0&rows=200&fl=uri_s,halId_s,docType_s,producedDate_s,title_s&wt=json&fq=producedDateY_i:[{1}%20TO%20{2}]".format(idhal, annee_debut, annee_fin) + + #url = 'https://api.archives-ouvertes.fr/search/?q=authLastNameFirstName_s:"{0}+{1}"&start=0&rows=200&fl=uri_s,halId_s,docType_s,producedDate_s,title_s&wt=json&fq=producedDateY_i:[2018%20TO%202023]'.format(nom,prenom) + #url = "https://api.archives-ouvertes.fr/search/?q=authFullName_s:{0} {1}&start=0&rows=200&fl=uri_s,halId_s,docType_s,producedDate_s,title_s&wt=json&fq=producedDateY_i:[2018%20TO%202023]".format(nom,prenom) + print(url) + req = requests.get(url) + + print("code HTTP {0}".format(req.status_code)) + #print (req.status_code) + #print (req.headers['content-type']) + if (req.status_code == 200) : + try : + json = req.json() + # recup en json et on se place dans response puis docs + tous_docs = json['response']['docs'] + + # pour chaque element de 'docs', on recupere les elements de la publi que l'on place dans publilist + cptpub=0 + for doc in tous_docs: + #print ("lecture reponse") + cptpub+=1 + + + #recup halId + recup_halId = doc["halId_s"] + #halid = recup_halId#'\"{0}\"'.format(recup_halId) + + # recup url + uri = doc["uri_s"] + #uri = '\"{0}\"'.format(uri) + + #recup doctype + doctype = doc["docType_s"] + #doctype = '\"{0}\"'.format(doctype) + + #recup title + title = doc["title_s"] + title[0].encode("utf-8") + titlefinal = title[0].replace("\""," ") + + producedDate = doc["producedDate_s"] + + print("{0} -> {1} {2} {3} {4} {5}".format(idhal, titlefinal, recup_halId, uri, doctype, producedDate)) + reponse_mail += "{0} ; {1} ; {2} ; {3} ; {4} ; {5}\n".format(idhal, titlefinal, recup_halId, uri, doctype, producedDate) + except Exception as e : + print("Problem JSON pour {0}".format(idhal)) + reponse_mail+="Problème au niveau du format JSON de sortie\n" + else : + print("Problem requete pour {0} {1}".format(idhal)) + reponse_mail+="Problème sur la requête HTTP\n" + + #reponse_mail +="\n" + + mails.sendonemail("[HALTOOLS] résultats recherche",reponse_mail,mailretour) + return None \ No newline at end of file