Python, web services, oai
June 17, 2006
J'ai repris mes exerices pythonesques.
D'abord en simplifiant les lignes faites la dernière fois. En fait: importer sys n'est pas utile, et il n'est pas non plus utile de faire tout le détail s'il y a un sous champ subfield, s'il y a qq chose dedans, etc. Ici je fais directement afficher le contenu du sous-cham; s'il n'existe pas Python ne soulève pas d'exception, il passe.
Et j'ai ajouté des trucs:
- je prends plusieurs notices, il cherche tous les 610
- avant de traiter le fichier xml, je créé une liste vide: hintslist
- je n'imprime plus le contenu du sous-champ, je l'ajoute à la suite dans la liste, en le transformant en minuscules à la volée. J'ai donc une liste, en minuscules, de tous les champs 610 rencontrés.
- je créé une seconde liste (sortedhints), qui prend le contenu de la première liste et applique deux traitement: dédoublonner les sujets et trier par ordre alphabétique.
Ce qui donne:
from elementtree import ElementTree
intslist = [] # creates an empty list, or empties the list if it existed
tree = ElementTree.parse("2notices.xml")
for node in tree.findall(".//varfield"): # gets all the varfield nodes
if node.get("id") == "610": # only gets varfield with 610, subject in Unimarc
for child in node: # loop: for each subfield..
hintslist.append(child.text.lower()) # appends text of subfield to hintslist, in lowercase
sortedhints = [] # creates another empty list, to be used to sort and deduplicate results
for hints in sorted(set(hintslist)):
sortedhints.append(hints)
Par contre pour le web service, ça va pas le faire.
J'ai bien trouvé comment interroger un web service en python, mais je m'aperçois que dans Aleph, x-Server limite l'ensemble résultat à 1000 réponses. Tout mon catalogue de 400.000 notices a découper en tranches de 1000 notices, ça va pas le faire du tout.
Par contre il y a un serveur OAI-PMH sur Aleph. Que j'ai commencé à paramétrer. La commande http://corto.uang:8991/OAI-script?verb=Identify me donne:
<OAI-PMH xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<responseDate>2006-06-17T10:26:07Z</responseDate>
<request verb="Identify">http://corto.uang:8991/OAI-script</request>
<Identify>
<repositoryName>Bibliotheque Universitaire d'Angers</repositoryName>
<baseURL>http://corto.uang:8991/OAI-script</baseURL>
<protocolVersion>2.0</protocolVersion>
<adminEmail>nicolas.morin@univ-angers.fr</adminEmail>
<earliestDatestamp>2005-12-20</earliestDatestamp>
<deletedRecord>no</deletedRecord>
<granularity>YYYY-MM-DD</granularity>
</Identify>
</OAI-PMH>
Le serveur OAI-PMH d'Aleph supporte oai-dc comme format d'export des notices, c'est-à-dire le même format d'export que le web service, pour lequel j'ai écrit mon script Python.
Je vais plutôt suivre cette piste.
Entry Filed under: Uncategorized. .
2 Comments Add your own
Leave a Comment
Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackback this post | Subscribe to the comments via RSS Feed
1.
Timothee | June 28, 2006 at 2:46 pm
Tu peux paramétrer le nombre de résultats obtenus par l’API. La limite est de 20000 résultats.
2.
nicolas morin | July 3, 2006 at 8:00 am
Merci de cette précision intéressante. Malgré tout, ce n’est pas la voie la plus utile pour exporter son catalogue… Au moins pour l’export initial.