Ë
    ðGÉjä  ã                   ó~  — d Z ddlZddlZddlZddlZddlmZ  ee«      j                  «       j                  j                  Z
ej                  j                  d e ee«      j                  «       j                  «      «       e
dz  dz  dz  Ze
dz  dz  dz  ZdZd	Zd
ZdZdddddœZd„ Zd„ Zd„ Zedk(  r e«        yy)uW  
Contrasta dos fuentes de tags sobre las MISMAS imagenes:
  - Danbooru  : los tags que puso la comunidad + su 'rating' (g/s/q/e)
  - WD14      : lo que devuelve nuestro tagger

Responde a tres preguntas:
  1. Â¿El rating de Danbooru coincide con NUESTRA severidad por tags?
     (donde no, nuestra clasificacion de severidad se equivoca)
  2. Â¿Cuantos tags de WD14 existen en el vocabulario de Danbooru?
     (cuanto menor, peor es nuestro tagger)
  3. Â¿Que tags pone WD14 que Danbooru no tiene, y al reves?

    python Engine/comparar_danbooru.py
    python Engine/comparar_danbooru.py --verbose
é    N)ÚPathÚArchivosÚwd14ÚdanbooruÚtags_danbooru)z.jpgz.jpegz.pngz.webpz.bmp)!ÚsexÚvaginalÚpenetrationÚanalÚanal_sexÚcreampieÚfellatioÚblowjobÚpaizuriÚtitjobÚhandjobÚfootjobÚcum_in_mouthÚcum_in_pussyÚcum_in_vaginaÚcum_overflowÚejaculationÚcumshotÚ
deepthroatÚ	after_sexÚnetorareÚ	group_sexÚ	threesomeÚstanding_sexÚcowgirl_positionÚreverse_cowgirl_positionÚ
missionaryÚ
doggystyleÚdoggyÚ69_positionÚsex_from_behindÚspread_legsÚ
pov_crotch)ÚpenisÚpussyÚanusÚnipplesÚ	testiclesÚclitorisÚerectionÚ
uncensoredÚtoplessÚ
bottomlessÚahegaoÚ
spread_assÚ	ass_focusÚ
pussy_peekÚbetween_breastsÚsideboobÚ	underboobÚpussy_juiceÚcumÚcovered_nipplesÚcum_on_bodyÚcum_on_breastsÚinternal_cumshotzcross-section)ÚnudeÚcompletely_nudeÚpartially_nudeÚ	undressedÚsfwÚspicyÚexplicit)ÚgÚsÚqÚec                 óº   — | D �ch c]  }|j                  «       ’Œ }}|t        t        «      z  ry|t        t        «      z  ry|t        t        «      z  ryyc c}w )NrF   rE   rD   )ÚlowerÚsetÚSEV_EXPLICITÚ
SEV_SEXUALÚ
SEV_NUDITY)ÚtagsÚtrH   s      úEngine/comparar_danbooru.pyÚnuestra_severidadrT   3   sR   € Ù Ó!™D�qˆ�‰�˜D€AÐ!ØŒ3Œ|ÓÒØØŒ3Œz‹?ÒØØŒ3Œz‹?ÒØØùò 	"s   …Ac                 ó^   — | j                  «       j                  «       j                  dd«      S )z.Danbooru usa espacios, nosotros guiones bajos.Ú Ú_)rL   ÚstripÚreplace)rR   s    rS   ÚnormrZ   >   s"   € à�7‰7‹9�?‰?Ó×$Ñ$ S¨#Ó.Ð.ó    c                  óð  — t        j                  d¬«      } | j                  ddd¬«       | j                  «       }t	        t
        j                  d«      «      d   }t        j                  |j                  d	¬
«      «      }|D �ci c]  }|d   |“Œ
 }}g }t	        |«      D ]Ó  }t        |«      j                  }t        |dz   z  }	|	j                  «       sŒ5||   j                  d«      xs g D �
cg c]  }
t        |
«      ‘Œ }}
|	j                  d¬
«      j!                  d«      D �
cg c]  }
|
j#                  «       rt        |
«      ‘Œ }}
|j%                  |||   t'        |«      t'        |«      f«       ŒÕ |st)        d«      ‚t+        d«       t+        d«       t+        d«       t+        d«       d}|D ]k  \  }}}}|d   }t-        |«      }t.        j                  |d«      }||k(  }||z  }t+        dt        |«      j0                  d d d›d|d›d|d›d|rdnd›�«       Œm t+        d|t3        |«      fz  «       t+        d«       t+        d «       t+        d«       t'        «       }|D ]  \  }}}}||z  }Œ dx}}i }|D ]5  \  }}}}|D ])  }
|d!z  }|
|v r|d!z  }Œ|j                  |
d«      d!z   ||
<   Œ+ Œ7 |r||z  d"z  nd}t+        d#|z  «       t+        d$||fz  «       t+        d%||z
  z  «       |rDt	        |j5                  «       d&„ ¬'«      d d( }t+        d)«       |D ]  \  }
}t+        d*||
fz  «       Œ t+        d«       t+        d+«       t+        d«       t+        d,«       |D ]_  \  }}}}t3        ||z  «      }t+        d-t        |«      j0                  d d t3        |«      |t3        ||z
  «      t3        ||z
  «      fz  «       Œa |j6                  r”t+        d«       t+        d.«       t+        d«       |D ]m  \  }}}}t+        d/|z  «       t+        d0d1j9                  t	        ||z
  «      d d2 «      z  «       t+        d3d1j9                  t	        ||z
  «      d d2 «      z  «       Œo y y c c}w c c}
w c c}
w )4NzCompara Danbooru vs WD14)Údescriptionz	--verboseÚ
store_truezdetalle por imagen)ÚactionÚhelpzdanbooru_manifest_*.jsonéÿÿÿÿz	utf-8-sig)ÚencodingÚarchivoz.txtÚdanbooru_tagszutf-8Ú,z3[!] No hay .txt de WD14. Corre antes wd14_tagger.pyzL============================================================================z/1) NUESTRA SEVERIDAD  vs  EL RATING DE DANBOORUz9   imagen                            danbooru  nuestra  ?r   ÚratingÚ?z   é"   Ú34rV   Ú9ÚOKÚDIFIEREz
   coinciden: %d/%dzM
============================================================================u7   2) VOCABULARIO: Â¿los tags de WD14 existen en Danbooru?é   éd   z   tags WD14 totales      : %dz(   presentes en Danbooru  : %d  (%.1f%%)z   no encontrados         : %dc                 ó   — | d    S )Nrm   © )Úxs    rS   Ú<lambda>zmain.<locals>.<lambda>}   s
   € ¸¸!¹±ur[   )Úkeyé   z+
   mas repetidos que no estan en Danbooru:z      %2dx  %sz3) SOLAPAMIENTO POR IMAGENzF   imagen                            WD14  coinc.  solo_WD14  solo_DANz   %-34s %4d  %6d  %10d  %9dÚDETALLEz
--- %sz  solo WD14 : %sz, é   z  solo DAN  : %s)ÚargparseÚArgumentParserÚadd_argumentÚ
parse_argsÚsortedÚDAN_DIRÚglobÚjsonÚloadsÚ	read_textr   ÚstemÚWD_DIRÚexistsÚgetrZ   ÚsplitrX   ÚappendrM   Ú
SystemExitÚprintrT   Ú
RATING_NOSÚnameÚlenÚitemsÚverboseÚjoin)ÚapÚargsÚman_pathÚmanifestÚmÚby_fileÚfilasÚimgr�   Úwd_filerR   ÚdanÚwdÚaciertosÚrÚnuestraÚesperadoÚokÚvocabÚ_iÚ_mÚ_wdÚtotÚok_tÚ
inventadosÚ_danÚpctÚtopÚnÚcs                                 rS   Úmainr«   C   sj  € Ü	×	 Ñ	 Ð-GÔ	H€BØ‡O�O�K¨Ð;O€OÔPØ�=‰=‹?€Dä”g—l‘lÐ#=Ó>Ó?ÀÑC€HÜ�z‰z˜(×,Ñ,°kÐ,ÓBÓC€HÙ(0Ó1© 1ˆq�‰|˜Q‰¨€GÐ1à€EÜ�gŽˆÜ�C‹y�~‰~ˆÜ˜D 6™MÑ*ˆØ�~‰~ÔØØ!(¨¡×!1Ñ!1°/Ó!BÒ!HÀbÐ!HÓJÑ!H˜1Œt�A�wÐ!HˆÐJØ&×0Ñ0¸'Ð0ÓB×HÑHÈÔMó ÑM˜!Ø—‘”ô �1�gÐMˆð à�‰�c˜7 3™<¬¨S«´3°r³7Ð;Õ<ð ñ ÜÐNÓOÐOä	ˆ(„OÜ	Ð
;Ô<Ü	ˆ(„OÜ	Ð
EÔFØ€HÛ ‰ˆˆQ��RØˆh‰KˆÜ# BÓ'ˆÜ—>‘> ! SÓ)ˆØ˜Ñ ˆØ�B‰ˆÝ¬¨c«¯©¸¸Ó)<»aÛ*1¹2±4À9Ð3LðNõ 	Oð !ô 
Ð
! X¬s°5«zÐ$:Ñ
:Ô;ä	ˆ/ÔÜ	Ð
CÔDÜ	ˆ(„OÜ‹E€EÛ!ÑˆˆB��SØ�‰‰ð "à€N€Cˆ$Ø€JÛ!ÑˆˆB��bÛˆAØ�1‰HˆCØ�E‰zØ˜‘	‘à *§¡¨q°!Ó 4°qÑ 8�
˜1’ñ ð "ñ "ˆ$�‰*�sÒ
 q€CÜ	Ð
*¨SÑ
0Ô1Ü	Ð
4¸¸c°{Ñ
BÔCÜ	Ð
*¨c°D©jÑ
9Ô:ÙÜ�Z×%Ñ%Ó'©_Ô=¸c¸rÐBˆÜÐ<Ô=Û‰DˆAˆqÜÐ" a¨ VÑ+Õ,ð ô 
ˆ/ÔÜ	Ð
&Ô'Ü	ˆ(„OÜ	Ð
RÔSÛ!ÑˆˆR��bÜ��S‘‹MˆÜÐ,Ü�‹I�N‰N˜3˜BÐ¤ R£¨!¬S°°c±«]¼CÀÀbÁ»Mð0Kñ Kõ 	Lð "ð
 ‡|‚|ÜˆoÔÜˆiÔÜˆhŒÛ %ÑˆC��S˜"Ü�*˜sÑ"Ô#ÜÐ$ t§y¡y´¸¸S¹Ó1AÀ#À2Ð1FÓ'GÑGÔHÜÐ$ t§y¡y´¸¸b¹Ó1AÀ#À2Ð1FÓ'GÑGÕHñ !&ð	 ùòC 2ùò Kùòs   ÂQ)Ã0Q.Ä'"Q3Ú__main__)Ú__doc__rw   r~   ÚreÚsysÚpathlibr   Ú__file__ÚresolveÚparentÚBASE_DIRÚpathÚinsertÚstrr|   r‚   ÚIMG_EXTrN   rO   rP   r‰   rT   rZ   r«   Ú__name__rp   r[   rS   Ú<module>rº      sÚ   ðñó Û Û 	Û 
Ý á�‹>×!Ñ!Ó#×*Ñ*×1Ñ1€Ø ‡�‡��‘3‘t˜H“~×-Ñ-Ó/×6Ñ6Ó7Ô 8à
�ZÑ
 &Ñ
(¨:Ñ
5€Ø	�JÑ	 Ñ	'¨/Ñ	9€Ø
4€ð€ð€
ð H€
à˜w¨W¸:ÑF€
òò/ò
OIðd ˆzÒÙ…Fð r[   