
    j                        d Z ddlmZ ddlmZ ddlZddlmZmZ dddd	Z	 ej
        d
          Z ed           G d d                      ZddZddZddZd dZd!dZdS )"z6Approval-first package for final-near rendered videos.    )annotations)	dataclassN)SUPPORTED_PLATFORMSValidationResultYouTube ShortsTikTokzInstagram Reels)youtubetiktok	instagramz^[a-fA-F0-9]{64}$T)frozenc                      e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   dZded<   dZded<   dZded<   dZded<   dS )FinalVideoApprovalPackagestrcandidate_id
media_pathchecksum_sha256ztuple[str, ...]	platformsplatform_labelstitle_variantscaptionhashtagshookintduration_seconds
resolutionquality_notesdeapproval_languageenfinal_video_languageTboolrequires_human_approval side_effectsN)__name__
__module____qualname____annotations__r   r    r"   r$   r#       Z/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/autoshorts/social/final_approval.pyr   r      s         OOO$$$$####LLLIIIOOO!!!!! $$$$$$((((($&L&&&&&&r)   r   valuer   returnr!   c                0    | pd                                  S )N )strip)r+   s    r*   	_is_blankr0   &   s    ""$$$$r)   r   r   c                    t          di ddd| d|ddddd	d
dddddddddddddddddddd}t          |          }|j        s't          d                    |j                            |S ) Nr   z%truetrace-ai-automation-quiet-rot-38sr   r   r   )r	   r
   r   )r   r   r   )z6Your AI Automation Works Until One Weird Email Arrivesz0Why AI Automations Break When Real Life Shows Upr   zYour AI automation does not need a smarter prompt first. It needs a simple plan for weird inputs: what goes through, what gets reviewed, and what must stop.r   )z#AIz
#AISystemsz	#Workflowr   zMYour AI automation works perfectly in the demo. Then one weird email arrives.r   %   r   	1080x1920r   zBeginner-friendly weird-email framing; renderer-owned labels and captions; scene-specific text-free ChatGPT Image backgrounds; compact phrase-boundary subtitles.r   r   r    r   r"   Tr$   r#   ; )r   %validate_final_video_approval_packageis_valid
ValueErrorjoinerrors)r   r   package
validations       r*   2build_truetrace_weird_email_final_approval_packager<   *   s!   '   <<: ( ('	
 54
 
I I 43 ]\  !" ;#&e e', $-. "T/0 !%12 R3G6 7w??J 7:#455666Nr)   r:   r   c           
        g }| j         | j        | j        | j        | j        | j        | j        | j        | j        d		                                D ],\  }}t          |          r|                    | d           -| j        r/| j                            d          s|                    d           | j        r4t                              | j                  s|                    d           | j        s|                    d           | j        D ]#}|t           vr|                    d|            $t#          | j                  t#          | j                  k    r|                    d           t'          | j        | j                  D ]B\  }}t(                              |          }|!||k    r|                    d	| d
|            C| j        s|                    d           n3t/          d | j        D                       r|                    d           | j        s|                    d           n3t/          d | j        D                       r|                    d           d| j        cxk    rdk    sn |                    d           | j        dk    r|                    d           | j        dk    r|                    d           | j        dk    r|                    d           | j        s|                    d           | j        r|                    d           t9          | t;          |                    S )N)	r   r   r   r   r   r   r   r   r    z is requiredz.mp4zmedia_path must end with .mp4z1checksum_sha256 must be a 64-character hex stringz!at least one platform is requiredzunsupported platform: z$platform_labels must match platformszplatform label for z	 must be z&at least one title variant is requiredc              3  4   K   | ]}t          |          V  d S Nr0   .0titles     r*   	<genexpr>z8validate_final_video_approval_package.<locals>.<genexpr>m   s*      BB%YuBBBBBBr)   z title variants must not be blankz at least one hashtag is requiredc              3  4   K   | ]}t          |          V  d S r?   r@   )rB   hashtags     r*   rD   z8validate_final_video_approval_package.<locals>.<genexpr>q   s*      @@GYw@@@@@@r)   zhashtags must not be blank
      z+duration_seconds must be between 10 and 180r3   zresolution must be 1080x1920r   zapproval_language must be der   zfinal_video_language must be enzhuman approval is requiredz8final video approval packages must not have side effects)r6   r9   )r   r   r   r   r   r   r   r   r    itemsr0   appendendswith
_SHA256_REmatchr   r   lenr   zip_PLATFORM_LABELSgetr   anyr   r   r"   r$   r   tuple)r:   r9   
field_namer+   platformlabelexpecteds          r*   r5   r5   L   s   F,("2?( .$6 ' <
 
 egg7 7
E U 	7MMZ555666 7'"4"="=f"E"E 75666 Kz'7'78O'P'P KIJJJ ;9:::% ? ?...MM=8==>>>
7"##s7+<'='===<===w0'2IJJ O O%#''11EX$5$5MMMMM8MMNNN! :>????	BB7+ABBB	B	B :8999 489999	@@w/?@@@	@	@ 42333)0000S0000CDDD[((4555 D((4555#t++7888* 42333 RPQQQZfFFFFr)   rU   c                <    | dk    rdS | dk    rdS | dk    rdS d|  S )Nr	   zFreigabe YouTuber
   zFreigabe TikTokr   zFreigabe Instagramz	Freigabe r#   )rU   s    r*   _platform_commandrY      sC    9!!8  ;##!x!!!r)   c                0   t          |           }|j        s't          d                    |j                            d                    d | j        D                       }d                    d g d | j        D             dddR D                       }d                    d	d
d| j         d| j         d| j	         dd                    | j
                   d| j         d| j         d| j         dd| j         d
d| j        d
d|d
d| j        d
dd                    | j                   d| j         ddd
d|f          }|                                }d|v sd|v rt          d           t)          |          d!k    rt          d"          |S )#Nr4   
c              3      K   | ]	}d | V  
dS z- Nr#   rA   s     r*   rD   z5render_final_video_approval_review.<locals>.<genexpr>   s(      HH|E||HHHHHHr)   c              3      K   | ]	}d | V  
dS r]   r#   )rB   commands     r*   rD   z5render_final_video_approval_review.<locals>.<genexpr>   s<         	W     r)   c              3  4   K   | ]}t          |          V  d S r?   )rY   )rB   rU   s     r*   rD   z5render_final_video_approval_review.<locals>.<genexpr>   s+      LLh))LLLLLLr)   zFreigabe alleAblehnenu    Ändern: <gewünschte Änderung>z## Final Video Reviewr.   zCandidate: zMedia: zSHA256: zPlatforms: z, zLanguage: final=z	, review=z
Duration: szResolution: zHook:zTitle variants:zCaption:z
Hashtags:  zQuality notes: zRequires human approval: yeszSide effects: nonezApproval commands:publishpostz,final video review must not imply publishingi   z)final video review exceeds Telegram limit)r5   r6   r7   r8   r9   r   r   r   r   r   r   r    r   r   r   r   r   r   r   casefoldrN   )r:   r;   titlescommandstextlowereds         r*   "render_final_video_approval_reviewrk      s   6w??J 7:#455666YYHH1GHHHHHFyy  
LL':KLLL

 
 /	
 
    H 99#0'.00*g(**0w.00>$))G$;<<>>aw;aagF_aa41444/7-//LO5'"233555g355*  5	
 D< mmooGGv00GHHH
4yy4DEEEKr)   )r+   r   r,   r!   )r   r   r   r   r,   r   )r:   r   r,   r   )rU   r   r,   r   )r:   r   r,   r   )__doc__
__future__r   dataclassesr   reautoshorts.ideas.candidater   r   rP   compilerL   r   r0   r<   r5   rY   rk   r#   r)   r*   <module>rr      s2   < < " " " " " " ! ! ! ! ! ! 				 L L L L L L L L  "  
 RZ,--
 $' ' ' ' ' ' ' '&% % % %   D3G 3G 3G 3Gl" " " "2 2 2 2 2 2r)   