Ë
    Pjn  ã                   ó€  — d Z ddlmZmZmZmZmZ ddlmZ ddl	m
Z
 ddlZ e
d«      j                  «       Z ee«      Z eeddd	d
gii¬«       de
defd„Zde
de
dz  fd„Zdefd„Zd!dedededz  fd„Zej-                  dddi¬«      ej-                  d«      d„ «       «       Zedk(  rej1                  ddd¬ «       yy)"u¿  fearx-photos.sbxg.win ì •ì � íŒŒì�¼ ì„œë²„.

`/insta/{thread_id}/{nn}_image_{i}.jpg` í˜•íƒœì�˜ instagram thread ì‚¬ì§„ì�„ ë‹¨ì²¼ë¦°
(`https://danchelin.fearx.gg/`) ë°� bootcamp(`https://bootcamp.fearx.gg/`)ì—�
ì„œë¹™. ë³¸ ì„œë²„ëŠ” 8094ì—� ë°”ì�¸ë“œë�˜ê³  cloudflared-fearx-photos í„°ë„�ì�´ ì™¸ë¶€ ë…¸ì¶œ.

2026-05-13 P1 ë‹¨ì²¼ë¦° ì‚¬ì§„ ìµœì �í™”:
- ëª¨ë“  .jpg ì˜†ì—� .webp variant (`scripts/convert_to_webp.py`) ì‚¬ì „ ìƒ�ì„±ë�¨
- ìš”ì²­ì�´ `*.jpg` + `Accept: image/webp` í—¤ë�” + ë�™ëª… `.webp` ì¡´ìž¬ + size > 0
  ì�´ë©´ .webpë¥¼ image/webp MIMEìœ¼ë¡œ ì�‘ë‹µ. URLì�€ ê·¸ëŒ€ë¡œ .jpg ìœ ì§€
- ì�‘ë‹µì—” í•­ìƒ� `Vary: Accept` í—¤ë�” (CDN ìº�ì‹± ì •í•©)
- 0-byte/ëˆ„ë�½ webpëŠ” ìž�ë�™ìœ¼ë¡œ jpg í�´ë°±
é    )ÚFlaskÚsend_from_directoryÚabortÚrequestÚmake_response)ÚCORS)ÚPathNzC:\fearx-photosz/*Úoriginszhttps://danchelin.fearx.ggzhttps://bootcamp.fearx.gg)Ú	resourcesÚpÚreturnc                 ó  — t        t        j                  | «      «      }g }| t        k7  r|j	                  d«       |D ]6  }| |z  }||j                  «       rdndz   }|j	                  d|› d|› d�«       Œ8 dj                  |«      S )Nz<a href="../">../</a>Ú/Ú z	<a href="z">z</a>z<br>)ÚsortedÚosÚlistdirÚROOTÚappendÚis_dirÚjoin)r   ÚitemsÚlinksÚnameÚfullÚhrefs         úC:\fearx-photos\serve.pyÚ_listingr      s€   € Ü”2—:‘:˜a“=Ó!€EØ€EØŒD‚yØ�‰Ð,Ô-ÛˆØ�4‰xˆØ˜dŸk™kœm‘s°Ñ4ˆØ�‰�y   b¨¨¨dÐ3Õ4ð ð �;‰;�uÓÐó    Újpgc                 óà   — | j                   j                  «       dk7  ry| j                  d«      }	 |j                  «       r|j	                  «       j
                  dkD  r|S y# t        $ r Y yw xY w)z?Return the .webp path if it exists and is non-empty, else None.z.jpgNz.webpr   )ÚsuffixÚlowerÚwith_suffixÚis_fileÚstatÚst_sizeÚOSError)r    Úwebps     r   Ú_webp_siblingr*   '   sg   € à
‡z�z×ÑÓ˜VÒ#ØØ�?‰?˜7Ó#€DðØ�<‰<Œ>˜dŸi™i›k×1Ñ1°AÒ5ØˆKð øô ò Ùðús   ±.A! Á!	A-Á,A-c                  óJ   — t         j                  j                  dd«      } d| v S )NÚAcceptr   ú
image/webp)r   ÚheadersÚget)Úaccepts    r   Ú_accepts_webpr1   4   s#   € Ü�_‰_× Ñ  ¨2Ó.€FØ˜6Ð!Ð!r   Ú	directoryÚfilenameÚmimetypec                 ó^   — |rt        | ||¬«      }nt        | |«      }d|j                  d<   |S )z9send_from_directory wrapper that tacks on `Vary: Accept`.©r4   r,   ÚVary)r   r.   )r2   r3   r4   Úresps       r   Ú_send_with_varyr9   9   s2   € áÜ" 9¨hÀÔJ‰ä" 9¨hÓ7ˆØ#€D‡L�L�ÑØ€Kr   r   Úsubpathr   )Údefaultsz/<path:subpath>c                 óè  — | rt         | z  j                  «       nt         }	 |j                  t         «       |j                  «       rt        |«      S |j                  «       rmt        «       rt        |«      nd }|�+t        t        |j                  «      |j                  d¬«      S t        t        |j                  «      |j                  «      S t	        d«       y # t        $ r t	        d«       Y Œºw xY w)Ni“  r-   r6   i”  )r   ÚresolveÚrelative_toÚ
ValueErrorr   r   r   r%   r1   r*   r9   ÚstrÚparentr   )r:   Útargetr)   s      r   ÚserverC   C   s¸   € ñ ,3Œd�W‰n×%Ñ%Ô'¼€FðØ×Ñœ4Ô ð ‡}�}„Ü˜ÓÐØ‡~�~Ôä(5¬Œ}˜VÔ$¸TˆØÐÜ"¤3 t§{¡{Ó#3°T·Y±YÈÔVÐVÜœs 6§=¡=Ó1°6·;±;Ó?Ð?Ü	ˆ#…Jøô ò ÜˆcŽ
ðús   ¡C ÃC1Ã0C1Ú__main__z0.0.0.0iž  F)ÚhostÚportÚdebug)N)Ú__doc__Úflaskr   r   r   r   r   Ú
flask_corsr   Úpathlibr	   r   r=   r   Ú__name__Úappr@   r   r*   Úboolr1   r9   ÚrouterC   Úrun© r   r   Ú<module>rR      s  ðñ÷ LÕ KÝ Ý Û 	áÐÓ×'Ñ'Ó)€ÙˆHƒo€Ù €S�U˜YØ Øð)ð ð õ ð	�ð 	˜ó 	ð
�tð 
  t¡ó 
ð"�tó "ñ
˜sð ¨cð ¸SÀ4¹Zó ð ‡�ˆ3˜) R˜€Ó)Ø‡�ÐÓñó ó *ðð" ˆzÒØ‡G�G� ¨U€GÕ3ð r   