Ceci est un outil qui permet d'aller rechercher sur Internet le nom d'un auteur et d'un ouvrage à partir d'un code ISBN 10 via le site
http://france.isbn.pl/
Il procède à une vérification préalable du code avant de se connecter.
Ce module pourrait être utilisé pour une base de donnée et permet de n'avoir qu'à entrer l'ISBN de chaque ouvrage si on veut les répertorier.
Source / Exemple :
# -*- coding: iso-8859-1 -*
from urllib2 import urlopen
def recherche(ISBN):
page = urlopen("http://france.isbn.pl/C-8/I-%s" % (ISBN))
code = "".join(page.readlines())
page.close() # Sélectionne la ligne <title>...</title> qui contient les données
infos = (str([elem for elem in code.split("\n") if '<title>' in elem])[9:-10]).split(" - ")
if infos[0][1]=="(": # Cf. site: s'il ne trouve pas, le titre de la page
return "Correspondance ISBN non trouvée" # commence par "(isbn ...)"
else:
auteur= infos[0]
if "isbn" in infos[1]: # Cf. site: Vérifie la présence d'un sous-titre.
titre0 = '' # Exemple avec isbn 2915549133
titre1 = infos[1][:-18]
else:
titre0 = str(infos[1]) + " - "
titre1 = infos[2][:-18]
return [auteur,titre0,titre1]
def correct(ISBN):
if len(ISBN)!=10: return 0
total = 0
k=0
try:
for i in ISBN: # Voir codage d'un ISBN
total += chiffre(ISBN[k],k) * (11 - range(1,11)[k]) # infos dans la FAQ de http://www.isbn.org/
k+=1
if total % 11 ==0: return 1
except:
return 0
def chiffre(i,k):
try:
if int(i) in range(0,10): return int(i)
except:
if (i == "X" or i== "x") and k == 9 : return 10 # Seul le dernier chiffre peut valoir 10
pass
def affichage(donnees):
if "str" in str(type(donnees)) : print donnees
if "list" in str(type(donnees)): print "Auteur : %s\nTitre de l'ouvrage : %s%s" % (donnees[0],donnees[1],donnees[2])
if __name__ == "__main__":
ISBN = raw_input("ISBN : ")
if correct(ISBN):
affichage(recherche(ISBN))
else:
ans = raw_input("Code ISBN incorrect, recherche internet inutile. Essayer quand même ? (O)")
if ans=="O" or ans == "o" : affichage(recherche(ISBN))
Conclusion :
Je n'ai pas encore eu l'occasion de voir le résultat si le livre est coécrit par plusieurs auteurs.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.