| 1 | #! /usr/bin/env python |
|---|
| 2 | #-*- coding: utf8 -*- |
|---|
| 3 | import ads |
|---|
| 4 | import numpy as np |
|---|
| 5 | import os |
|---|
| 6 | |
|---|
| 7 | ########################################## |
|---|
| 8 | # Aymeric SPIGA |
|---|
| 9 | # Laboratoire de Météorologie Dynamique |
|---|
| 10 | # 15-20/12/2013. teams 01/2014. |
|---|
| 11 | ########################################## |
|---|
| 12 | |
|---|
| 13 | #### SETTINGS |
|---|
| 14 | titpre = "<CENTER><H2><EM><font color='#B8860B;'>" # title prefix |
|---|
| 15 | titsuf = "</font></EM></H2></CENTER>" # title suffix |
|---|
| 16 | anneec = 2014 # last year to include |
|---|
| 17 | oneyear = None |
|---|
| 18 | oneyear = 2013 |
|---|
| 19 | usercond = None |
|---|
| 20 | usercond = ''' -c 'not journal:"Discussions"' ''' # fixes the EGU Discussions journals problem |
|---|
| 21 | usercond = usercond + ''' -c 'not journal:"Polymer Science"' ''' # strange inclusions |
|---|
| 22 | #### |
|---|
| 23 | |
|---|
| 24 | ### FOLDER |
|---|
| 25 | folder = "/home/marshttp/www-mars/publmdall" |
|---|
| 26 | if oneyear is not None: folder = folder + str(oneyear) |
|---|
| 27 | |
|---|
| 28 | ### CLEAN |
|---|
| 29 | os.system('rm -rf '+folder) |
|---|
| 30 | |
|---|
| 31 | ### GET TEAM LIST and SIZE |
|---|
| 32 | tnom,tprenom,tinitiales,tequipe,tanneedeb,tanneefin,taltnom = np.loadtxt("listpeople.txt",delimiter=";",dtype='string',unpack=True,skiprows=3,comments="#") |
|---|
| 33 | |
|---|
| 34 | ### LOOP on EACH TEAM (and add a combined list for all TEAMS) |
|---|
| 35 | ll = list(set(tequipe)) ; ll.append('all') ; ll = ll[::-1] |
|---|
| 36 | for eqeq in ll: |
|---|
| 37 | |
|---|
| 38 | ### GET ONLY MEMBERS OF THE TEAM |
|---|
| 39 | if eqeq != 'all': |
|---|
| 40 | w = np.where(tequipe==eqeq) |
|---|
| 41 | nom = tnom[w] ; prenom = tprenom[w] ; initiales = tinitiales[w] ; equipe = tequipe[w] |
|---|
| 42 | anneedeb = tanneedeb[w] ; anneefin = tanneefin[w] ; altnom = taltnom[w] |
|---|
| 43 | else: |
|---|
| 44 | nom = tnom ; prenom = tprenom ; initiales = tinitiales ; equipe = tequipe |
|---|
| 45 | anneedeb = tanneedeb ; anneefin = tanneefin ; altnom = taltnom |
|---|
| 46 | ntot = nom.size |
|---|
| 47 | |
|---|
| 48 | ### PREPARE ADS LINK |
|---|
| 49 | # 1. generic parts |
|---|
| 50 | adslink1="http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?db_key=AST&db_key=PHY&db_key=PRE&qform=PHY&arxiv_sel=astro-ph&arxiv_sel=cond-mat&arxiv_sel=cs&arxiv_sel=gr-qc&arxiv_sel=hep-ex&arxiv_sel=hep-lat&arxiv_sel=hep-ph&arxiv_sel=hep-th&arxiv_sel=math&arxiv_sel=math-ph&arxiv_sel=nlin&arxiv_sel=nucl-ex&arxiv_sel=nucl-th&arxiv_sel=physics&arxiv_sel=quant-ph&arxiv_sel=q-bio&aut_xct=YES&aut_logic=OR&author=" |
|---|
| 51 | adslink2="+&ned_query=YES&sim_query=YES&start_mon=&start_year=&end_mon=&end_year=&ttl_logic=OR&title=&txt_logic=OR&text=&nr_to_return=1999&start_nr=1&jou_pick=NO&ref_stems=" |
|---|
| 52 | if oneyear is not None: |
|---|
| 53 | adslink2="+&ned_query=YES&sim_query=YES&start_mon=&start_year="+str(oneyear)+"&end_mon=&end_year="+str(oneyear)+"&ttl_logic=OR&title=&txt_logic=OR&text=&nr_to_return=1999&start_nr=1&jou_pick=NO&ref_stems=" |
|---|
| 54 | adslink3="&data_and=ALL&group_and=ALL&start_entry_day=&start_entry_mon=&start_entry_year=&end_entry_day=&end_entry_mon=&end_entry_year=&min_score=&sort=SCORE&data_type=BIBTEXPLUS&aut_syn=YES&ttl_syn=YES&txt_syn=YES&aut_wt=1.0&ttl_wt=0.3&txt_wt=3.0&aut_wgt=YES&obj_wgt=YES&ttl_wgt=YES&txt_wgt=YES&ttl_sco=YES&txt_sco=YES&version=1" |
|---|
| 55 | # 2. author list |
|---|
| 56 | st=adslink1 ; st2 = "" |
|---|
| 57 | tf = open("ads.testauthor", 'w') # this is just for testing ADS outside the script |
|---|
| 58 | for iii in range(ntot): |
|---|
| 59 | st = st + nom[iii].split()[0].replace('é',"%C3%A9")\ |
|---|
| 60 | +"++%2C++"\ |
|---|
| 61 | + prenom[iii].split()[0].replace('é',"%C3%A9")\ |
|---|
| 62 | +"++%3B++"\ |
|---|
| 63 | + nom[iii].split()[0].replace('é',"%C3%A9")\ |
|---|
| 64 | +"++%2C++"\ |
|---|
| 65 | + initiales[iii].split()[0].replace('é',"%C3%A9")\ |
|---|
| 66 | +"++%3B++" |
|---|
| 67 | st2 = st2 + nom[iii] + " , " + prenom[iii] + " ; " + nom[iii] + " , " + initiales[iii] + " ; " |
|---|
| 68 | if altnom[iii].split()[0] != "-": |
|---|
| 69 | st = st + altnom[iii].split()[0].replace('é',"%C3%A9")\ |
|---|
| 70 | +"++%2C++"\ |
|---|
| 71 | + prenom[iii].split()[0].replace('é',"%C3%A9")\ |
|---|
| 72 | +"++%3B++"\ |
|---|
| 73 | + altnom[iii].split()[0].replace('é',"%C3%A9")\ |
|---|
| 74 | +"++%2C++"\ |
|---|
| 75 | + initiales[iii].split()[0].replace('é',"%C3%A9")\ |
|---|
| 76 | +"++%3B++" |
|---|
| 77 | st2 = st2 + altnom[iii] + " , " + prenom[iii] + " ; " + altnom[iii] + " , " + initiales[iii] + " ; " |
|---|
| 78 | st=st+adslink2 |
|---|
| 79 | tf.write(st2) |
|---|
| 80 | tf.close() |
|---|
| 81 | # 3. journal list |
|---|
| 82 | jn = "" |
|---|
| 83 | f = open("listjournals.txt", 'r') |
|---|
| 84 | for line in f: |
|---|
| 85 | jj = line.strip().replace("&","%26") |
|---|
| 86 | jn = jn + jj + "+" |
|---|
| 87 | st=st+jn+adslink3 |
|---|
| 88 | # 4. write final result |
|---|
| 89 | dalink = folder+eqeq.strip()+".link" |
|---|
| 90 | os.system('rm -rf '+dalink) |
|---|
| 91 | daf = open(dalink, 'w') |
|---|
| 92 | daf.write(st) |
|---|
| 93 | daf.close() |
|---|
| 94 | |
|---|
| 95 | ### RETRIEVE COMPLETE BIBTEX FILE (NB: does not seem to work without month) |
|---|
| 96 | ads.makepage('lmd_dummy',retrieve=True,linkads=dalink,customcond=usercond,verbose=False,includemonth=True) |
|---|
| 97 | |
|---|
| 98 | ### LOOP ON NAMES |
|---|
| 99 | miny = 9999 ; maxy = -9999 ; lk = "<br>Author:" |
|---|
| 100 | for iii in range(ntot): |
|---|
| 101 | # 1. get and prepare various components |
|---|
| 102 | danom = nom[iii].strip() ; daprenom = prenom[iii].strip() |
|---|
| 103 | dayears = int(anneedeb[iii]) ; dayeare = int(anneefin[iii]) |
|---|
| 104 | daini = initiales[iii].split()[0] |
|---|
| 105 | if usercond is None: cc = ''' -c ' ''' |
|---|
| 106 | else: cc = usercond + ''' -c ' ''' |
|---|
| 107 | cc = cc + ''' author:"'''+danom+'''" ''' |
|---|
| 108 | if altnom[iii].split()[0] != "-": |
|---|
| 109 | danomalt = altnom[iii].split()[0] |
|---|
| 110 | cc = cc + ''' or author:"'''+danomalt+'''" ''' |
|---|
| 111 | cc = cc+''' ' ''' |
|---|
| 112 | # -- if year start 0000 and year end 0000 do not do anything |
|---|
| 113 | if dayears + dayeare != 0: |
|---|
| 114 | if dayears == 0: dayears = anneec |
|---|
| 115 | if dayeare == 0: dayeare = anneec |
|---|
| 116 | # 2. info |
|---|
| 117 | print danom+"-"+daprenom+"-"+str(dayears)+"-"+str(dayeare) |
|---|
| 118 | # 3. make page |
|---|
| 119 | if oneyear is None: ly = range(dayeare,dayears-1,-1) |
|---|
| 120 | else: ly = [oneyear] |
|---|
| 121 | ads.makepage('lmd_'+danom.replace(" ", ""),\ |
|---|
| 122 | retrieve = False,\ |
|---|
| 123 | customcond = cc,\ |
|---|
| 124 | listyear = ly,\ |
|---|
| 125 | linkads = dalink,\ |
|---|
| 126 | title = titpre+daprenom+" "+danom+titsuf,\ |
|---|
| 127 | printnum = True,\ |
|---|
| 128 | verbose = False,\ |
|---|
| 129 | includemonth=True,\ |
|---|
| 130 | target = folder) |
|---|
| 131 | # 4. get intervals of years for the whole lab |
|---|
| 132 | if oneyear is None: |
|---|
| 133 | if dayears < miny: miny = dayears |
|---|
| 134 | if dayeare > maxy: maxy = dayeare |
|---|
| 135 | # 5. get authors link list |
|---|
| 136 | lk = lk + ''' <a href="lmd_'''+danom.replace(" ", "")+'''.html">'''+daini+" "+danom.replace('é',"é")+"</a> /" |
|---|
| 137 | |
|---|
| 138 | ### MAKE FINAL PAGE |
|---|
| 139 | if oneyear is None: ly = range(maxy,miny-1,-1) |
|---|
| 140 | else: ly = [oneyear] |
|---|
| 141 | ads.makepage('lmd_'+eqeq.strip(),\ |
|---|
| 142 | retrieve = False,\ |
|---|
| 143 | listyear = ly,\ |
|---|
| 144 | linkads = dalink,\ |
|---|
| 145 | title = "<CENTER><H2><EM><font color='#B8860B;'>Peer-reviewed publications for team "+eqeq.strip()+"</font></EM></H2></CENTER>",\ |
|---|
| 146 | addlink = lk,\ |
|---|
| 147 | customcond = usercond,\ |
|---|
| 148 | printnum = True,\ |
|---|
| 149 | includemonth=True,\ |
|---|
| 150 | target = folder) |
|---|
| 151 | |
|---|
| 152 | ### CLEAN |
|---|
| 153 | os.system('rm -rf *dummy*') |
|---|
| 154 | os.system('rm -rf '+folder+'*.link*') |
|---|
| 155 | |
|---|