o
    cax                     @   sV   d dl Zd dlmZmZ d dl mZmZmZ d dlZd dlm	Z	 	 G dd de
ZdS )    N)listdirgetcwd)isdirjoinabspath)IPTCInfoc                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)S )*DpTranslatorc                 C   s   || _ || _d| _d S )N   )siterootDirid)selfr
   r    r   $/home/wayne/dullPencil/dullpencil.py__init__T   s   
zDpTranslator.__init__c                 C   s   d| j  d | d }|S )Nz@<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>z(</title>
  <link rel="stylesheet" href="z">
</head>
<body>
)r
   )r   pathcssfilesr   r   r   preamble[   s   	zDpTranslator.preamblec                 C   s   d}|S )Nz
</body>
</html>
r   )r   r   r   r   r   	postamblej   s   zDpTranslator.postamblec                 C   s  || _ tj|| _d| _g | _d| _d| _d| _d| _	t
| j d }d| j d }| j| | j| d}d}ddg}d}d}d}	d}
d}d}|t|k r|| }|dkrb|dkr|
dkr|
dkr|d |
  }|
dkr|
d	kr|	r||d
7 }n|d7 }|	 }	|
d	8 }
n`|
dkr|r|d7 }n|d7 }| }|
d8 }
nI|
dkr|	r|d
7 }n|d7 }|	 }	|r|d7 }n|d7 }| }|
d8 }
n$|	r|d
7 }d}	|
d	8 }
n|r|d7 }d}|
d8 }
n
|d7 }d}	|
d	8 }
|
dksq|
dkr|d7 }d}
|dkr'|dkr'|d	kr%|dkr%t|dkr|dd	 dks%|d |  }|d7 }d}|dkr;t|dkr9||7 }d}n|dkrJd}d||< d}n||7 }|dkrW|
d7 }
|dkr`|d7 }n|dkr|dkr| j| | | jr| jrd}nd}| j|d  d| _| jdkr| j| d d}d}nX|dv r| j| | |}d}nD|dkr|||d  dkr| j| | |}n||7 }|d7 }d}n|dkr|||d	  dkr| j| | |}n||7 }d}n|dkrd}d||< d}n||7 }|dkr|
d7 }
d}n|dkr|dkrL|d7 }zd||< W n tyB   |d Y nw ||  |7  < n|d krz||  |7  < | || | }|d8 }|dkrq||7 }d}n||  |7  < n|dkr|| d!kr||  |7  < d}ni||  |7  < n`|dkr|d kr|| d"d  d#krd$|| dd"  d% }|d8 }|dkr||7 }d}n/||  |7  < d}n$|d&kr||  d'7  < n|d(kr||  d)7  < n||  |7  < |d7 }|t|k sQt|dkr| j| | |r| jd d}|	r*| jd
 d}	| jrB| jr5d}nd}| j|d  d| _| jdkrQ| j| d |dkr\| jd* | j|   d| jS )+N r   Fr/z
/style.css'r	      </i>z<i>   z</b>z<b>   T->z<!z&mdash;
[</th>
</td>
</tr>
</table>
z:*#|!   ----===]z[-z--z<pre>z</pre><z&lt;&z&amp;z/
<p>Error: unterminated command somewhere!</p>
)fileNameosr   dirnamesurnamereidentidentstristable
tablestuffopenreadr
   appendr   lendoParagraphisheaderunindent
IndexErrordoCmdr   r   )r   r.   r   r   statebufcmdcmdNestbolditaliciCntdCntics2r   r   r   toHtmlt   sP  





* 












 
  -
zDpTranslator.toHtmlc                 C   sp  d}| d  }|d}t|dkr|t|d d d    }|d    }|dkr4| |}nv|dkr=|  }nm|dkrG| |}nc|d	krQ| |}nY|d
kr[| |}nO|dkre| 	|}nE|dkro| 
|}n;|dkry| |}n1|dkr| |}n'|dkr| |}n|dkr| |}n|dks|dkr| |}n| |}t|dkrd| d }|S )Nr   []:r	   r   headnavpathpersoncouplechildrentableimggallerydirmp3
mp3shufflehttphttpsz<em><s>z	</s></em>)stripsplitr:   lowerrN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   	localFile)r   rB   txtFilerJ   cmd2acmdArgsrI   r   r   r   r?   _  s.   

zDpTranslator.doCmdc                 C   s@  d}t |}|dkr|d }| jr)|dvr)| jr|d7 }n|d7 }|d7 }d| _| jdkr9|dvr9|| d7 }|d	v rd
}t ||kr[|| d	v r[|d
7 }t ||kr[|| d	v sK| j|krg|| |7 }| j|kr||d
  }| jd |kr|| |d
 7 }n|dkr|d7 }n|d7 }| j|k r|d7 }| j|k r|| j }|  j|7  _|dkr|d7 }n|dkr|d7 }n|d7 }|  jd
7  _| j|k s||d   }t |dkr|d dv r|| |7 }|S ||7 }|S |dv rn|dd dkr>|dkrd| _nd| _| jsd| _|d| j d 7 }n| jr#|d7 }n|d7 }|d7 }| jr4|d7 }n|d7 }|d
d  }|	d}t
dt |d
 D ]}	| jr\|||	 d 7 }qL|||	 d 7 }qL||d 7 }|S |d d  d!kr|d"7 }|d d  d# }t |dkr|| |7 }|S |d d d$krd}
t ||
kr||
 d%kr|
d
7 }
t ||
kr||
 d%ks|d |
 }||
d   	|}t|
}|d&| d' |d  d( | d) 7 }|
dkr|d"7 }t |d
kr|d
  }t |dkr|| |7 }|S |d*|  d+ 7 }|S |d,7 }|S )-Nr   r   z!|r#   r$   r%   Fz:*#!|z:*#r	   rM   z
</dd>
<dd>z
</li>
<li>r!   z<dl><dd>*z<ul><li>z<ol><li>z|!r   z||!Tz<table z>
<tr>
z</tr>
<tr>
z<th><td>z
</th>
<th>z
</td>
<td>r&   r'   <hr>
z
 r)   r(   z<hr   z</hz>
z<p>z
</p>
zWe have a problem)r:   r5   r<   r3   r=   r4   r[   r;   r6   r\   rangestr)r   brJ   nc2cntc3s3ra   rH   levela2b2r   r   r   r;   ~  s   
 







&21

$
zDpTranslator.doParagraphc                 C   s   d}| j |kr7|  j d8  _ | j| j  }|dkr|d7 }n|dkr&|d7 }n|d7 }| jd d | _| j |ks|d	kr?|d
7 }|S )Nr   r	   rM   z
</dd></dl>rd   z
</li></ul>z
</li></ol>rc   r   r!   )r3   r4   )r   rp   r   rI   r   r   r   r=     s   




zDpTranslator.unindentc                 C   s   d}|d| d 7 }|S )Nr   <h1>z</h1>
<hr>
r   )r   argstrhtmlr   r   r   rN     s   zDpTranslator.headc                 C   s   d}| j t| jd d  d}t|dkrUd}t|dkrQd}tdt|d D ]}|d7 }q*tdt|d D ]}|d	| d
 ||  d 7 }|d d }q:|d7 }|S )Nr   r	   r   r   z<div style="float:right;">
z..r   z/..z/ <a href=""></a>
z</div>
)r   r:   r   r\   rh   )r   ru   ra   ro   rH   r   r   r   rO     s   
zDpTranslator.navpathc                 C   s
   |  |S N)rQ   r   rt   r   r   r   rP     s   
zDpTranslator.personc                 C   s   d}| d}t|}|dkrX|d  | _|d|d   d |d   d 7 }td|D ]}|dkr@|d	||   7 }q/|d
||   7 }q/|dkrS|d7 }|d7 }n|d| d 7 }|d7 }|S )Nr   ,r	   rs   r   z <i>r   r    (, )z</h1>
rg   )r\   r:   r[   r1   rh   )r   rt   ru   argsrm   rH   r   r   r   rQ     s   
(
zDpTranslator.couplec           	      C   s  d}|  d}tdt|D ]q}||   d}|d7 }t|dkr}|d   d}t|dkr>|d d | j }n| j}tdt|D ]
}|d||  7 }qH|d	| | d
 7 }t|dkry| |d  d  }|d| d 7 }n|d7 }|d7 }q|d7 }|S )Nz <p>Children:</p>
<dl><dd><table>r!   r   (
<tr>r{   r}   r	   rf   r$   r~   z<td>(z)</td>
z
<td></td>
</tr>
</table></dd></dl>
)r[   r\   rh   r:   r1   r^   )	r   rt   ru   r   rH   psra   pp2r   r   r   rR   !  s(   
zDpTranslator.childrenc                 C   s   || _ 	 dS )Nr!   )r6   rz   r   r   r   rS   ;  s   *zDpTranslator.tablec           	      C   s  |  d}d}d}d}d}tdt|D ];}||   ||< || dd  dks4|| dd  dkr9|| }q|| d	krBd
}q|| dkrKd
}q|dkrQ|}qt|d dkrd}|dkry|d| d 7 }|ro|d7 }n|ru|d7 }|d7 }|d|d  d 7 }|r|d|d  d 7 }|d7 }n|r|d|d  d 7 }|d7 }n
|d|d  d 7 }|dkr|d| d | d 7 }n|d7 }|d7 }|dkr|d||  d 7 }|S d| d  }|S )!N|r   150pxFr+   pxrc   %leftTrightr   z<figure style="width:z;display:inline-block;zfloat:left;zfloat:right;">
	<a href="
<img src="z" z$style="float:left;margin-right:10px;z$style="float:right;margin-left:10px;z	" style="z
max-width:z;max-height:z;">
z"max-width:100%;max-height=100%;">
rw   <figcaption>z</figcaption>
</figure>
z
[img: parameter error...] (z)
)r[   r\   rh   r:   )	r   rt   r   capr   r   r   rH   rJ   r   r   r   rT   n  sN   (


"zDpTranslator.imgc                 C   sf  |  d}d}|d7 }t|dkrtdt|D ]}||   d}t|dkr2|d   }nd}t|dkrA|d   }nd}|d7 }t|dkra|d| d	 7 }|d
| d 7 }|d7 }t|dkrp|d| d 7 }n8| jd | }zt|}	|	d }
|
d kr|d|
  d 7 }W n ty } ztt	| W Y d }~nd }~ww |d7 }q|d7 }|S )Nr!   z	<center>
r   r   r   r	   z	<figure>
r   r   r   z" style=width:100%;>
</a>r   z</figcaption>
r   zcaption/abstractz
</figure>
z
</center>
)
r[   r\   r:   rh   r   r   decode	Exceptionprintri   )r   rt   r   rJ   rH   ra   fntitleffninfor   er   r   r   rU     sB   
zDpTranslator.galleryc           
      C   s$  t |dkrd}|d dkr| j| }n| jd | }t|}|t | jd  d }d}t |t | jkrd| d }tj|r|d7 }t|}dd	 }|j|d
 tdD ]4}|D ]/}t |dkr|d dkr| j| | }	|dkr|d7 }|d| | d | d 7 }|d7 }q[qW|d7 }|S )Nr   .r   r   z<p><em>Directory: z
</em></p>
z<dl><dd><table>c                 S   s   |   S ry   )r]   )r   r   r   r   myFunc  s   z DpTranslator.dir.<locals>.myFunc)keyr   r   z<td><a href="rv   z
</a></td>
r   r   )	r:   r   r   r   r/   r   r   sortrh   )
r   r   r   locFnrJ   filesr   rH   ffn2r   r   r   rV     s6   zDpTranslator.dirc                 C   sN   d| d }|d dkr| j | }n| jd | }tj|r%d| d }|S )N<i><strike></strike></i>
r   r   z0<audio controls preload="metadata"><source src="z" type="audio/mpeg"></audio>)r   r   r/   isfile)r   rt   ru   r   r   r   r   rW     s   zDpTranslator.mp3c                    s  dt j }dt j }dt j }dt j }dt j } jd7  _| d}d}t|d	ksGt|dkrJt|d	 d	krJd
g}g  |D ]z}	|	d	 dkr\j|	 }
njd |	 }
t|
}
t|
tjkrtj	|
r fdd|
 qNtj
|
rt|
d	kr|
d	 d
krd}|
d
}|dkr|
|d   }|dks|dkr |
tjd   qNtdt qNtd|
 qNt d	krmtt D ]}td	t d } | } |  |< | |< qd| d  d	  d | d  d	  d | d }tt D ]!}d |  d }|t d k r)|d7 }n|d7 }||7 }q|d| d | d | d  | d! | d" | d# | d$ | d% | d& | d' d( d d) d* d+ | d, 7 }|S )-N
myAudioTxtmyAudioslsiaudr	   r!   r   r   r   r   c                    s   t | }|D ]P}t|dkrV|d dkrVd}|d}|dkr'||d   }|dks/|dkr@ | tjd  d |  q| d | }tj|rQ| qt	d| qd S )	Nr   r   r   rc   .mp3.m4ar   mp3shuffle() skipped: )
r   r:   rfindr]   r9   r   r/   r   r   r   )r   r   r   tyrH   ffmp3sr   traverseDirr   r   r   2  s   
"

z,DpTranslator.mp3shuffle.<locals>.traverseDirrc   r   r   r   zmp3shuffle() not a file: z	<div id="rv   z</div>
<audio id="z" controls><source src="z." type="audio/mpeg"></audio>
<script>
  const z = [
z    ""z,
z];
z  let z = 0;
  let z = document.getElementById("z");
  z.onended = function() {
    z++;
    if (z >= z	.length) z = 0;
    let src = r"   z,];
    this.src = src;
    this.innerHTML = z'<source src=z'+src+'z" type="audio/mpeg">zV';
    this.play();
    // Show what song we are playing
    document.getElementById("z#").innerHTML = src;
  };
</script>
)ri   r   r[   r\   r:   r   r   r   r/   r   r   r   r]   r9   r   r   rh   randomrandint)r   rt   r   r   r   r   r   r   rJ   argr   r   rH   iijjtr   r   r   r   rX     s   (







zDpTranslator.mp3shufflec                 C   sn   d| d }| d}t|dkr5t|dkr'd|d  d |d  d	 }|S d|d  d |d  d	 }|S )
Nr   r   r   r   r   r   z" target="_blank">r	   r   )r\   r:   )r   rt   ru   r   r   r   r   rY     s   
zDpTranslator.httpc                    s  d| d }| d}t|dkrtdt|D ]
}||  ||< q|d d dkr4| j|d  }n	| jd |d  }tj|stj|sd}d}d}d}	g }
g }|d  dD ]}| }|dkrm|	| q^t|d	kr
	 |d }|d	 }	g }td	t|D ]}||  dD ]}| }t|dkr|	|
  qqd| j d |
  }| j|  t r fddt D }|D ]}d
}|D ]
}||vrd} nq|r|
	| qt|
dkr|d |
d  d }t|dks|rn|d }|d	 |d< ||d	< d
}qvn<t|dkrF| jd |d   t r+ t| jd  d }n| jd |d 
   t rF t| jd  d }t|dkrd| d }t|d	krc||d	 d 7 }nN|r|	dkr||	d | 7 }t|dkrtdt|D ]}|dkr|d||  7 }q|d||  7 }q|d7 }n||7 }n||d7 }|d7 }t|
d	kr|d|
d	  d 7 }|S d|d d }|S t|dkrd|d  d |d	  d }|S d|d  d |d  d }|S )Nr   r   r   r   r   Fr   r{   r	   T c                    s   g | ]}t t |r|qS r   )r   r   ).0r   dnr   r   
<listcomp>  s    z*DpTranslator.localFile.<locals>.<listcomp>r   rv   r   r   r|   r}   r~   rL   z<i><strike> (dup: z)</strike></i>
)r\   r:   rh   r[   r   r   r/   r   r   r9   r]   r
   r   )r   rt   ru   r   rH   r   switcheddir2surgivenmatchesra   r   worddirsfoundrJ   r   r   r   r^     s   
$
 



	zDpTranslator.localFileN)__name__
__module____qualname__r   r   r   rK   r?   r;   r=   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   r^   r   r   r   r   r   S   s.    
 l_36/1 r   )os.pathr/   r   r   r   r   r   r   	iptcinfo3r   objectr   r   r   r   r   <module>   s   E