Ë
    ù³j‚	  ã                   óx   — d Z ddlmZ ddlmZ ddlZdZ ed¬«       G d„ d	«      «       Zd
ede	fd„Z
dd„Zdd„Zy)zFCredential-free pipeline primitives for the Shorts automation service.é    )Ú	dataclass)ÚurlparseN))Úhookz'first 3 seconds and immediate curiosity)Ú	retentionz%pacing, payoff, and likely completion)Úclarityz#works without the long-form context)Úshareabilityz&novelty, emotion, and discussion value)Úplatform_fitz%TikTok and YouTube Shorts suitability)Úsafety_rightsz*safety, claims, and source-rights warningsT)Úfrozenc                   óT   — e Zd ZU eed<   eed<   eed<   eed<   eed<   eedf   ed<   y)	Ú
GateResultÚapprovedÚaverageÚmedianÚstrong_ratingsÚsafety.ÚreasonsN)	Ú__name__Ú
__module__Ú__qualname__ÚboolÚ__annotations__ÚfloatÚintÚtupleÚstr© ó    ú"/root/workspace/shorts_pipeline.pyr   r      s*   … àƒNØƒNØƒMØÓØƒMØ�3˜�8‰_Ôr   r   ÚvalueÚreturnc                 ó¾   — t        | j                  «       «      }|j                  dv xr5 t        |j                  «      xr d|j                  v xs d|j                  v S )N>   ÚhttpÚhttpszyoutube.comzyoutu.be)r   ÚstripÚschemer   Únetloc)r    Úparseds     r   Úvalidate_source_urlr)      sp   € Ü�e—k‘k“mÓ$€FØ�=‰=Ð-Ð-ò  J´$°v·}±}Ó2Eò  JÈ=Ð\b×\iÑ\iÐKiò  LIÐmwð  |B÷  |Iñ  |Ið  nIð  Jr   c           
      óÈ  — | D �cg c]  }t        |«      ‘Œ }}t        |«      t        t        «      k7  rt        dt        t        «      › d�«      ‚t	        d„ |D «       «      rt        d«      ‚t        |«      }|d   |d   z   dz  }|d   }g }t        |«      t        |«      z  |k  r|j                  d«       ||dz
  k  r|j                  d	«       t        d
„ |D «       «      dk  r|j                  d«       |dk  r|j                  d«       |r|j                  d«       t        | t        |«      t        |«      z  |t        d„ |D «       «      |t        |«      «      S c c}w )Nz	expected z agent ratingsc              3   ó4   K  — | ]  }|d k  xs |dkD  –— Œ y­w)r   éd   Nr   ©Ú.0Úxs     r   ú	<genexpr>z#evaluate_ratings.<locals>.<genexpr>    s    è ø€ Ò
, ˆ1ˆq‰5Ò�A˜‘GÓÑ
,ùs   ‚z!ratings must be between 0 and 100é   é   éÿÿÿÿzaverage below thresholdzmedian below thresholdc              3   ó&   K  — | ]	  }|d k\  –— Œ y­w©éP   Nr   r-   s     r   r0   z#evaluate_ratings.<locals>.<genexpr>(   s   è ø€ Ò
#�qˆ1��7Ñ
#ùó   ‚é   zfewer than four strong ratingséZ   zsafety/rights score below 90zwarnings require reviewc              3   ó&   K  — | ]	  }|d k\  –— Œ y­wr5   r   r-   s     r   r0   z#evaluate_ratings.<locals>.<genexpr>+   s   è ø€ ÒIbÐVWÈ!ÈrÍ'ÑIbùr7   )
r   ÚlenÚAGENTSÚ
ValueErrorÚanyÚsortedÚsumÚappendr   r   )	ÚscoresÚ	thresholdÚwarningsr/   ÚvaluesÚorderedr   r   r   s	            r   Úevaluate_ratingsrG      s@  € Ø &Ö'˜1Œe�A�hÐ'€FÐ'Ü
ˆ6ƒ{”cœ&“kÒ!Ü˜9¤S¬£[ M°Ð@ÓAÐAÜ
Ñ
, VÔ
,Ô,ÜÐ<Ó=Ð=Ü�V‹n€GØ�a‰j˜7 1™:Ñ%¨Ñ*€FØ�B‰Z€FØ€GÜ
ˆ6ƒ{”S˜“[Ñ  9Ò,¨g¯n©nÐ=VÔ.WØ�	˜A‘Ò˜wŸ~™~Ð.FÔGÜ
Ñ
#˜FÔ
#Ó# aÒ'¨¯©Ð8XÔ)YØ�‚{�G—N‘NÐ#AÔBÙ�—‘Ð 9Ô:Ü˜'�k¤3 v£;´°V³Ñ#<¸fÄcÑIbÐ[aÔIbÓFbÐdjÔlqÐryÓlzÓ{Ð{ùò (s   …Ec                 ó„  — | xs i } t        | j                  dd«      «      t        | j                  d«      xr | j                  d«      «      t        | j                  d«      xr | j                  d«      «      t        | j                  d«      «      t        j                  d«      d ut        j                  d	«      d ud
dœS )NÚ
SOURCE_URLÚ ÚYOUTUBE_CLIENT_IDÚYOUTUBE_CLIENT_SECRETÚTIKTOK_CLIENT_KEYÚTIKTOK_CLIENT_SECRETÚAGENT_API_KEYÚffmpegzyt-dlpF)Úsource_configuredÚyoutube_configuredÚtiktok_configuredÚagent_provider_configuredÚffmpeg_installedÚdownloader_installedÚpublishing_safe)r)   Úgetr   ÚshutilÚwhich)Úenvs    r   Ú	readinessr\   -   s    € Ø
Š)�€Cä0°·±¸ÀrÓ1JÓKÜ" 3§7¡7Ð+>Ó#?Ò#dÀCÇGÁGÐLcÓDdÓeÜ! #§'¡'Ð*=Ó">Ò"bÀ3Ç7Á7ÐKaÓCbÓcÜ%)¨#¯'©'°/Ó*BÓ%CÜ"ŸL™L¨Ó2¸$Ð>Ü &§¡¨XÓ 6¸dÐ BØ ñð r   )éU   r   )N)Ú__doc__Údataclassesr   Úurllib.parser   rY   r<   r   r   r   r)   rG   r\   r   r   r   ú<module>ra      sW   ðÙ LÝ !Ý !Û ð
€ñ �$Ô÷ð ó ððJ˜sð J tó Jó|ô"
r   