U
    ^ƒ'^
  ã                   @   sŽ   d dl m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	Z	d dl
mZ d dlmZ dZdd„ Zdd	„ Zed
krŠeejdd… Ž  dS )é    )ÚImageN)Úpartial)Úget_terminal_sizez.pngc           
      C   sâ   |   d¡ dd¡}tj ||d ¡}t|d ƒ}t|d ƒ}t|d ƒ}t|d ƒ}z0t |¡ d¡ 	|||| || f¡ 
|¡ W nL tk
r¨   | d	d
¡ |  Y S    | d	d
¡ dd l}	|	 ¡  Y d	S X | d
d
¡ d	S )NÚ
ú é   r   é   é   é   ÚRGBFT)ÚrstripÚsplitÚosÚpathÚjoinÚintr   ÚopenÚconvertÚcropÚsaveÚIOErrorÚputÚ	tracebackÚ	print_exc)
ÚlineÚfolderÚprogressQueueÚargr   ÚtopÚleftÚwidthÚheightr   © r"   úGD:\Dropbox\games\factorio\mods-live\L0laapk3_FactorioMaps_3.5.5\crop.pyÚwork   s$    0r$   c                  O   s¸  t  t ¡ ¡ tjdkrt jnd¡ tjj| dd… Ž }tj t	| ƒdkrR| d nd| d ¡}tj |d¡}tj ||d¡}t
||d	 rŒd	nd
 ƒ}tj |¡s¸tj |¡s¸t d¡ q td ddtƒ d d  ¡dd g }t|dƒ4}| ¡  d¡dkst‚|D ]}	| |	¡ qW 5 Q R X tj|d}
t ¡ }| ¡ }t	|ƒ}d}zt	|ƒdkr:|
 tt||d|d¡}tt	|ƒƒD ]p}| d¡r€|d7 }t|ƒ| }tƒ d d }td t |d dƒdt
|| ƒ d|t
|| ƒ  ¡dd q€| !¡  dd„ | ¡ D ƒ}t	|ƒdkrNt t	|ƒdkr0dnd¡ qNtd ddtƒ d d  ¡ƒ W nX t"k
r²   t d¡ tdt	|ƒ› d ƒ t	|ƒd!k r¬|D ]}	t|	ƒ qœ‚ Y nX d S )"NÚnté
   r   é   z ../../script-output/FactorioMapsr   ÚImageszcrop.txtÚcropthreadsÚ
maxthreadszcrop {:5.1f}% [{}]r   é   Ú )ÚendÚrr   Zv2)Ú	processes)r   r   é€   Tzcrop {:5.1f}% [{}{}]éd   ú=c                 S   s   g | ]}|r|‘qS r"   r"   )Ú.0Úxr"   r"   r#   Ú
<listcomp>R   s      zcrop.<locals>.<listcomp>iè  zcrop {:5.1f}% [{}]gš™™™™™É?zKeyboardinterrupt caught with z files left.é(   )#ÚpsutilÚProcessr   ÚgetpidÚniceÚnameÚBELOW_NORMAL_PRIORITY_CLASSr   r   Úlenr   ÚexistsÚtimeÚsleepÚprintÚformatÚtsizer   Úreadliner   ÚAssertionErrorÚappendÚmpÚPoolÚManagerÚQueueZ	map_asyncr   r$   ÚrangeÚgetÚfloatÚroundÚwaitÚKeyboardInterrupt)ÚargsÚkwargsÚsubnameZtoppathÚbasepathÚdatapathr*   ÚfilesÚdatar   ÚpoolÚmr   ZoriginalSizeZdoneSizeZworkersÚ_ZprogressÚtsizr"   r"   r#   r   &   sR    $&"@ "
r   Ú__main__r   )ÚPILr   ÚmultiprocessingrG   r   ÚmathÚsysr?   r7   ÚjsonÚ	functoolsr   Úshutilr   rC   Úextr$   r   Ú__name__Úargvr"   r"   r"   r#   Ú<module>   s   0A