Ë
    †DÉj  ã                   óð   — d Z ddlZddlZddlZddlmZ ddlmZ ddlZ ee«      j                  «       j                  j                  Zedz  dz  dz  ZdZd	Zg d
¢ZdZdZdZdZd„ Zd„ Zedk(  r e«        yy)av  
Descarga referencias de poses de Danbooru CON sus tags, para validar el
pipeline de bloques contra la realidad.

Por que esto sirve: Danbooru ya tiene las etiquetas hechas por la comunidad y
el campo 'rating' (g/s/q/e) resuelto. Eso contrasta con dos cosas que aqui son
suposiciones nuestras:
  - el 'rating' de origen frente a nuestra clasificacion de severidad por tags
  - los tags de Danbooru frente a lo que devuelve WD14 sobre la misma imagen

Descarga en Archivos/wd14/danbooru/ (NO en inbox/, que ya esta tagueada).
Cada imagen viene con un .txt al lado y todo queda en un manifiesto.

    python Engine/danbooru_refs.py --limit 7
    python Engine/danbooru_refs.py --limit 7 --dry-run

Despues:
    python Engine/wd14_tagger.py --folder Archivos/wd14/danbooru \
        --out Archivos/wd14/tags_danbooru
    python Engine/comparar_danbooru.py       <- contrasta ambas fuentes
é    N)Údatetime)ÚPathÚArchivosÚwd14Údanbooruz%https://danbooru.donmai.us/posts.jsonz5plumloom-research/1.0 (personal pose research; local)))ÚstandingÚg)Úsittingr	   )Úlyingr	   )Úkneelingr	   )Úfrom_behindÚs)Ú	bent_overr   )Úspread_legsr   )Úlooking_backÚq)Ú	all_foursr   )Úgrabbingr   )Ú
doggystyleÚe)Ú
prone_boner   )Úcowgirl_positionr   )Úreverse_cowgirl_positionr   )Ú
missionaryr   )z.jpgz.jpegz.pngz.webpz.bmp)Úgameplay_mechanicsÚmultiple_viewsÚcomicÚpanelÚcommentary_requestÚ
translatedÚuntranslatable_commentaryÚenglish_textÚchinese_textÚkorean_textÚscanÚadvertisementÚproduct_placementÚcharacter_sheetÚheight_chartÚ	compositeÚloopÚanimatedÚ	watermarkÚweibo_usernameÚweibo_watermarkÚpixiv_idÚ	signatureÚusernameÚartist_requestÚ
commission)ÚpostÚposts)ÚidÚmd5ÚratingÚ	tag_countÚscoreÚ	fav_countÚ
is_pendingÚ
is_flaggedÚ	is_bannedÚfile_extÚimage_widthÚimage_heightÚlarge_file_urlÚfile_urlÚtag_string_generalÚtag_string_characterÚtag_string_copyrightÚtag_string_artistÚsourcec                 ó
  — dt         |||dz  fz  }| j                  |d¬«      }|j                  «        g }|j                  «       D ]º  }|j                  d«      s|j                  d«      rŒ&|j                  d«      xs dj	                  «       }t        |«      d	kD  rŒXt        d
„ |D «       «      dk\  rŒn|j                  dd«      dk  r|j                  dd«      dk  rŒ™|j                  |«       t        |«      |k\  sŒ¹ |S  |S )z8n posts de Danbooru para ese tag y rating, ya filtrados.z %s?tags=%s%%20rating:%s&limit=%dé   é   ©Útimeoutr>   r?   rE   Ú é-   c              3   ó2   K  — | ]  }|t         v sŒd –— Œ y­w)é   N)ÚBASURA)Ú.0Úts     úEngine/danbooru_refs.pyÚ	<genexpr>zbuscar.<locals>.<genexpr>O   s   è ø€ Ð-™#�Q ¤f¢Œq™#ùs   ‚�r;   r   é   r<   )ÚAPIÚgetÚraise_for_statusÚjsonÚsplitÚlenÚsumÚappend)	ÚsesÚtagr9   ÚnÚurlÚrÚoutÚpÚgens	            rV   Úbuscarri   C   sô   € à
,´°S¸&À!ÀaÁ%Ð/HÑ
H€CØ�‰�˜RˆÓ €AØ×ÑÔØ
€CØ�V‰VŽXˆØ�5‰5�Ô !§%¡%¨Ô"4ØØ�u‰uÐ)Ó*Ò0¨b×7Ñ7Ó9ˆÜˆs‹8�bŠ=ØÜÑ-™#Ó-Ó-°Ò2ØØ�5‰5�˜!Ó˜qÒ  Q§U¡U¨;¸Ó%:¸QÒ%>ØØ�
‰
�1ŒÜˆs‹8�q‹=ØØ€Jð ð €Jó    c                  ó®	  — t        j                  d¬«      } | j                  dt        dd¬«       | j                  dd¬	«       | j	                  «       }t        j                  «       }t        |j                  d
<   |j                  st        j                  dd¬«       t        «       g }}t        D ]½  \  }}	 t        ||||j                  «      }d}	|D ]‡  }
|
d   |v rŒ|
j%                  d«      s|
j%                  d«      rŒ.d|
j%                  d«      xs dj'                  «       z   t(        vrŒ[|j+                  |
d   «       |	dz  }	|j-                  |||
f«       Œ‰ t#        d|||	fz  «       Œ¿ t#        dt/        |«      z  «       |j                  rj|d d D ]a  \  }}}
|
d   xs dj1                  «       }t#        d|||
d   |
d   |
d   |
d    xs d!fz  «       t#        d"d#j3                  |d d$ «      z   «       Œc y g }t5        |d«      D �]‘  \  }\  }}}
|
j%                  d%«      xs |
j%                  d&«      }|
j%                  d«      xs d'}|
d   ›d(|›d(|›d|›�}t        |z  }	 |j%                  |d)¬*«      }|j7                  «        |j9                  |j:                  «       |j=                  d,«      }|j?                  d#j3                  |
d   xs dj1                  «       «      d-¬.«       |j-                  ||
d   |||
d/   |
d0   |
d   d1|
d   |
d   fz  |
d    |
d2   |
d3   |
j%                  d4«      ||
d   xs dj1                  «       d5œ«       t#        d6|t/        |«      |t/        |jA                  «       «      d7z  fz  «       tC        jD                  d8«       �Œ” tG        jH                  «       jK                  d9«      }t        d:|› d;�z  }|j?                  tM        jN                  |d<d¬=«      d-¬.«       t#        d>t/        |«      t        fz  «       t#        d?|jP                  z  «       i }|D ]   }|j%                  |d@   d«      dz   ||d@   <   Œ" t#        dA|z  «       t#        dB«       t#        dC«       t#        dD«       y # t         $ r}t#        d|›d|›d|›�«       Y d }~�Œød }~ww xY w# t         $ r}t#        d+|›d|›�«       Y d }~�ŒÅd }~ww xY w)ENz Descarga referencias de Danbooru)Údescriptionz--limité   u&   imagenes por busqueda (x15 bÃºsquedas))ÚtypeÚdefaultÚhelpz	--dry-runÚ
store_true)Úactionz
User-AgentT)ÚparentsÚexist_okz
  [FALLO] z rating:z -> r   r7   r>   r?   Ú.r@   rO   rR   z  %-26s rating:%s  %d utilesz
  total unicos: %dé   rE   z*
  [%s rating:%s] %d tags, %dx%d, autor=%sr:   rA   rB   rH   Ú?z    Ú é   rC   rD   ÚjpgÚ_é<   rM   z  [FALLO descarga] z.txtzutf-8)Úencodingr;   r<   z%dx%drF   rG   rI   )ÚarchivoÚpost_idÚbusquedar9   r;   r<   r:   Ú
resolucionÚartistÚ	characterÚ	copyrightrI   rd   Údanbooru_tagsz  [%2d/%2d] %-34s %6.0f KBi   gš™™™™™Ù?z%Y%m%d_%H%M%SÚdanbooru_manifest_z.jsonF)Úensure_asciiÚindentz
[OK] %d imagenes -> %sz[OK] %sr9   z    por rating: %sz.
  siguiente paso: taggear con WD14 y compararzb    python Engine/wd14_tagger.py --folder Archivos/wd14/danbooru --out Archivos/wd14/tags_danbooruz&    python Engine/comparar_danbooru.py))ÚargparseÚArgumentParserÚadd_argumentÚintÚ
parse_argsÚrequestsÚSessionÚUAÚheadersÚdry_runÚDESTÚmkdirÚsetÚ	BUSQUEDASri   ÚlimitÚ	ExceptionÚprintrZ   ÚlowerÚIMG_EXTÚaddr`   r^   r]   ÚjoinÚ	enumerater[   Úwrite_bytesÚcontentÚwith_suffixÚ
write_textÚ
read_bytesÚtimeÚsleepr   ÚnowÚstrftimer\   ÚdumpsÚname)ÚapÚargsra   ÚvistoÚfilasrb   r9   r6   r   Ún_okrg   rh   ÚmanifestÚird   Úextr©   Údestre   ÚtxtÚstampÚmanÚpor_rÚms                           rV   Úmainr¸   Y   sÑ  € Ü	×	 Ñ	 Ð-OÔ	P€BØ‡O�O�I¤C°ØAð ô Cà‡O�O�K¨€OÔ5Ø�=‰=‹?€Dä
×
Ñ
Ó
€CÜ "€C‡K�K�Ñà�<Š<Ü�
‰
˜4¨$ˆ
Ô/ä“5˜"ˆ5€Eß ‰ˆˆVð	Ü˜3  V¨T¯Z©ZÓ8ˆEð ˆÛˆAØ�‰w˜%ÑØØ�u‰u�\Ô" a§e¡e¨KÔ&8Øà�q—u‘u˜ZÓ(Ò.¨B×5Ñ5Ó7Ñ7ÄÑGØØ�I‰I�a˜‘gÔØ�A‰IˆDØ�L‰L˜#˜v qÐ)Õ*ð ô 	Ð,°°V¸TÐ/BÑBÕCð% !ô( 
Ð
 ¤3 u£:Ñ
-Ô.Ø‡|‚|Ø# C R›j‰NˆC�˜ØÐ)Ñ*Ò0¨b×7Ñ7Ó9ˆCÜÐ?Ø�V˜Q˜{™^¨Q¨}Ñ-=Ø�.Ñ! 1Ð%8Ñ#9Ò#@¸SðCBñ Bô Cô �&˜3Ÿ8™8 C¨¨ HÓ-Ñ-Õ.ð )ð 	à€HÜ(¨°×2ÑˆÑˆC�˜à�e‰eÐ$Ó%Ò:¨¯©¨zÓ):ˆØ�e‰e�JÓÒ( 5ˆØ ! $£ªªf±cÐ:ˆÜ�d‰{ˆð	Ø—‘˜ R�Ó(ˆAØ×ÑÔ Ø×Ñ˜QŸY™YÔ'ð ×Ñ˜vÓ&ˆØ�‰�s—x‘x Ð#7Ñ!8Ò!>¸B× EÑ EÓ GÓHØ 'ð 	ô 	)ð 	�‰Ø¨¨$©¸SØ q¨¡zÀÀ+ÁØ˜;™Ø! Q }Ñ%5°q¸Ñ7HÐ$IÑIØÐ+Ñ,¸1Ð=SÑ;TØÐ1Ñ2¸a¿e¹eÀH»oØØÐ 4Ñ5Ò;¸×BÑBÓDñ	
ô 		ô 	Ð*ØŒs�5‹z˜4¤ T§_¡_Ó%6Ó!7¸$Ñ!>ð.@ñ @ô 	Aä�
‰
�3Žð?  3ôB �L‰L‹N×#Ñ# OÓ4€EÜ
Ð% e W¨EÐ2Ñ
2€CØ‡N�N”4—:‘:˜h°UÀ1ÔEØ#ð ô %ô 
Ð
$¬¨H«´tÐ'<Ñ
<Ô=Ü	ˆ)�c—h‘hÑ
ÔØ€EÛˆØ"ŸY™Y q¨¡{°AÓ6¸Ñ:ˆˆa�‰kÒð ä	Ð
 Ñ
&Ô'Ü	Ð
;Ô<Ü	ð .ô /ä	Ð
2Õ3øôW ò 	Ý²CºÁÐCÔDÝûð	ûôL ò 	Ý²4¹Ð;Ô<Ýûð	ús0   Â6RÉ(>R/Ò	R,ÒR'Ò'R,Ò/	SÒ8SÓSÚ__main__)Ú__doc__r‰   r\   r¤   r   Úpathlibr   rŽ   Ú__file__ÚresolveÚparentÚBASE_DIRr“   rY   r�   r–   r›   rS   ÚPOSTSÚPOST_FIELDSri   r¸   Ú__name__© rj   rV   Ú<module>rÄ      sŸ   ðñó* Û Û Ý Ý ã á�‹>×!Ñ!Ó#×*Ñ*×1Ñ1€Ø�*Ñ˜vÑ%¨
Ñ2€Ø-€Ø<€ò€	ð 5€ð
C€ð 	€ðF€òò,\4ð~ ˆzÒÙ…Fð rj   