#!/usr/bin/python #Ce petit script a été écrit par Jérôme KIEFFER afin de permettre de #l'ajout automatique d'une entrée dans un fichier bibtex à partir #de l'abstract sauvé sous forme "tagged text" dans scifinder. #Orthographe (pour les scripts ...): # $ addentry bibliothek.bib abstract.txt #le nom de l'article à citer sera le nom du fichier .txt #pour plus d'information : Email kieffer@crans.org # interet de la version : # for i in *.txt ; addentry bibliotek $i ; done import sys,string,dircache if __name__!="__main__":sys.exit(0) if len(sys.argv)<3: print "Vos fichiers :" for i in dircache.listdir('.'): print i bib=raw_input("Entrer le nom de la bibliotheque .bib : ") publi=raw_input("Entrer le nom de la publi .txt : ") else: bib=sys.argv[1] publi=sys.argv[2] if string.find(bib,".bib")!=-1 : bib=bib[:-4] if string.find(publi,".txt")!=-1 : publi=publi[:-4] #if bib[-3:0]==".bib": bib=bib[:-4] #if publi[-3:0]==".txt": publi=publi[:-4] fichpubli=open(publi+".txt","r") fichbib=open(bib+".bib","a") for ligne in fichpubli.readlines(): if string.find(ligne,"FIELD")==0: champs=string.split(ligne,":",1) # print champs[0] champs[1]=champs[1]=champs[1][:-2] if champs[0]=="FIELD Title":titre=champs[1] if champs[0]=="FIELD Abstract":note=champs[1] if champs[0]=="FIELD Author":auteur=champs[1] if champs[0]=="FIELD Journal Title":journal=champs[1] if champs[0]=="FIELD Volume":volume=champs[1] if champs[0]=="FIELD Issue":numero=champs[1] if champs[0]=="FIELD Page":page=champs[1] if champs[0]=="FIELD Publication Year":annee=champs[1] author="" auteurs=string.split(auteur,";") for personne in auteurs: part=string.split(personne,",") author=author+" and "+part[1]+" "+part[0] auteur=author[4:] print publi print auteur print titre print journal print annee print volume print numero print page print note fichbib.write("\n@article{"+publi+",\n") if len(auteur)==0: fichbib.write(" OPTauthor = {},\n") else: fichbib.write(" author = {"+auteur+"},\n") if len(titre)==0: fichbib.write(" OPTtitle = {},\n") else: fichbib.write(" title = {"+titre+"},\n") if len(journal)==0: fichbib.write(" OPTjournal = {},\n") else: fichbib.write(" journal = {"+journal+"},\n") if len(annee)==0: fichbib.write(" OPTyear = {},\n") else: fichbib.write(" year = {"+annee+"},\n") if len(volume)==0: fichbib.write(" OPTvolume = {},\n") else: fichbib.write(" volume = {"+volume+"},\n") if len(numero)==0: fichbib.write(" OPTnumber = {},\n") else: fichbib.write(" number = {"+numero+"},\n") if len(page)==0: fichbib.write(" OPTpages = {},\n") else: fichbib.write(" pages = {"+page+"},\n") if len(auteur)==0: fichbib.write(" OPTnote = {},\n") else: fichbib.write(" note = {"+note+"}\n") fichbib.write("}\n") fichbib.close()