
    Bj                       d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	  ed           G d d	                      Z
 ed           G d
 d                      Zd#dZd$dZd%dZd&dZd&dZd'dZd(dZd)d Zd*d!Zd"S )+z5Manual platform copy packs for phase-1 human uploads.    )annotations)	dataclass)ValidationResult)SocialMediaDraftvalidate_social_media_draftT)frozenc                  L    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   d	S )
ManualPlatformPoststrplatformtitledescriptiontuple[str, ...]hashtagstagsinstructionsN)__name__
__module____qualname____annotations__     Z/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/autoshorts/social/manual_posting.pyr
   r
      sT         MMMJJJr   r
   c                  b    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S )ManualPostingPackr   candidate_idphase
video_pathztuple[ManualPlatformPost, ...]platform_postsTboolrequires_human_manual_uploadr   r   side_effectsexternal_callsN)r   r   r   r   r!   r"   r#   r   r   r   r   r      sp         JJJOOO2222)- ----$&L&&&&&(N((((((r   r   valuer   returnr    c                0    | pd                                  S )N )strip)r$   s    r   	_is_blankr)       s    ""$$$$r   hashtagc                P    |                      d                                          S )N#)lstripr(   )r*   s    r   _normalize_hashtag_to_tagr.   $   s     >>#$$&&&r   r   r   c                ,    d                     |           S )N )join)r   s    r   _hashtag_blockr2   (   s    88Hr   draftr   c                    d                     d | j                                        | j                                        t	          | j                  fD                       S )Nz

c              3     K   | ]}||V  	d S Nr   ).0parts     r   	<genexpr>z'_youtube_description.<locals>.<genexpr>-   s>        
      r   )r1   captionr(   ctar2   r   )r3   s    r   _youtube_descriptionr<   ,   se    ;;   M!!IOO5>**
     r   c                    | j                                          dt          | j                                                   }|d d         S )Nr0   i  )r:   r(   r2   r   )r3   r:   s     r   _tiktok_captionr>   8   sG    $$&&II)G)GIIOOQQG5D5>r   r   c           
        | j         d         }|dk    rCt          d|t          |           | j        t	          d | j        D                       d          S |dk    r't          d|t          |           | j        dd          S |d	k    r't          d	|t          |           | j        dd
          S t          d|           )Nr   youtubec              3  4   K   | ]}t          |          V  d S r6   )r.   )r7   r*   s     r   r9   z%_post_for_platform.<locals>.<genexpr>E   s+      XXg099XXXXXXr   z9Manual upload: copy this description into YouTube Shorts.)r   r   r   r   r   r   tiktokr   z-Manual upload: copy this caption into TikTok.	instagramz6Manual upload: copy this caption into Instagram Reels.zunsupported platform: )title_variantsr
   r<   r   tupler>   
ValueError)r3   r   r   s      r   _post_for_platformrG   =   s     #E9!,U33^XXXXXXXT
 
 
 	
 8!'..^H
 
 
 	
 ;! '..^Q
 
 
 	
 8h88
9
99r   r   c          	     n    t                     }|j        s't          d                    |j                            t           j        d|t           fd j        D                       ddd          }t          |          }|j        s't          d                    |j                            |S )N; manual_postingc              3  8   K   | ]}t          |          V  d S r6   )rG   )r7   r   r3   s     r   r9   z,build_manual_posting_pack.<locals>.<genexpr>e   s.      aaX/x@@aaaaaar   Tr   )r   r   r   r   r!   r"   r#   )
r   is_validrF   r1   errorsr   r   rE   	platformsvalidate_manual_posting_pack)r3   r   draft_validationpack
validations   `    r   build_manual_posting_packrS   ]   s    2599$ =#3#:;;<<<'aaaaQVQ`aaaaa%)  D .d33J 7:#455666Kr   rQ   r   c                   g }t          | j                  r|                    d           | j        dk    r|                    d           t          | j                  r|                    d           | j        s|                    d           | j        D ]}t          |j                  r|                    d           t          |j                  r|                    |j         d           t          |j                  r|                    |j         d           |j	        s|                    |j         d	           t          |j
                  r|                    |j         d
           | j        s|                    d           | j        r|                    d           | j        r|                    d           t          | t          |                    S )Nzcandidate_id is requiredrJ   zphase must be manual_postingzvideo_path is requiredz&at least one platform post is requiredzplatform is requiredz title is requiredz description is requiredz hashtags are requiredz instructions are requiredz*human manual upload is required in phase 1z/manual posting packs must not have side effectsz4manual posting packs must not call external services)rL   rM   )r)   r   appendr   r   r   r   r   r   r   r   r!   r"   r#   r   rE   )rQ   rM   posts      r   rO   rO   p   s   F"## 20111z%%%4555!! 0./// @>???# 
H 
HT]## 	2MM0111TZ   	@MMT]>>>???T%&& 	FMMT]DDDEEE} 	DMMT]BBBCCCT&'' 	HMMT]FFFGGG, DBCCC IGHHH NLMMMZfFFFFr   c                6   t          |           }|j        s't          d                    |j                            dd| j         d| j         ddg}ddd	d
}| j        D ]}|                    d|	                    |j
        |j
                   |j        d|j         d|j        dd                    |j                   d|j        rd                    |j                  nd dg           d                    |                                          S )NrI   z## Manual Posting PackzCandidate: zVideo file: z!No platform upload was performed.r'   zYouTube ShortsTikTokzInstagram Reels)r@   rB   rC   z## zTitle: zDescription:z
Hashtags: r0   zTags: z, zn/a
)rO   rL   rF   r1   rM   r   r   r   extendgetr   r   r   r   r   r   r(   )rQ   rR   lineslabelsrV   s        r   "render_manual_posting_instructionsr^      sI   -d33J 7:#455666 	!)d'))(t((+
E $& F
 # 
 
@fjj>>@@!&$*&& 6SXXdm4466GE49---GG		
 	
 	
 	
 99U!!###r   N)r$   r   r%   r    )r*   r   r%   r   )r   r   r%   r   )r3   r   r%   r   )r3   r   r   r   r%   r
   )r3   r   r   r   r%   r   )rQ   r   r%   r   )rQ   r   r%   r   )__doc__
__future__r   dataclassesr   autoshorts.ideas.candidater   autoshorts.social.draftr   r   r
   r   r)   r.   r2   r<   r>   rG   rS   rO   r^   r   r   r   <module>rd      s   ; ; " " " " " " ! ! ! ! ! ! 7 7 7 7 7 7 Q Q Q Q Q Q Q Q $        $) ) ) ) ) ) ) )% % % %' ' ' '   	 	 	 	   
: : : :@   &G G G G<$ $ $ $ $ $r   