
     js                        d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
mZ dZdZ ed	
           G d d                      Zd&dZd'dZd(dZdddd)d Zd*d#Zd+d$Zd%S ),zOContent preview approval package combining MP4 preview and social draft review.    )annotations)	dataclass)Path)ValidationResult)SocialMediaDraftvalidate_social_media_draft)publishposti   T)frozenc                  ~    e Zd ZU 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Zded<   dS )ContentPreviewApprovalPackagestrcandidate_idpreview_video_pathsocial_review_texttuple[str, ...]approval_commandsdeapproval_languageenfinal_video_languageTboolrequires_human_approval side_effectsexternal_callsN)	__name__
__module____qualname____annotations__r   r   r   r   r   r       T/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/autoshorts/preview/package.pyr   r      s         &&&&!!!!! $$$$$$((((($&L&&&&&(N((((((r!   r   valuer   returnr   c                0    | pd                                  S )N )strip)r#   s    r"   	_is_blankr(      s    ""$$$$r!   platformc                <    | dk    rdS | dk    rdS | dk    rdS d|  S )NyoutubezFreigabe YouTubetiktokzFreigabe TikTok	instagramzFreigabe Instagramz	Freigabe r   )r)   s    r"   _platform_approval_commandr.       sC    9!!8  ;##!x!!!r!   draftr   r   c                P    g t          d | j        D                       dddR S )Nc              3  4   K   | ]}t          |          V  d S N)r.   ).0r)   s     r"   	<genexpr>z%_approval_commands.<locals>.<genexpr>,   s+      UU*844UUUUUUr!   Freigabe alleAblehnenu   Ändern: <requested change>)tuple	platforms)r/   s    r"   _approval_commandsr9   *   sN    
UUU_UUU
U
U 	 	&	  r!   r   r   )r   r   r   
str | Pathr   r   r   c                <   t          |           }|j        s't          d                    |j                            t          |          rt          d          t          |          }|                                st          d          |j        dk    rt          d          t          | j
        t          |          |t          |           ||ddd	  	        }t          |          }|j        s't          d                    |j                            |S )	zSBuild a side-effect-free approval package from MP4 preview plus social review text.; zsocial_review_text is requiredpreview video path must exist.mp4zpreview video path must be .mp4Tr   )	r   r   r   r   r   r   r   r   r   )r   is_valid
ValueErrorjoinerrorsr(   r   existssuffixr   r   r   r9   )validate_content_preview_approval_package)	r/   r   r   r   r   draft_validation
video_pathpackage
validations	            r"   &build_content_preview_approval_packagerJ   3   s%    3599$ =#3#:;;<<<#$$ ;9:::())J :8999F"":;;;+'z??-,U33+1 $
 
 
G ;7CCJ 7:#455666Nr!   rH   r   c                    g } j          j         j         j         j        d                                D ],\  }}t          |          r|                    | d           - j        r/ j                            d          s|                    d            j        r;t           j                  
                                s|                    d            j        s|                    d           n3t          d  j        D                       r|                    d           d	 j        vr|                    d
            j        s|                    d            j        r|                    d            j        r|                    d           t           fdt           D                       r|                    d           t#          | t%          |                    S )N)r   r   r   r   r   z is requiredr>   z%preview_video_path must end with .mp4r=   z)at least one approval command is requiredc              3  4   K   | ]}t          |          V  d S r2   )r(   r3   commands     r"   r4   z<validate_content_preview_approval_package.<locals>.<genexpr>l   s*      IIGYwIIIIIIr!   z#approval commands must not be blankr5   z!Freigabe alle command is requiredzhuman approval is requiredz3content preview packages must not have side effectsz5content preview packages must not call external toolsc              3  N   K   | ]}|j                                         v V   d S r2   )r   casefold)r3   wordrH   s     r"   r4   z<validate_content_preview_approval_package.<locals>.<genexpr>v   s7      
]
]T47-66888
]
]
]
]
]
]r!   z@social_review_text must not contain publish/post action language)r?   rB   )r   r   r   r   r   itemsr(   appendendswithr   rC   r   anyr   r   r   _FORBIDDEN_ACTION_WORDSr   r7   )rH   rB   
field_namer#   s   `   r"   rE   rE   Z   s   F,%8%8$6 ' <  egg7 7
E U 	7MMZ555666! ?'*D*M*Mf*U*U ?=>>>! 7$w/I*J*J*Q*Q*S*S 75666$ =ABBBB	IIw/HIII	I	I =;<<<g7779:::* 42333 MKLLL OMNNN

]
]
]
]E\
]
]
]]] ZXYYYZfFFFFr!   c                   t          |           }|j        s't          d                    |j                            d                    d | j        D                       }d                    ddd| j         d| j         d| j         d	| j	         d
dddd|d| j
        f          }t          |          t          k    rt          d          |S )zBRender the combined preview package as a Telegram-safe text block.r<   
c              3      K   | ]	}d | V  
dS )z- Nr   rM   s     r"   r4   z7render_content_preview_approval_text.<locals>.<genexpr>   s(      VVn7nnVVVVVVr!   z## Content Preview Reviewr&   zCandidate: zVideo preview: zApproval preview language: zFinal video language: zRequires human approval: yeszSide effects: nonezExternal calls: nonezApproval commands:z<content preview approval text exceeds Telegram message limit)rE   r?   r@   rA   rB   r   r   r   r   r   r   len_TELEGRAM_MESSAGE_LIMIT)rH   rI   command_linestexts       r"   $render_content_preview_approval_textr_   |   s     ;7CCJ 7:#455666IIVVG<UVVVVVM99'0'.00:g8::E'*CEECW%ACC* " &	
 D$ 4yy***WXXXKr!   N)r#   r   r$   r   )r)   r   r$   r   )r/   r   r$   r   )r/   r   r   r:   r   r   r   r   r   r   r$   r   )rH   r   r$   r   )rH   r   r$   r   )__doc__
__future__r   dataclassesr   pathlibr   autoshorts.ideas.candidater   autoshorts.social.draftr   r   rV   r\   r   r(   r.   r9   rJ   rE   r_   r   r!   r"   <module>rf      sS   U U " " " " " " ! ! ! ! ! !       7 7 7 7 7 7 Q Q Q Q Q Q Q Q-   $	) 	) 	) 	) 	) 	) 	) 	)% % % %" " " "    " $$ $ $ $ $ $NG G G GD     r!   