
    /gi                        d dl Zd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZmZ d dlZdej        d<   d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ d Zd Zd Z d Z!d Z"	 	 d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d3dZ,d Z-d3dZ.d Z/d Z0d3dZ1d3d Z2d! Z3d" Z4d4d$Z5d% Z6d& Z7d5d(Z8d) Z9d* Z:d6d,Z;d- Z<d. Z=d/ Z>d0 Z?d4d1Z@d2 ZAdS )7    N)Markdowndisplayz$/home/nano/.pybliometrics/config.iniPYB_CONFIG_FILE)AbstractRetrieval)	FreeProxy)Works)SequenceMatcher)get_templaterender_to_string)Context)HttpResponsec                    ddl m}m} dd l}ddlm} | D ]\}|j                            |j                  }|	                    g dd          }|
                                 d|_        d	|_        d
|_        d|_        d|_        d|_        d|_        d|_        d|_        d|_        d|_         |d          }ddg}	 |            }
|	D ]"}|
                    |j        |                    #t1          dd          5 }|
                    |           |                                 d d d            n# 1 swxY w Y   d|_        |                                 t;          j        dd           ^d S )Nr   )	PdfReader	PdfWriterCVid)pdflatexzcv.texz-interaction=nonstopmodez"/var/www/nanotud/uploads/cv_files/)cwd4uploads/cv_files/auto_include/papers_auto_django.texzuploads/cv_files/cv.logzuploads/cv_files/cv.pdfzuploads/cv_files/cv.texz.uploads/cv_files/auto_include/conferences_autoz*uploads/cv_files/auto_include/patents_auto1uploads/cv_files/auto_include/papers_auto_sel.texz'uploads/cv_files/auto_include/phds_autoz(uploads/cv_files/auto_include/talks_autoz'uploads/cv_files/auto_include/rest_autoz(/var/www/nanotud/uploads/cv_files/cv.pdf   z./var/www/nanotud/uploads/cv_files/cv_short.pdfwbzuploads/cv_files/cv_short.pdfz/data/uploads/cv_files/cv.pdfz$/data/uploads/cv_files/cv_backup.pdf)PyPDF2r   r   
subprocessinternal.modelsr   objectsgetr   Popenwaitpub_includelog_filepdf_filetex_filepublication_includeconferences_includepatents_includepapers_selected_includephds_includetalks_includerest_includeadd_pagepagesopenwriteclose	pdf_shortsaveshutilcopy2)querysetr   r   r   r   qsentryppdfr.   	pdfWriterpage_numfs                #/var/www/nanotud/modules_webpage.pypdflatex_cvr?      s   ++++++++"""""" ] ]
BE**OOOUyzz	P000"X!"R!J&Y%DFD iBCCeIKK	 	4 	4Hsy23333BDII 	QOOAGGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 8

45[\\\\?] ]s    *D66D:	=D:	c                 \   ddl m} ddlm} d|j                            d          i}t          d|d	          }t          d
d          5 }|                    |           d d d            n# 1 swxY w Y   d|j                            d          i}t          d|d	          }t          dd          5 }|                    |           d d d            n# 1 swxY w Y   | D ]D}|j        	                    |j
                  }d|_        d|_        |                                 Ed S )Nr   Publicationr   publication_list	Cunibertiauthor_list__icontainszpublication_export.textex)usingzE/var/www/nanotud/uploads/cv_files/auto_include/papers_auto_django.texwT)
cvselectedzpublication_export_selected.texzB/var/www/nanotud/uploads/cv_files/auto_include/papers_auto_sel.texr   r   r   )research.modelsrB   r   r   r   filterr   r/   r0   r   r   r&   r)   r3   )r6   rB   r   contextcontentstatic_filer7   r8   s           r>   create_publication_includerP   A   s   ++++++""""""!K$7$>$>Va$>$b$bcG7NNNG	VWZ	[	[ #_j'"""# # # # # # # # # # # # # # # "K$7$>$>$$>$O$OPG@'QVWWWG	STW	X	X #\g'"""# # # # # # # # # # # # # # #   
BE**"X!&Y%

	 s$   A..A25A28CC!Cc                 v    ddl m} |j                                        }|D ]}|                                 d S )Nr   Member)r   rS   r   rL   r3   )r6   rS   membersmembers       r>   
set_slug_2rV   Y   sJ    &&&&&&n##%%G  
F    c                 v    ddl m} |j                                        }|D ]}|                                 d S Nr   rA   rK   rB   r   rL   r3   )r6   rB   pubspubs       r>   
set_slug_3r]   `   K    ++++++%%''D  




FrW   c                 v    ddl m} |j                                        }|D ]}|                                 d S )Nr   )Event)external.modelsr`   r   rL   r3   )r6   r`   evsns       r>   
set_slug_4rd   g   sJ    %%%%%%
-


 
 C  	
FrW   c                 v    ddl m} |j                                        }|D ]}|                                 d S rY   rZ   )r6   rB   r[   sems       r>   set_slugrg   ~   r^   rW   c           	         t          |           dk    r#| D ]}t          d|j         d|j         d           t                              |j                  }t                              t          |                    }t          j	                    }|d         D ] }|
                    |d         dd	          }!|d         |d
<   ||d                                                   }|d                             d          |d<   |j        d k    r|}n$||d         t          |j                  k             }t          t          |           d           t          |          dk    r>|j                            |j                  }d|_        |                                  d S ddlm} t+          |j        |j                  D ]k\  }	}
t          j        |	          rd }	nt3          |	          }	 ||
|	|j                            d          d                   }|                                 ld S t          d           d S )Nr   zFind publications for z from z in Google ScholarpublicationsbibTFignore_indexsort
google_pubtitlestrpub_yearz publications foundr   r   z&No publication found in Google Scholar)Add_Publication,)ro   yearauthorzPlease select only one entry)lenprintru   rt   	scholarlysearch_authorfillnextpd	DataFrameappendisnullastyperp   r   r   r   commentr3   rK   rr   ziprq   ro   isnaintsplit)r6   r7   search_queryru   
pub_googler\   rq   rr   r8   rt   ro   new_pubs               r>   add_dois_scholar_infor      sO   
8}} %	 %	BW29WWBGWWWXXX$2229==L^^D$6$677FJn- Z Z'..s5zSX.YY

'-n'=J|$#Z%8%?%?%A%A$ABJ",W"5"<"<U"C"CJww$%%j&<BG&LNc(mm8889998}}!!'/333??F

 877777"8#4hnEE  e74== #DDTD */DY\I]I]^_I`aaa1%	 %	T 	-.....rW   c                    | d k    rd S d}| d         dk    s0d| dd         v s$d| d d         v sd| dd         v sd	| d d
         v r|                      d          dk    r'|| |                      d          dz   d          z   dz   }n|                      d          dk    r$|| |                      d          dz   d          z   }nV|| |                      d          dz   d          z   }n2d| dd          v r!|| d |                      d                   z   }n|| z   }|                    dd           |                    dd           |                    dd           |S )N r      ©	Copyright      c○   	COPYRIGHTThis journal is   Weinheim   
Switzerland   .r   z</jats:sub>z
<jats:sub>z!<jats:title>Abstract</jats:title>)findreplace)txtstrings     r>   clean_abstractr      s   
d{{tF
1v~~AbD	11Vs2A2w5F5F+Y\]^_a]aYbJbJbfw{~  @C  AC  @C  |D  gD  gD88J"$$c#((:"6"6q"8"9"9::D@FFXXm$$r))c#((="9"9""<"="=>>FFc#((3--/"2"233FF3tuu:c/388D>>/22FFc\F
NN=$$$
NN<###
NN6r:::MrW   c                 P    d}| D ] }t          |          dk    r|dz  }||z  }!|S )Nr   i   -)ord)inp_strnewc0s      r>   check_unicode_charr      s@    
C  r77D==HCC2ICCJrW   c                    ddl m}m} ddlm} | D ]}d}|j                            |j                  }t          |j	                  
                    d          }|d k    s|dk    s|dk    r|j        d k    r|t          d           t          |j        |j                  }|d k    st          j        |          rd	|_        |                                 d
}n||_	        |                                 |j                            |                                          }d\  }	}
}}}}}}}}}|dk    r|dk    r	 t+                      }|	                    |          }n#  t          |d           d }Y nxY w	 t-          |d
          }n#  t          |d           d }Y nxY w|d k    r#|d k    rd|_        |                                 ntt/          t1          ||                    }|d k    rt3          j        |j                  }	t7          |	          }	t3          j        t9          ||                    }
|j        }|j        d k    r|j        }t7          |          }|j        d k    r|j        }t7          |          }	 |j         !                    d          d         
                                }n#  	 |j"        }n	#  d }Y nxY wY nxY w	 |j#        }|dd         }n#  d }d }Y nxY w	 |j$        }n	#  d }Y nxY w|d k    rp|
d k    rtK          ||          }
|	d k    r|d         d         }	|d k    r	 t          |d                   }n#  Y nxY w|d k    r|d         }|d k    ro	 tM          |          }|!                    d          d          d|!                    d          d          d|!                    d          d          }n	#  d }Y nxY w|d k    r	 |d         }n#  Y nxY w|d k    r	 |d         }n#  Y nxY w|d k    r	 |d         d         }n#  Y nxY w|d k    r	 |d         d         }n#  Y nxY w|d k    r0	 tO          |d         d         d         d                   }n#  Y nxY w|d k    r
|}|d k    rd } ||d||	|
||||||||d
!          }|                                 |d k    rd"|_        n|d k    rd#|_        nd$|_        d
|_(        |                                 nM|d
k    rd%|_        d|_(        n8t          d&           d'|_        d
|_)        d|_(        |                                 |j        *                                }|D ]f}|j                            d(                              |j+        d         d)z   |j,        z   *          }|D ]}|j-        .                    |           gd S )+Nr   )rB   rr   rR   Fr   r   NoneherezerozNo DOI found for titleT)doi__iexact)NNNNNNNNNNNz not found in Crossref.)refreshz8 not found in Scopus. API key and permission correct?(2)zODOI neither found in Scopus nor in Crossref. Please do check if DOI is correct.r      itemro   volumetyper   r   r   pageissueshort-container-titlezcontainer-titlecreated
date-partsXXXX)doiapprovedrt   ro   author_listpub_dater   open_accessabstractr   journal_shortjournalpub_type	chair_pubzInformation taken from Scopus.z Information taken from Crossref.z+Information taken from Scopus and Crossref.zNo DOI found.zpublication already therezpDOI already in publication list. If you want to add it again, please delete the corresponding publication first.)r   . rE   )/rK   rB   rr   r   rS   r   r   r   rp   r   stripro   rw   find_doi_for_titleru   r|   r   r   r3   rL   countr   r   r   get_abstracthtmlunescaper   format_authors_scopusr   sourcetitle_abbreviationpublicationName	pageRanger   startingPage	coverDateopenaccessFlagformat_authors_crossrefpub_date_crossr   addeddoi_in_pubsall
given_name	last_namepublicationadd)r6   rB   rr   rS   r7   kakar8   r   numro   authorsr   r   rt   r   r   typeenumberr   r   worksitem_CRitem_scopusr   r\   iddir[   pis                                r>   add_publication_infor      s   <<<<<<<<&&&&&&  Q& Q&'+++77"&kk##$;;#))sV||x4z"""(29==$;;"'#,,;":EMJJLLLDD #EIJJLLL !((s(;;AACC klgw$T%Q^`g!88e))C..s6777#/tDDD#cVWWW"$;$#6#6o

),w*L*LMM$&& M+*;<<E.u55E"m,A#{,S,STTG(/F";tCC(3(L(:=(I(I"2d::"-"="4W"="=(*4::3??BHHJJ((#.#;DD(#'DDD$#.#8'!}$#'#+&1&@+&*d??$"9#g"O"O"O}} ' 0 3~~!%():%;%;FF! D}} '4'','5g'>'>H*2..*=*=a*@'u'u8>>RUCVCVWYCZ'u'u]e]k]klo]p]pqr]s'u'uHH,'+HHHt||!#*6?DD! D~~!%,W%5FF! D$,,!,34K,LQ,OMM! D$!&-.?&@&CGG! Dt||!#&wy'9,'G'J1'M#N#NDD! D !D(($+M$,,(.!kceDPUcj-5fR]-5DP]gny~.25 5 5
 


d??"BEMM D(("DEMM"OEM"

4ZZ)EMEKK ./// MEM#EEKJJLLLn  "" 	& 	&A&--%-@@GGabamnoapquauvw  wB  bBG  D  DD & &!!"%%%%&	& Fs    #E$$E:>FF&
2J==K KKKKK))K15K==L?MM1A$OO&O//O3=PP
P##P'1Q  Q'Q66Q:c                    t          | d          5 }|                                }ddd           n# 1 swxY w Y   |                    d          dd         }|D ]}|                    d          }i }|D ]}|                    dd          }	 |d	         d
k    rq|dk    rjd
|dd         vr]d|dd         v r2|                    d          d	                                         |d<   nd|v r3|                    dd          d	                                         |d<   nd|v r3|                    dd          d	                                         |d<   n|                    dd          }t          |          dk    r|                    dd          }t          |          dk    r(t          j        ||d                                         <   n5|d	                                         ||d                                         <   #  Y xY w|i k    r9	 |	                    |d          }	#  t          j
        |dg          }	Y xY w|	                    t          j                  }	|	S )u*  
    Reads publication from database given by the format of the webpage.
    
    Parameters
    ----------
    file_name : name of the database file
        Structure: Two columns (1 = property, 2 = value )
                   Entries are separated by 'enditem
##################################'
            Example:
                '##########################################################################
                AG GC
                cvselected    no
                firstlast yes
                #filename
                cover ../pubs/reprints/covers/2020_Krok.jpg
                year 2020
                title        Modification of titanium implants using biofunctional nanodiamonds for enhanced antimicrobial properties
                authors Emilia Krok, Sascha Balakin, Jonas Jung, Frank Gross, J&ouml;rg Opitz, <b>G. Cuniberti</b>
                pubdate 2020.03.02
                type        regular
                reference    <i>Nanotechnology</i> <b>31</b>, 205603 (2020)
                DOI        10.1088/1361-6528/ab6d9b/
                abstract    The present study describes a novel antimicrobial surface using anodic oxidation of titanium and biofunctional
                detonation nanodiamonds (ND). ND have been loaded with antibiotics (amoxicillin or ampicillin) using poly
                (diallyldimethylammonium chloride)(PDDA). Successful conjugation with PDDA was determined by dynamic light scattering, …
                enditem
                ###########################################################################
                ...'

    Returns
    -------
    DataFrame
        Containing all publication entries from 'file_name'. Each row contains one publication and
        columns its values. If one property is not set in file_name, its value is set to 'np.NaN'.
    rNenditemr   r       	r   #r   r   r   r      journalfullname maxsplitarxivpasswdTrl   index)r/   readr   r   r   rv   npNaNr~   r|   r}   fillna)
	file_namefilerN   all_publicationsarticle
attributesdictioattr   dfs
             r>   read_publicationsr  t  s   H 
i		 ))++              }}Y//"5#  5  5]]4((
 	 	C++fd++C
 GsNNC!H9L9L"c!B$i//.1ii
.C.CB.G.M.M.O.Oz***c1147IIcAI4N4Nr4R4X4X4Z4Z011&#--03		#	0J0J20N0T0T0V0V}-- #		$	 ; ;u::??$'IIcAI$>$>Eu::??79vF58>>#3#3447<Ry7H7HF58>>#3#34R<<5YYvDY995\&444	 
 
26		BIs%   266E>HH!H::Ic                    |                      d          }i }|D ]'}|                    dd          }	 |d         dk    r|dk    rd|dd         vr|                     dd	
          }t          |          d	k    r|                     dd	
          }t          |          d	k    r(t          j        ||d                                         <   nk|d                                         ||d                                         <   n5|d                                         ||d                                         <   !#  Y &xY w|S )Nr   r   r   r   r   r   r      r   r   r   )r   r   rv   r   r   r   )r8   r   r   r   r   s        r>   entry_to_dictr    s.   T""JF  kk&$''	B3SBYYSAaC5H5H		$	33u::??IIcAI66E5zzQ356uQx~~//00389??3D3DuQx~~//00/4Ry/@/@F58>>++,	DMs   DD;;E c                 @   t          | d          5 }|                                }d d d            n# 1 swxY w Y   |                    d          }|D ]N}t          |          }|i k    r7	 |                    |d          }0#  t          j        |dg          }Y KxY wO|                    t          j	                  }||d         
                                |d         
                                z           j        j        }|                    |d	           |S )
Nr   r   Tr   r   r   vornamenachname)inplace)r/   r   r   r  r~   r|   r}   r   r   r   r   r   valuesdrop)r   r   rN   all_entriesr8   r   r   inds           r>   read_addressesr    sP   	i		 "iikkG" " " " " " " " " " " " " " "--	**K 5 5u%%R<<5YYvDY995\&444	 
 
26		B
R	]!!BzN$7$7$9$99
:
@
GCGGCGIs   266,BBc           	      X   d}t          | d          5 }|                    |                    dd          d                    |                                D ]\  }}||                                          }|                                D ]o\  }}t          |          dk    r,|                    |dz   t          |          z   dz              D|                    |dz   t          |          z   dz              p|                    |           	 d d d            n# 1 swxY w Y   d S )	N:enditem
#################################################
rI   r   r   r      r   		)r/   r0   r   iterrowsr   itemsrv   rp   )	r   r   	seperatorr   r   rowto_writeindex_wvalues	            r>   write_addressesr    sa   NI	i		 
"

9??4?33A6777++-- 	" 	"JE3CHHJJ;'H"*.."2"2 F Fw<<??JJw~E

:TACCCCJJw/#e**<tCEEEEJJy!!!!	"
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" Fs   C?DD#&D#c                 j    d                     ||           }t          t          |                     d S )Nz<span style=color:{}>{}</span>)formatr   r   )r   colorcolorstrs      r>   printmdr    s5     066ufEEHHXrW   c                    d}d}d}g }| j         D ]t}| j        |         j        }t          j        |          s"t          |                              d          }t          j        |          s|dk    rwt          | j        |         j                  }|| j        |df<   t          j        |          s8t          dt          |          z   dz   | j        |         j                   |dz  }t          j        |          r|
                    t          j                   | j        |         j        dk    rL| j        |         j        d	k    r6t          d
| j        |         j         d| j        |         j         d           st          |          }|d k    r|
                    |           |dz  }t          | j        |         j                  }t          j        |          s||k    r!|
                    t          j                   t          d| d|            |dz  }|| j        |df<   t          |          }|d k    r|
                    |           |dz  }U|
                    t          j                   vt          dt          |           dt          |           dd           t          d                    |                     || d<   | S )Nr   r   r   DOIzFound the DOI(z) for:r   patentthesiszNo authorlist found for  ()zFound the correct DOI:z for the old one:z**z new DOIs has been found and z& incorrect DOIs have been corrected**.redr  z4We also have created {} formated author list entriesauthors_new)r   locr   r|   r   rp   r   r   ro   rw   r~   r   r   r   get_authors_doir  r  )	r   
N_new_doisN_corrected_doisN_authorlistr'  r  r   author_new_dois	            r>   correct_authors_and_doir/    s   JLKx  3  3fSkows|| 	&c((..%%C73<< 	 3"99$RVC[%677C #BF3u973<<  &S1H<bfSk>OPPPa
73<< 	3rv&&&vc{8++s0@H0L0LY1BYYbfSkFVYYYZZZ%c**G$""7+++!,RVC[->??77## 3w#~~&&rv....R7RRSRRSSS$)$(/BF3u9%-g66G$#**7333$)#**262222|Z||sCS?T?T|||  EJ  K  K  K  K	
@
G
G
U
UVVV#B}IrW   c                     	 t          d|  dd          }t          |j                  dk    r|j        d         j        }|S n#  Y nxY wt	          | |d          }|dk    r|d	         S t
          j        S )
z.Looks for the DOI in Scopus and Crossref.
    ztitle(r$  T)verboser   r   N)author_searchr   r   )ScopusSearchrv   resultsr   find_crossref_for_titler   r   )ro   author_presetdocument_search
doi_scopusr   s        r>   r   r   )  s    
&'8'8'8'8$GGG&''1,,(037J - #5tTTTDt||E{vs   A A Ac                    d}t                      }|d k    r5|d k    r|                    |           }nN|                    | |          }n6|d k    r|                    | |          }n|                    | ||          }|D ]F}	 t          d |d         d         |                                           }n	#  d}Y nxY w|dk    r|c S Gd S )	Ng        )bibliographic)r:  ru   )r:  container_title)r:  ru   r;  ro   r   g?)r   queryr	   ratio)ro   r2  r   simr   w1r   sim_news           r>   r5  r5  ?  s    
 CGGE$D  511BB5GGBBD  5'JJBB5X_``B  	%dDM!,<eDDJJLLGG	GGGS==KKK 4s   /B77B=c                 b    	 t          |           S #  	 t          |           cY S #  Y Y d S xY wxY wN)r   r   )r   s    r>   r)  r)  \  sI    $S)))	*3/////	444s    .%.+..c                    |dk    r#t                      }|                    |           }d}d |d         D             }t          |          D ]\  }}|t          |d                   dz
  k    r|dz  }|d                                         dk    r|dz  }|d	                                         D ]}|d
         dk    r|d
         dk    rt          |                    d                    dk    rF|                    d          D ]"}||d
                                         dz   z  }#|dd         dz   }||d
                                         dz   z  }|d|d                                         z   dz   z  }|d                                         dk    r|dz   }T|d                                         r"||d                                         dz   z  }||d         dz   z  }|dd         }|S )z
    For a given DOI the authors will be searched in Crossref and will be
    formated in the following way:
    'E. Krok, S. Balakin, J. Jung, F. Gross, J. Opitz, and <b>G. Cuniberti</b>''
    Nr   c                     g | ]}d |v |	S )family ).0xs     r>   
<listcomp>z+format_authors_crossref.<locals>.<listcomp>r  s    >>>A1rW   ru   r   and rE  rD   givenr   r      –.-r   r   r   Cuniberti, , r   )r   r   	enumeraterv   
capitalizer   upperisupper)	r   r   r   r   r   r   personfirstsps	            r>   r   r   h  s    t||yy~~F>>d8n>>>K{++ 2 2	6T(^$$q())fF(&&((K77bLFG_**,, 		7 		7EQx#~~%(U"2"2u{{3''((1,,#kk#.. 7 7"Q%++--$"66#CRC[C/FFeAhnn..55FF#uQx~~///$66(&&((K77m+FFh'')) 2&*5577$>>&*T11#2#;FMrW   c                 T   |dk    rt          |           }d}t          |j                  D ]\  }}|t          |j                  dz
  k    r|dz  }|j                                        dk    r|dz  }|j        dk    r|j        dk    r|j                                        D ]}|d         dk    r|d         d	k    rt          |                    d                    dk    rS|                    d          D ]/}|t          |d         	                                          d
z   z  }0|dd         dz   }|t          |d         	                                          dz   z  }|dt          |d         	                                          z   dz   z  }|j                                        dk    r|dz   }|j        
                                r.|t          |j                                                  dz   z  }|t          |j                  dz   z  }|dd         }|S )z
    For a given DOI the authors will be searched in Scopus and formated in the following way:
    'E. Krok, S. Balakin, J. Jung, F. Gross, J. Opitz, and <b>G. Cuniberti</b>''
    Nr   r   rJ  rD   r   r   r   rL  rM  r   r   r   rN  rO  r   )r   rP  r   rv   surnamerQ  r   r   html_codingrR  rS  )r   r   r   r   rT  rU  rV  s          r>   r   r     s/   
 $#C((Fw// = =	6W_%%)**fF>$$&&+55rMF$$):f)D)D*0022 	I 	I8s??uQx5'8'85;;s++,,q00"'++c"2"2 H HB"k"Q%++--&@&@4&GGFF!'!3+eAhnn.>.>"?"?$"FFcKa0@0@$A$AADHHFF>$$&&+55m+FF~%%'' =+fn&?&?&A&ABBTII+fn55<<#2#;FMrW   c                 R    t          j        t          j        |                     } | S )z&Converts string to HTML entities.
    )nenamed_entitiesr   escape)r   s    r>   rY  rY    s#     t{62233FMrW   c                    d}i ddddddddddd	dd
dddddddddddddddddddddi ddddddddddddddddddddd dd!dd"dd#dd$dd%dd&di d'dd(dd)dd*dd+dd,dd-dd.dd/dd0dd1dd2dd3dd4dd5dd6dd7di d8dd9dd:dd;dd<dd=dd>dd?dd@ddAddBddCddDddEddFddGddHddddddddddddI
}t          |dJ          5 }| j        D ]W}|                                D ])\  }}|| j        v rt	          j        | j        |         |                   sM| j        |         |         dKk    s6t          | j        |         |                                                   dLk    r|dk    rbt	          j        | j        |         dM                   s=|	                    ||z   t          | j        |         dM                   z   dNz              |	                    ||z   t          | j        |         |                   z   dNz              )+|	                    |           Y	 dOdOdO           n# 1 swxY w Y   t          dP|           dOS )Qz
    Writes the Dataframe df in the structure needed by the webpage to be imported.
    The database is saved in the file 'filename'.
    r  AGr  rJ   r   r   	firstlastcoverrt   ro   r   pubdate	referencer   r   filenamenonmieiECEMPCover	publisher
submisdateISBNbbllxbbllybburxbburyfieldhyperrefr   r   
journalrefarxiv	arxivmeshendpagerefreport_no	report_no	startpager   journalacronymWCUISSNr   r   IF
acceptdate
revisedate
webpubdateESFZIHpudate	booktitleeditorsorder_itpubtownreference_morepISSNaddress	WCUTOPTEN
stampamelovjntref
openaccessAG2journalcover	arxivdate	commentcvaddmaterial
receivdateIFyearPRaccessioncodePRstatusURLIFrefplace)
misurelibrarycongressseriescoverdetailsreferenceshortIEEEcnINSPECaneconophysicsother_order_itsenzaISBNlinkrI   r   r   r'  r   NzDatabase written to file )r/   r   r  columnsr|   r   r(  rp   r   r0   rw   )r   rd  r  sepr   r  keyspacings           r>   write_corrected_dbr    sU   
 OI84 8d 8VF 8t8$V8-3F8<CF8V8&v8/:48AFv8 d8 't8 .7v8 @Gv8 6	8 't	8 8 .:$	8 AGv	8
 68
 #68
 ,368
 <C68 68 &d8 ->c8 COt8 68 't8 .7v8 @Nd8 t8 )8 088 8 8 AQQU8 8  8 )08 9?v8 HLF8 8 +48 2>d8 EJ&8 8 "&8 +6d8 =Ff8 d8 &f8 /?t8 8 8 FMV8 V8 )8 0<D8 CLF8 8 $F8 -;48 BMT8 t8 +38 1=d8 EMV8  S!8  #0!8  6=V!8  FMV!8 8" cFSW 6dSW $'8 8 8C* 
h		 "8 	" 	"C #		 
 
W"*$$wrvc{3/00 UBF3K4D4N4NRUVXV\]`VabeVfRgRgRmRmRoRosuRuRu)++RWRVC[=W5X5X+ JJsW}s26#;};U7V7V'VY]']____ JJsW}s26#;s;K7L7L'Ld'RTTTTJJy!!!!	"" " " " " " " " " " " " " " " 

%x000
Fs   4E!I""I&)I&Fc                     |dk    rt                       t          d           t          d           t                              |           }t	          |          }|                    dg          }t          j                    }|j        D ]}|	                    |j
        dd          } |j        |d<   |                    d	dd
           ||d                                                   }|d                             d          |d<   |S )z
    Receives all publications from Google Scholar for a given searchfield
    
    Returns
    -------
        DataFrame
            DataFrame with all publications on Google Scholar with short info (title, year, bib)
    TzOIf nothing happen in the next minute your IP might already be blocked by GooglezTry: proxy, VPN, TOR, ...ri   )sectionsFrk   rn   rt   )	ascendingr  ro   rp   )use_proxy_scholarlyrw   rx   ry   r{   rz   r|   r}   ri   r~   rj   sort_valuesr   r   )searchfield	use_proxyr   ru   r   r\   s         r>   get_pub_googler    s    D	
[\\\	
%&&&**;77L,F[[>"2[33FJ" O O&&swT&NN

%2J|6UDAAAZ077999:J$W-44U;;JwrW   c                      t          d           t          ddg d                                          } t                              | |            t          dt          |                       d S )NzLet's try to use a proxy...Tr   )DEUSCA)randtimeout
country_id)httphttpsz(**proxy is used to access Google with:**)rw   r   r   rx   r  r  rp   )proxys    r>   r  r     ss    	
()))46G6G6GHHHLLNNEU%000Cs5zzCCDDD4rW   c                    t          dd           t          j                    }| j        D ]q}t	          | d         j        |                    |                    | d         |                                         j        dd          }t          j
        d	           r|d
                             d          |d
<   t          dd           |S )NzCFill all informations available at **Google** for the publications:bluer&  ro   rn   TFrk      rt   r   z**Finished**)r  r|   r}   r   rw   r(  r~   rz   rj   timesleepr   )DF
pub_filledr   s      r>   google_details_publicationr  	  s    QY_````JX  r'{q!"""&&r,'7':'?'?'A'A'E48u ' G G

1#F+22599JvN&))))rW   rD   c                    g g g g g g g g f\  }}}}}}}}	| d                                          }
| d                                          }| d                                          }t          d           |                                 D ]^\  }}t          |d                    t          |d         ||d                   }|dk    rQ	 t	          |d         d	
          }	 |                    |j                   n&#  |                    t          j                   Y nxY wn@#  t          |d         dz              d}|                    t          j                   Y nxY w|                    |d                    |                    |d         d                    |                    |           |                    t          |                     |	                    t          |                     	 |j        dk    r|                    |j                   n!|                    |d         d                    nP#  	 |                    |d         d                    n&#  |                    t          j                   Y nxY wY nxY w||         dk    r	 |j        dk    rt          |j                  | j        |df<   n+|d                             d          d         | j        |df<   nQ#  	 |d                             d          d         | j        |df<   n#  t          j        | j        |df<   Y nxY wY nxY w|
|         dk    r	 t          |d                   | j        |df<   nf#  	 |j        dk    rt          j        | j        |df<   nt          |j                  | j        |df<   n#  t          j        | j        |df<   Y nxY wY nxY w||         dk    rz	 |d         | j        |df<   nf#  	 |j        dk    rt          j        | j        |df<   nt          |j                  | j        |df<   n#  t          j        | j        |df<   Y nxY wY nxY wd|d         dd         v sd|d         dd         v rzt'          ||          }|dk    r|                    |d                    ,t)          |          dk    r|                    |           V|                    |d                    s|                    |d                    |                    d           |                    |d                    |                    d           |                    |d                    |                    d           |                    |d                    |                    t          j                   |	                    t          j                   `t          j        |          | d<   t          j        |          | d<   t          j        |          | d<   t          j        |          | d<   t          j        |          | d<   t          j        |          | d<   t          j        |          | d<   | d                             t                    | d<   t          j        |	          | d<   t/          |           } | S )z
    Function that gets DOI and title from Crossref and/or Scopus and writes it into the dataframe.
    If volume or issue is not given by Google it will search for it at Crossref and Scopus.
    r   r   r.   z%searching in crossref and scopus for:ro   r   Nr   FULL)viewz8**not found in scopus**. API key and permission correct?r   r   Tr   r   r   u   …r      z	Full-Text   	new_titler   r   r   
cover_date
first_last)r   rw   r  r5  r   r~   r   r   r   r  r   first_last_authorr   r   rp   r(  r   r   issueIdentifierr   rv   arrayr   clean_abstracts)r  ru   doi_list
title_list	item_listr   r   abstract_listr  r  volume_conditionnumber_conditionpages_conditionelementr  r   r   r   s                     r>   get_details_crossref_scopusr    s    <>r2r2rSUWY;Y:Xz9hM:j!(+2244!(+2244 )0022O	
1222"++-- Q& Q&c'l*3w<YPPd??	*/VLLL.%%k&;<<<<.%%bf-----*)ccddd"!!"&)))))OOGEN+++gg.q1222W%%%OON733444099;;;	174??!(()MNNNN!((1H)I!)LMMM11!((1H)I!)LMMMM1!((00000w'4//	A"/477:=k>V:W:W
ww77:A&/:O:OPS:T:TUV:W
ww7AA:A&/:O:OPS:T:TUV:W
ww77A:<&
ww777(D00	B7:78;L7M7MJN78#344BB&-55?AvJN78+;<<?B;CU?V?VJN78+;<B;=6
wx'7888(D00	B7>w7GJN78#344BB&6$>>?AvJN78+;<<?B;C^?_?_JN78+;<B;=6
wx'7888J,,,s:rss?S0S0S'==t##!((Z9999]]S((!((2222!((Z9999$$S_5555OOD!!!c'l+++T"""  Y000OOD!!!  Z111bf%%%bf%%%%**Ju hz22J{),,JvXh//Jz"$(="9"9JXm44Jz!x
33J|"5)0055Ju!x
33J| ,,Js   DC87D8!DD;E5AH==J
 !I"!J
"!JJ
AK00L>3+LL>L97L>M..O1A N21O2O
O!O44Q7A P87Q8QQc                    d}	 | d                              dd          }|                     dd          }|                     dd          }|                     dd          }t          |          dk     r1|dk    r|S |j        dk    r|j        dk    r|S |j        }n	|j        }|S |S #  |dk    r|cY S |j        dk    r|j        dk    r|cY S |j        }n|j        }Y nxY w|S )	z
    Receives abstracts for publication from Crossref and Scopus, given the item found by Scopus and Crossref.
    
    Returns
    -------
        String
            abstract
    Nr   z	<jats:p> r   z<jats:p>z
 </jats:p>z	</jats:p>r  )r   rv   descriptionr   )r   r   r   s      r>   r   r     s     H3:&..{B@@##J44##L"55##K44x==3d""*d22"+t33'#.#7*6H#O
3$OOO&$..'4//#OOO*3HH&2Os*   A8B( =B( B( &B( (
C4CCc                 |   | j         D ]2}d}| j        |         j        }|d         dk    s0d|dd         v s$d|d d         v sd|dd         v sd	|d d
         v r|                    d          dk    r'|||                    d          dz   d          z   dz   }n|                    d          dk    r$|||                    d          dz   d          z   }nV|||                    d          dz   d          z   }n2d|dd          v r!||d |                    d                   z   }n||z   }|| j        |df<   4| S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r(  r   r   )r   r   r   r   s       r>   r  r    s   x ( (fSk"q6T>>[C"I553rr79J9Jk]`abceae]fNfNfj{  @C  DG  EG  DG  @H  kH  kHxx
##b((#chhz&:&:1&<&=&=">>D-((2--#chh}&=&=b&@&A&A"BB#chhsmmAo&6&6"77s455z!!#osxx~~o"66#!'s:~IrW   add.database.papersc                 ^   g }|                      t          j        dd          } d}g d}i dddd	d
ddd	dddddddddddd	dddd	dd	dddddddd	i dd	ddddddddddddd d	d!d"d#d	d$dd%d	d&d"d'dd(d	d)d	d*d	i d+dd,d	d-dd.dd/dd0dd1dd2d	d3d	d4d	d5dd6dd7dd8d	d9dd:d;d<di d=d	d>dd?dd@d	dAd	dBddCd	dDddEd	dFd	dGd	dHd"dId	dJddKd"dLd"dMdddd"dd	d	dd	d	d	d	dN}t          |dO          5 }|                                 D ]a\  }}	 t          j        |dP                   s|dP         dk    r	|dP         }	nt                      n:#  	 t          |dQ                   }	n#  t          |dR                   }	Y nxY wY nxY wt          |          }
t          |dS                   }t          |d                   }dT|dUdV         v r|                    |dW                    |                    |           dXdYdZ|d[         d\d]t          |d                   ||	|d^         |
|d         |dW         |d\g}t          ||          D ] \  }}|                    ||z   d_z              !c	 dVdVdV           n# 1 swxY w Y   |S )`a=  
    Write publications from Google to filenname with the structure needed by the webpage of the chair.
    It aslo returns the urls of the articles with incomplete abstracts.
    'XXX' is written in the database where no data can be found. By searching for 'XXX' later we can complete
    those entries by hand.
    XXXT)regexr  )zAG		zcvselected	ztype		z
firstlast	z
#filename	z#cover		zyear		ztitle		z	authors		z	pubdate		z
reference	zDOI		z	hyperref	z	abstract	r   r_  r  rJ   r   r   r`  ra  rt   ro   r   rb  rc  r   r   rd  re  rf  rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  r   r   rq  rr  rs  r   rt  ru  rv  rw  r   rx  ry  rz  r   r   r{  r|  r}  r~  r  r  r  r  r  r  z	 r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  r  r  r  rI   r'  r   ru   r  z&hellip;iNurlGCnotypeXXXr  r   z../pubs/reprints/covers/XXXr   r   )r   r   nanr/   r  r|   r   
ValueErrorr   format_authors_googleformat_referencerY  r~   r0   rp   r   )ri   rd  url_abstract_incompleter  name_rowr  r   r   r  author_shortrc  r  r   rN   namer  s                   r>   add_pubs_to_filer    s$    !''T'BBLNIQ Q QH^4 ^T ^6& ^t^$V^-3F^<CF^V^&v^/:4^AFv^ d^ 't^ .7v^ @Gv^ 6	^ 't	^ ^ .:4	^ BH	^
 6^
 #6^
 ,36^
 <C6^ 6^ &d^ ->c^ DPQU^ 6^ 't^ .;3^ AJ&^ $^ !,D^ 3>d^ ^ ^ EMV^ D^ #(^ 17v^ @Gv^ &^ v^ (4D^ ;Gt^ ^ $F^ -2&^ ;C6^ t^ 'v^ 0:%^ BK6^ ^ ^ D^ #*&^ 3<F^ EPPT^ ^ (^ 1=T^ DI^ $^ !,D^ 3>d^ ERRU^  !^  'v!^  0A!^  GTTW!^" 6#^ ^" $*Fc4$QW4$X\'^ ^ ^C( 
h		 0&//11 	0 	0JE3
Hws=122 's=7IU7R7R#&}#5LL$,,& !HH#:3v;#G#GLLH#8X#G#GLLL(--I#C$455I"3z?33HXcdd^++'..s5z:::JJy!!!T9c,.?4c#f+6F6F ,J #e*c%j(BHG "(G44 0 0
U

4%<$.////0-	00 0 0 0 0 0 0 0 0 0 0 0 0 0 02 #"sC   J"9=E76J"7F.:FF.F)	'F.,C)J""J&)J&c           	         d}|dt          | d                   z   dz   z  }	 |dt          t          | d                             z   dz   z  }n%#  |dt          | d                   z   dz   z  }Y nxY w	 |t          t          | d                             d	z   t          t          | d
                             z   dz   z  }nH#  |t          | d                   d	z   t          t          | d
                             z   dz   z  }Y nxY w|S )Nr   z<i>r   z</i>z <b>r   z</b> r.   r#  rt   r$  r   )rY  rp   r   )r  r   s     r>   r  r    s   F
ek#o"6777&@@F8&3s3x=11222W<<8&3s8}---77J#c#g,''((4/#c#f+6F6F2G2GG#MMJ#c(m$$t+c#c&k2B2B.C.CCcIIMs   +A  A04AC ADc                 j    | d         d         d         dk    s| d         d         d         dk    rdS dS )z8 Checks if Cuniberti is either first or last author
    ru   r   rE  rD   r   yesr  rF  r   s    r>   r  r    s@     	Xq(#33Xr8J88TYd7d7dutrW   c                     t          |           D ]4\  }}|dk    rt          j        |            t          j        |           5dS )Nr   T)rP  
webbrowserr/   open_new_tab)urlsr   r  s      r>   	open_urlsr    sP    D// ) )366OC    #C((((4rW   c                    	 | d         d         d         \  }}}n6#  	 | d         d         d         \  }}}n#  t           j        cY cY S xY wY nxY wt          t          |                    dk    rdt          |          z   }t          t          |                    dk    rdt          |          z   }d                    |||          S )Nzpublished-onliner   r   issuedr   0z{0}.{1}.{2})r   r   rv   rp   r  )r   rt   monthdays       r>   r   r     s     23LA!DeSS	#H~l;A>D%	6MMMMM  3u::!c%jj 
3s88}}CHHnc5111s#    A7AA	A	Ac                 "   |dk    rd }d}| }|                     d          }t          |          D ]\  }}|                     d          d         }|t          |          dz
  k    r|dz   }|dk    r|d	z   }|                     d          d d         }d}	|D ]L}
|
d
         dk    r$|
d
         dk    r|	 ||
d
                   dz   z  }	2|	d ||
d                   z   dz   z  }	M||	z    ||          z   }|dk    r|}|dz   }|d d         }|S )NFc                     | S rB  rF  )r  s    r>   rY  z*format_authors_google.<locals>.html_coding/  s    LrW   r   z and r   r   r   rD   z<b>r   r   rL  r   rO  r   )r   rP  rv   )authtml_encoderY  r   r   r   r  rX  first_namesfirst_shortrU  s              r>   r  r  -  sq   e	 	 	 FK##G,,K[))  4**S//"%[!!A%&&W_Fk!!e^Fjjoocrc*  	A 	AEQx358u#4#4{{5844t;;s[[q%:%::TAAk)KK,@,@@Fk!!F$CRC[FMrW   c           
      0   d}g d}g d}t          dd          5 }| j        D ]}| j        |         d         dk    s| j        |         d         dk    rt          |          D ]\  }}t	          j        | j        |         |                   s| j        |         |         d	k    rB|                    |||         z   t          | j        |         |                   z   d
z              |                    |           ڌ	 d d d            n# 1 swxY w Y   d S )Nr  )r   r`  rt   ro   r   r   rc  r   )r  r   r  r  r  z			r   r   database_newrI   r   regularletterr   r   )r/   r   r(  rP  r|   r   r0   rp   )r   r  rN   distr   r  r   conts           r>   write_corrected_database_shortr  L  sl   NI___GFFFD	nc	"	" 
d8 		 		Cvc{6"Y.."&+f2E2Q2Q(11 T TGAtwrvc{4011 TbfSk$6G66Q6Q

4$q'>CsD8I4J4J#JT#QSSSS

9%%%%		
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Fs   C#DDDrB  )F)rD   )r  )Bpandasr|   numpyr   r  r4   namedentitiesr[  r   r  IPython.displayr   r   osenvironpybliometrics.scopusr   fp.fpr   crossref.restfulr   difflibr	   django.template.loaderr
   r   django.templater   django.httpr   r?   rP   rV   r]   rd   rg   r   r   r   r   r  r  r  r  r  r/  r   r5  r)  r   r   rY  r  r  r  r  r  r   r  r  r  r  r  r   r  r  rF  rW   r>   <module>r     sv                      - - - - - - - - 
			 F
  2 2 2 2 2 2       " " " " " " # # # # # # A A A A A A A A # # # # # # $ $ $ $ $ $$] $] $]L  0        ,/ ,/ ,/^  ,  [ [ [zJ J JZ  &  $         * * *Z   ,  :	 	 	" " " "J       F  + + +\   6    i i i iX' ' 'R  (;# ;# ;# ;#|      2 2 2   >    rW   