Ë
    �›Xjb
  ã                  ó’   — d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlZer	 dZe G d„ d	«      «       Zddd
„Zdd„Zdd„Zy)é    )ÚannotationsN)Ú	dataclass)ÚPath)ÚTYPE_CHECKING)Úurljoinz!ContentPipeline/1.0 (+local cron)c                  ó0   — e Zd ZU ded<   ded<   dZded<   y)ÚFetchedImageÚstrÚpathÚsourceNú
str | NoneÚurl)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   © ó    ú?/var/www/html/content_generation/src/generators/image_source.pyr	   r	      s   … à
ƒIØƒKØ€CˆÔr   r	   c                ó  — | sy	 t        j                  | |dt        id¬«      }|j                  «        |j                  dd }t        ||j                  «      }|sy	 t        j                  ||dt        id¬«      }|j                  «        |j                  j                  d«      xs dj                  d«      d	   j                  «       }|j                  d
«      syt        |j                  «      dk  st        |j                  «      dkD  ryt        |«      }|j                  j!                  dd¬«       |j#                  |j                  «       t%        |j&                  d|¬«      S # t
        $ r Y yw xY w# t
        $ r Y yw xY w)zJTry og:image / twitter:image from the article (editorial / link-back use).Nz
User-AgentT)ÚtimeoutÚheadersÚallow_redirectsi@ zContent-TypeÚ Ú;r   zimage/iˆ  i z )ÚparentsÚexist_okÚnews_og)r   r   r   )ÚrequestsÚgetÚ
USER_AGENTÚraise_for_statusÚtextÚ	ExceptionÚ_extract_image_urlr   r   ÚsplitÚlowerÚ
startswithÚlenÚcontentÚ_ext_from_content_typeÚparentÚmkdirÚwrite_bytesr	   Úname)	r   Údestr   ÚrespÚhtmlÚ	image_urlÚimg_respÚctypeÚexts	            r   Úfetch_news_imager7      si  € áØðÜ�|‰|˜C¨¸<ÌÐ:TÐfjÔkˆØ×ÑÔØ�y‰y˜˜'Ð"ˆô # 4¨¯©Ó2€IÙØðÜ—<‘<ØØØ!¤:Ð.Ø ô	
ˆð 	×!Ñ!Ô#Ø×!Ñ!×%Ñ% nÓ5Ò;¸×BÑBÀ3ÓGÈÑJ×PÑPÓRˆØ×Ñ Ô)ØÜˆx×ÑÓ  5Ò(¬C°×0@Ñ0@Ó,AÀIÒ,MØÜ$ UÓ+ˆØ�‰×Ñ $°ÐÔ6Ø×Ñ˜×)Ñ)Ô*Ü §¡°9À)ÔLÐLøô/ ò Ùðûô0 ò Ùðús1   …>E) ÁA?E8 Ã0E8 ÄAE8 Å)	E5Å4E5Å8	FÆFc                ó¾   — g d¢}|D ]T  }t        j                  || t         j                  «      }|sŒ+t        ||j	                  d«      j                  «       «      c S  y )N)zP<meta[^>]+property=["\']og:image:secure_url["\'][^>]+content=["\']([^"\']+)["\']zP<meta[^>]+content=["\']([^"\']+)["\'][^>]+property=["\']og:image:secure_url["\']zE<meta[^>]+property=["\']og:image["\'][^>]+content=["\']([^"\']+)["\']zE<meta[^>]+content=["\']([^"\']+)["\'][^>]+property=["\']og:image["\']zF<meta[^>]+name=["\']twitter:image["\'][^>]+content=["\']([^"\']+)["\']zF<meta[^>]+content=["\']([^"\']+)["\'][^>]+name=["\']twitter:image["\']é   )ÚreÚsearchÚIr   ÚgroupÚstrip)r2   Úbase_urlÚpatternsÚpatÚms        r   r%   r%   <   sQ   € ò€Hó ˆÜ�I‰I�c˜4¤§¡Ó&ˆÚÜ˜8 Q§W¡W¨Q£Z×%5Ñ%5Ó%7Ó8Ò8ð ð r   c                ó6   — ddddddœ}|j                  | d«      S )Nz.jpgz.pngz.webpz.gif)z
image/jpegz	image/jpgz	image/pngz
image/webpz	image/gif)r    )r5   Úmappings     r   r+   r+   L   s+   € àØØØØñ€Gð �;‰;�u˜fÓ%Ð%r   )é   )r   r
   r0   r   r   ÚintÚreturnzFetchedImage | None)r2   r
   r?   r
   rG   r   )r5   r
   rG   r
   )Ú
__future__r   r:   Údataclassesr   Úpathlibr   Útypingr   Úurllib.parser   r   r!   r	   r7   r%   r+   r   r   r   Ú<module>rM      sN   ðÝ "ã 	Ý !Ý Ý  Ý  ã áØà0€
ð ÷ð ó ðô!óHô &r   