#!/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()
