diff --git a/address-kit/README.md b/address-kit/README.md index 9594984..698da9d 100644 --- a/address-kit/README.md +++ b/address-kit/README.md @@ -1,89 +1,3 @@ # address-kit -Cette instance propose des outils de traitement d'adresses - -## Configuration - -Voir le [fichier de configuration](../address-kit-conf.json). - -> ⚠ L'application à utiliser **doit** être un *worker* avec python version 3.9. -> À l'heure de l'écriture de cette documentation, c'est -> `inistcnrs/lodex-workers-python@4.0.11` qui est le plus adapté. - -## Utilisation - -- [V1/cnrsunit/cnrsunit] - -### V1/cnrsunit/cnrsunit - -Ce service permet à partir d'une adresse comportant un code unité CNRS d'avoir le nom du laboratoire, son sigle, son rnsr, sa tutelle cnrs - -Prend en entrée du JSON avec deux champs: `id` et `value`, et renvoie un JSON -avec le code langue dans le champ `value`. - -#### Paramètres de v1/cnrsunit/cnrsunit - -| nom | description | -| :----- | :--------------------------------------------------------------------- | -| indent | `true` ou `false`, indente le JSON résultat ou non (`true` par défaut) | - -#### Exemple - -```bash -cat < Le code de ce web service se trouve sur GitHub: diff --git a/address-kit/examples.http b/address-kit/examples.http index 81aa8dc..3e54546 100644 --- a/address-kit/examples.http +++ b/address-kit/examples.http @@ -2,8 +2,8 @@ # (humao.rest-client) or httpYac (anweber.vscode-httpyac) # To test locally, replace with -#@host = http://localhost:31976 -@host = https://address-kit.services.istex.fr +@host = http://localhost:31976 +#@host = https://address-kit.services.istex.fr #@host = http://address-kit.tdmservices.intra.inist.fr ### @@ -36,4 +36,4 @@ {"id":8,"value":"Inist-CNRS, vandoeuvre les Nancy, France"} ] -### \ No newline at end of file +### diff --git a/address-kit/requirements.txt b/address-kit/requirements.txt deleted file mode 100644 index fbbbc5e..0000000 --- a/address-kit/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -pickleshare==0.7.5 -geopy==1.20.0 -iso3166==2.1.1 -unidecode==1.3.6 diff --git a/address-kit/swagger.json b/address-kit/swagger.json index 5ed25c3..ee090d4 100644 --- a/address-kit/swagger.json +++ b/address-kit/swagger.json @@ -1,33 +1,33 @@ { - "openapi": "3.1.0", - "info": { - "title": "address-kit - Informations sur des adresses d'affiliations", - "summary": "Cette instance propose des outils de traitement d'adresses", - "version": "4.0.0", - "termsOfService": "https://services.istex.fr/", - "contact": { - "name": "Inist-CNRS", - "url": "https://www.inist.fr/nous-contacter/" - } - }, - "servers": [ - { - "x-comment": "Will be automatically completed by the ezs server." - }, - { - "url": "http://vptdmservices.intra.inist.fr:49226/", - "description": "Latest version for production", - "x-profil": "Standard" - } - ], - "tags": [ - { - "name": "cnrs address", - "description": "Informations sur des adresses cnrs", - "externalDocs": { - "description": "Plus de documentation", - "url": "https://gitbucket.inist.fr/tdm/web-services/tree/master/address-kit" - } - } - ] + "openapi": "3.0.0", + "info": { + "title": "address-kit - ce service propose des outils de traitement d'adresses d'affiliations", + "description": "ces services prennent en entrée les affiliations des auteurs sous forme d'adresse et en tirent des informations sur la localisation ou la structure de recherche associée", + "version": "2.1.1", + "termsOfService": "https://services.istex.fr/", + "contact": { + "name": "Inist-CNRS", + "url": "https://www.inist.fr/nous-contacter/" + } + }, + "servers": [ + { + "x-comment": "Will be automatically completed by the ezs server." + }, + { + "url": "http://vptdmservices.intra.inist.fr:49272/", + "description": "Latest version for production", + "x-profil": "Standard" + } + ], + "tags": [ + { + "name": "address-kit", + "description": "ce service propose des outils de traitement d'adresses d'affiliations", + "externalDocs": { + "description": "Plus de documentation", + "url": "https://github.com/inist-cnrs/web-services/tree/main/services/address-kit" + } + } + ] } diff --git a/address-kit/tests.hurl b/address-kit/tests.hurl index 0c68807..f091b04 100644 --- a/address-kit/tests.hurl +++ b/address-kit/tests.hurl @@ -1,4 +1,4 @@ -POST https://address-kit.services.istex.fr/v1/cnrsunit/cnrsunit?indent=true +POST {{host}}/v1/cnrsunit/cnrsunit?indent=true content-type: application/json [ {"id":1, "value":"université sciences et technologies bordeaux 1 institut national de physique nucléaire et de physique des particules du cnrs in2p3 umr5797"}, @@ -10,42 +10,42 @@ HTTP 200 [{ "id": 1, - "value": [ - "Laboratoire de Physique des 2 infinis - Bordeaux", - "LP2I - Bordeaux", - "199512079F", - "Institut d'écologie et environnement" - ] + "value": { + "name": "Laboratoire de Physique des 2 infinis - Bordeaux", + "label": "LP2I - Bordeaux", + "rnsr": "199512079F", + "inst": "Institut d'écologie et environnement" + } }, { "id": 2, - "value": [ - "Institut de l'information scientifique et technique", - "INIST", - "198822446E", - "Direction générale déléguée à la science" - ] + "value": { + "name": "Institut de l'information scientifique et technique", + "label": "INIST", + "rnsr": "198822446E", + "inst": "Direction générale déléguée à la science" + } }, { "id": 3, - "value": [ - "GeoRessources", - "GEORESSOURCES", - "201320575M", - "Institut des sciences de l'ingénierie et des systèmes" - ] + "value": { + "name": "GeoRessources", + "label": "GEORESSOURCES", + "rnsr": "201320575M", + "inst": "Institut des sciences de l'ingénierie et des systèmes" + } }, { "id": 4, - "value": [ - "Centre européen de recherche et d'enseignement de géosciences de l'environnement", - "CEREGE", - "201220322S", - "Institut des sciences humaines et sociales" - ] + "value": { + "name": "Centre européen de recherche et d'enseignement de géosciences de l'environnement", + "label": "CEREGE", + "rnsr": "201220322S", + "inst": "Institut des sciences humaines et sociales" + } }] -POST https://address-kit.services.istex.fr/v1/affiliationcountry/affilcountry?indent=true +POST {{host}}/v1/affiliationcountry/affilcountry?indent=true content-type: application/json [ {"id":1,"value":"université sciences et technologies bordeaux 1 institut national de physique nucléaire et de physique des particules du cnrs in2p3 UMR5797"}, @@ -114,4 +114,4 @@ "France", "FRA" ] -}] +}] \ No newline at end of file diff --git a/address-kit/v1/affiliationcountry/affilcountry.ini b/address-kit/v1/affiliationcountry/affilcountry.ini deleted file mode 100644 index 16bc372..0000000 --- a/address-kit/v1/affiliationcountry/affilcountry.ini +++ /dev/null @@ -1,79 +0,0 @@ -# OpenAPI Documentation - JSON format (dot notation) -mimeType = application/json -post.operationId = post-v1-affiliationcountry -post.summary = ERenvoie le code du pays d'une affiliation -post.description = Cherche le pays d'une affiliation et renvoie le nom du pays et son code à 3 caractères -post.responses.default.description = Le nom du pays d'une affiliation et son code à 3 caractères -post.responses.default.content.application/json.schema.$ref = #/components/schemas/JSONStream -post.tags.0 = address -post.requestBody.required = true -post.requestBody.content.application/json.schema.$ref = #/components/schemas/JSONStream -post.parameters.0.in = query -post.parameters.0.name = path -post.parameters.0.schema.type = string -post.parameters.0.description = The path in each object to enrich with an Python script -post.parameters.1.in = query -post.parameters.1.name = indent -post.parameters.1.schema.type = boolean -post.parameters.1.description = Indent or not the JSON Result - -post.requestBody.content.application/json.example.0.id = 1 -post.requestBody.content.application/json.example.0.value = université sciences et technologies bordeaux 1 institut national de physique nucléaire et de physique des particules du cnrs in2p3 UMR5797 -post.requestBody.content.application/json.example.1.id = 2 -post.requestBody.content.application/json.example.1.value = uar76 / ups76 centre national de la recherche scientifique cnrs institut de l'information scientifique et technique inist -post.requestBody.content.application/json.example.2.id = 3 -post.requestBody.content.application/json.example.2.value = centre de recherches sur la géologie des matières premières minérales et énergétiques cregu université de lorraine ul umr7359 centre national de la recherche scientifique -post.requestBody.content.application/json.example.3.id = 4 -post.requestBody.content.application/json.example.3.value = auf der morgenstelle 8, 72076 tuebingen -post.requestBody.content.application/json.example.4.id = 5 -post.requestBody.content.application/json.example.4.value = z.i. de kermelin,16, rue ampère, 56017 Vannes -post.requestBody.content.application/json.example.5.id = 6 -post.requestBody.content.application/json.example.5.value = campus de santa apolónia, 5300-253 bragança -post.requestBody.content.application/json.example.6.id = 7 -post.requestBody.content.application/json.example.6.value = campus romanus de maron -post.requestBody.content.application/json.example.7.id = 8 -post.requestBody.content.application/json.example.7.value = Inist-CNRS, vandoeuvre les Nancy, France -post.responses.default.content.application/json.example.0.id = 1 -post.responses.default.content.application/json.example.0.value.0 = France -post.responses.default.content.application/json.example.0.value.1 = FRA -post.responses.default.content.application/json.example.1.id = 2 -post.responses.default.content.application/json.example.1.value.0 = France -post.responses.default.content.application/json.example.1.value.1 = FRA -post.responses.default.content.application/json.example.2.id = 3 -post.responses.default.content.application/json.example.2.value.0 = France -post.responses.default.content.application/json.example.2.value.1 = FRA -post.responses.default.content.application/json.example.3.id = 4 -post.responses.default.content.application/json.example.3.value.0 = Germany -post.responses.default.content.application/json.example.3.value.1 = DEU -post.responses.default.content.application/json.example.4.id = 5 -post.responses.default.content.application/json.example.4.value.0 = France -post.responses.default.content.application/json.example.4.value.1 = FRA -post.responses.default.content.application/json.example.5.id = 6 -post.responses.default.content.application/json.example.5.value.0 = Portugal -post.responses.default.content.application/json.example.5.value.1 = PRT -post.responses.default.content.application/json.example.6.id = 7 -post.responses.default.content.application/json.example.6.value.0 = Unknown -post.responses.default.content.application/json.example.6.value.1 = N/A -post.responses.default.content.application/json.example.7.id = 8 -post.responses.default.content.application/json.example.7.value.0 = France -post.responses.default.content.application/json.example.7.value.1 = FRA -# ' restore colorization - -[use] -plugin = @ezs/spawn -plugin = @ezs/basics - -[JSONParse] - -[expand] -path = env('path', 'value') -size = 100 -# in production mode, uncomment the following line -# cache = boost - -[expand/exec] -# command should be executable ! -command = ./v1/affiliationcountry/detect_country.py - -[dump] -indent = env('indent', false) diff --git a/address-kit/v1/affiliationcountry/detect_country.py b/address-kit/v1/affiliationcountry/detect_country.py deleted file mode 100644 index 87e5835..0000000 --- a/address-kit/v1/affiliationcountry/detect_country.py +++ /dev/null @@ -1,244 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -Created on Thu Mar 31 16:36:28 2022 - -@author: cuxac -""" - -from geopy.geocoders import Nominatim -#import time -import functools -import unidecode -import re -#import pycountry -from iso3166 import countries -import json -import sys - -osm = Nominatim(timeout=60,user_agent='inistTDM') - -locator = functools.lru_cache(maxsize=128)(functools.partial(osm.geocode, timeout=60,language='en')) -locator_rev = functools.lru_cache(maxsize=128)(functools.partial(osm.reverse, timeout=60,language='en')) - -#fin=json.loads(json.dumps([{ -# "id":1, -# "value":"université sciences et technologies bordeaux 1 institut national de physique nucléaire et de physique des particules du cnrs in2p3 UMR5797"}, -# {"id":2, -# "value":"uar76 / ups76 centre national de la recherche scientifique cnrs institut de l'information scientifique et technique inist"}, -# {"id":3, -# "value":"centre de recherches sur la géologie des matières premières minérales et énergétiques cregu université de lorraine ul umr7359 centre national de la recherche scientifique"}, -# {"id":4, -# "value":"auf der morgenstelle 8, 72076 tuebingen" -# }, -# {"id":5, -# "value":"z.i. de kermelin,16, rue ampère, 56017 Vannes" -# }, -# {"id":6, -# "value":"campus de santa apolónia, 5300-253 bragança"}, -# {"id":7, -# "value":"campus romanus de maron"} , -# {"id":8, -# "value":"Inist-CNRS, vandoeuvre les Nancy, France"} -# ])) - - - -def placeaddress(address): - place, (lat, lng)=locator(address) - res=locator_rev(str(lat)+","+str(lng)) - try : - country=res.raw['address']['country'] - except KeyError: - country=res.raw['address']['country_code'] - try: - village=res.raw['address']['village'] - except KeyError: - village='' - return country,lat,lng,village - -#for line in fin: -for line in sys.stdin: - country="" - data=json.loads(line) - aff=data['value'] - lines=aff.replace('"','') - - adr=lines.strip() - adr=adr.replace('&',';') - ad=adr.split(';') - ads=[i.strip() for i in ad] - - for a in set(ads) : - - a=a.lower() - a=a.replace('cedex','') - a=re.sub(' U[0-9]+','',a,flags=re.IGNORECASE) - a=re.sub("both in ",'',a,flags=re.IGNORECASE) - a=re.sub(' UMR[0-9]+','',a,flags=re.IGNORECASE) - a=a.replace('...',' ') - a=a.replace('_',' ') - - a=re.sub('\([a-zA-Z0-9 ,:\–]+\)','',a) - - ##-1 on traite avec libpostal et on regarde s'il y a un pays - #nl=parse_address(a.strip().strip('.')) - #d=dict(map(reversed,nl)) - - ars=re.split(',|:',a) - if re.match(r'u[amsrp]+ ?[0-9]+',a): - country='France' - else: - try: - #country=d['country'] - country=countries.get(ars[-1].strip()).name - # if len(country)==3: - # cd=country.upper() - # #x=pycountry.countries.get(alpha_3=cd) - # country=countries.get(cd).name - # - # #country=x.name - country=placeaddress(country)[0] - - - except (KeyError,TypeError) as error: - #- 2 s'il n'y a pas de pays avec libpostal on essaye avec nominatim de trouver un pays - - try: - - country=placeaddress(a)[0] - - if placeaddress(a)[3].lower()!=a.lower(): - - - country=country - - #-3 si ça ne fonctionne pas on essaye de spliter l'adresse et de traiter les éléments séparéément - except (KeyError,TypeError) as error: - - a=a.lower() - a2='' - - if "university" in unidecode.unidecode(a).lower():#.split()[:-1]: - - a1=re.findall("faculty of [a-zA-Z]+",unidecode.unidecode(a), flags=re.IGNORECASE) - a11=re.findall("college of [a-zA-Z]+",unidecode.unidecode(a), flags=re.IGNORECASE) - if len(a1)>0: - a=a.replace(a1[0],'') - if len(a11)>0: - a=a.replace(a11[0],'') - if "university" in a.lower().split()[:-1]: - - a=a.replace(' hospital ',' ') - - a2=re.findall("university [a-zA-Z&]+",unidecode.unidecode(a), flags=re.IGNORECASE) - if len(a2)>1: - - a3=a2[0].replace("university of ","university ") - if len(a2)<1: - a2=unidecode.unidecode(a).lower().replace('university','$ university').split('$ ') - a2.insert(0,a3) - try: - a2.remove('university of science') - except ValueError: - uos=0 - elif ("university" ==a.split()[-1].lower()) or ("university," in a.lower()): - a2=re.findall("[ a-zA-Z]+ university",unidecode.unidecode(a), flags=re.IGNORECASE) - a2.insert(0,'') - - elif "universite " in unidecode.unidecode(a).lower(): - - a2=re.findall("universite (?:[A-Za-z]+\s){1}[A-Za-z]+",unidecode.unidecode(a), flags=re.IGNORECASE) - a3=re.findall("(?:[A-Za-z]+\s){1}[A-Za-z]+ universite",unidecode.unidecode(a), flags=re.IGNORECASE) - if len(a3)==0: - a3=[' '] - a2.insert(0,a3[0]) - if len(a2)<2: - a2=unidecode.unidecode(a).lower().replace('universite','$ universite').split('$ ') - - elif "universidad " in unidecode.unidecode(a).lower(): - a2=re.findall("universidad [ a-zA-Z]+",unidecode.unidecode(a), flags=re.IGNORECASE) - a2.insert(0,'') - if len(a2)<2: - a2=unidecode.unidecode(a).lower().replace('universidad','$ universidad').split('$ ') - - elif "universitat " in unidecode.unidecode(a).lower(): - a2=re.findall("universitat [ a-zA-Z]+",unidecode.unidecode(a), flags=re.IGNORECASE) - a2.insert(0,'') - if len(a2)<2: - a2=unidecode.unidecode(a).lower().replace('universitat','$ universitat').split('$ ') - - elif "hopital " in unidecode.unidecode(a).lower(): - a2=re.findall("hopital [a-zA-Z']+",unidecode.unidecode(a), flags=re.IGNORECASE) - a2.insert(0,'') - - elif ("chu" and "chru") in unidecode.unidecode(a).lower(): - if ("chu de " and "chru de ") in unidecode.unidecode(a).lower(): - a2=re.findall("ch[r]?u de [a-zA-Z']+",unidecode.unidecode(a), flags=re.IGNORECASE) - a2.insert(0,'') - else: - - a2=re.findall("ch[r]?u [a-zA-Z']+",unidecode.unidecode(a), flags=re.IGNORECASE) - a3=a2[0].replace("chru","chu") - a2.insert(0,a3) - - elif ',' in a: - a2=a.split(',') - - elif ':' in a: - a2=a.split(':') - - elif " et " in a.split()[:-2]: - - a2=a.split(' et ') - - elif (' — ' and ' - ') in a: - - if ' — ' in a: - a2=a.split(' — ') - else: - a2=a.split(' - ') - elif ' an der ' in a: - - a2=a.split(' an der ') - elif '-' in a: - - a2=re.findall(r'\w+(?:-\w+)+',a) - a2.insert(0,'') - - if len(a2)>1: - lon=1 - for aa in reversed(a2): - aa=aa.strip() - #time.sleep(1) - try: - - country=placeaddress(aa)[0] - lat=placeaddress(aa)[1] - lng=placeaddress(aa)[2] - - break - except TypeError: - to=1 - - if lon==len(a2): - country="unknown" - - lon+=1 -# -# elif re.match(r'u[amsrp]+ ?[0-9]+',a): -# country='France' - else: - country="Unknown" - try: - data["value"]=[country, countries.get(country).alpha3] - except KeyError: - data["value"]=[country, 'N/A'] - sys.stdout.write(json.dumps(data)) - sys.stdout.write('\n') - - - - - - diff --git a/address-kit/v1/cnrsunit/cnrsunit.ini b/address-kit/v1/cnrsunit/cnrsunit.ini deleted file mode 100644 index 822c146..0000000 --- a/address-kit/v1/cnrsunit/cnrsunit.ini +++ /dev/null @@ -1,67 +0,0 @@ -# OpenAPI Documentation - JSON format (dot notation) -mimeType = application/json -post.operationId = post-v1-cnrsunit -post.summary = Informations sur une adresse CNRS comportant un code unité -post.description = Donne des informations sur une adresse CNRS comportant un code unité -post.responses.default.description = Recherche un code unité CNRS et renvoie le nom du labo, son acronyme, son RNSR, sa tutelle -post.responses.default.content.application/json.schema.$ref = #/components/schemas/JSONStream -post.tags.0 = address -post.requestBody.required = true -post.requestBody.content.application/json.schema.$ref = #/components/schemas/JSONStream -post.parameters.0.in = query -post.parameters.0.name = path -post.parameters.0.schema.type = string -post.parameters.0.description = Le chemin du champ à enrichir -post.parameters.1.in = query -post.parameters.1.name = indent -post.parameters.1.schema.type = boolean -post.parameters.1.description = Indente ou non le JSON résultat - -post.requestBody.content.application/json.example.0.id = 1 -post.requestBody.content.application/json.example.0.value = université sciences et technologies bordeaux 1 institut national de physique nucléaire et de physique des particules du cnrs in2p3 umr5797 -post.requestBody.content.application/json.example.1.id = 2 -post.requestBody.content.application/json.example.1.value = uar76 / ups76 centre national de la recherche scientifique cnrs institut de l'information scientifique et technique inist -post.requestBody.content.application/json.example.2.id = 3 -post.requestBody.content.application/json.example.2.value = centre de recherches sur la géologie des matières premières minérales et énergétiques cregu université de lorraine ul umr7359 centre national de la recherche scientifique -post.requestBody.content.application/json.example.3.id = 4 -post.requestBody.content.application/json.example.3.value = umr_d161 institut de recherche pour le développement ird um34 aix marseille université amu umr7330 collège de france cdf institution institut national des sciences de l'univers insu cnrs umr7330 centre national de la recherche scientifique cnrs umr1410 institut national de recherche pour l'agriculture l'alimentation et l'environnement inrae centre européen de recherche et d'enseignement des géosciences de l'environnement cerege europôle méditerranéen de l'arbois -post.responses.default.content.application/json.example.0.id = 1 -post.responses.default.content.application/json.example.0.value.0 = Laboratoire de Physique des 2 infinis - Bordeaux -post.responses.default.content.application/json.example.0.value.1 = LP2I - Bordeaux -post.responses.default.content.application/json.example.0.value.2 = 199512079F -post.responses.default.content.application/json.example.0.value.3 = Institut d'écologie et environnement -post.responses.default.content.application/json.example.1.id = 2 -post.responses.default.content.application/json.example.1.value.0 = Institut de l'information scientifique et technique -post.responses.default.content.application/json.example.1.value.1 = INIST -post.responses.default.content.application/json.example.1.value.2 = 198822446E -post.responses.default.content.application/json.example.1.value.3 = Direction générale déléguée à la science -post.responses.default.content.application/json.example.2.id = 3 -post.responses.default.content.application/json.example.2.value.0 = GeoRessources -post.responses.default.content.application/json.example.2.value.1 = GEORESSOURCES -post.responses.default.content.application/json.example.2.value.2 = 201320575M -post.responses.default.content.application/json.example.2.value.3 = Institut des sciences de l'ingénierie et des systèmes -post.responses.default.content.application/json.example.3.id = 4 -post.responses.default.content.application/json.example.3.value.0 = Centre européen de recherche et d'enseignement de géosciences de l'environnement -post.responses.default.content.application/json.example.3.value.1 = CEREGE -post.responses.default.content.application/json.example.3.value.2 = 201220322S -post.responses.default.content.application/json.example.3.value.3 = Institut des sciences humaines et sociales -# ' restore colorization - -[use] -plugin = @ezs/spawn -plugin = @ezs/basics - -[JSONParse] - -[expand] -path = env('path', 'value') -size = 100 -# in production mode, uncomment the following line -# cache = boost - -[expand/exec] -# command should be executable ! -command = ./v1/cnrsunit/ws_umr.py - -[dump] -indent = env('indent', false) diff --git a/address-kit/v1/cnrsunit/dico_codeunite_intituleunite_v071122.pkl b/address-kit/v1/cnrsunit/dico_codeunite_intituleunite_v071122.pkl deleted file mode 100644 index e20c0bd..0000000 --- a/address-kit/v1/cnrsunit/dico_codeunite_intituleunite_v071122.pkl +++ /dev/null Binary files differ diff --git a/address-kit/v1/cnrsunit/ws_umr.py b/address-kit/v1/cnrsunit/ws_umr.py deleted file mode 100644 index 426cfc9..0000000 --- a/address-kit/v1/cnrsunit/ws_umr.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -Created on Fri Sep 23 16:16:17 2022 - -@author: cuxac -""" - -#import ndjson -import re -import pickle -import json -import sys - - -dico_unite_pkl=open("./v1/cnrsunit/dico_codeunite_intituleunite_v071122.pkl","rb") -dico_unite=pickle.load(dico_unite_pkl) - - -#fin=json.loads(json.dumps([{ -# "id":1, -# "value":"université sciences et technologies bordeaux 1 institut national de physique nucléaire et de physique des particules du cnrs in2p3 umr5797"}, -# {"id":2, -# "value":"uar76 / ups76 centre national de la recherche scientifique cnrs institut de l'information scientifique et technique inist"}, -# {"id":3, -# "value":"centre de recherches sur la géologie des matières premières minérales et énergétiques cregu université de lorraine ul umr7359 centre national de la recherche scientifique"}, -# {"id":4, -# "value":"umr_d161 institut de recherche pour le développement ird um34 aix marseille université amu umr7330 collège de france cdf institution institut national des sciences de l'univers insu cnrs umr7330 centre national de la recherche scientifique cnrs umr1410 institut national de recherche pour l'agriculture l'alimentation et l'environnement inrae centre européen de recherche et d'enseignement des géosciences de l'environnement cerege europôle méditerranéen de l'arbois" -# } -# ])) - - - - -for line in sys.stdin: - data=json.loads(line) - - aff=data["value"] - - - - c=re.findall(r'u[amsrp]+ ?[0-9]+',aff) - cd=list(set(c)) - - for code in cd: - - code=code.lower() - code=code.replace(' ','') - code=code.replace('-','') - - try: - data["value"]=dico_unite[code] - if len(dico_unite[code])>0: - break - - except KeyError: - data["value"]="unknown" - - - sys.stdout.write(json.dumps(data, ensure_ascii=False)) - sys.stdout.write('\n') - -