Python, web services, oai

June 17, 2006 at 11:31 am 2 comments

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"&gt;
<responseDate>2006-06-17T10:26:07Z</responseDate>
<request verb="Identify">http://corto.uang:8991/OAI-script</request&gt;
<Identify>
<repositoryName>Bibliotheque Universitaire d'Angers</repositoryName>
<baseURL>http://corto.uang:8991/OAI-script</baseURL&gt;
<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.

Advertisements

Entry filed under: Uncategorized.

links for 2006-06-15 auto-dérision geek

2 Comments Add your own

  • 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.

    Reply
  • 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.

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Feeds


%d bloggers like this: