+
    TŎie.                        R t ^ RIHt ^ RIHt ^ RIHtHt ^ RIt^ RIt^ RI	t	 ! R R]
4      t ! R R]
4      t ! R	 R
]
4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]
4      t ! R R]
4      t ! R R]
4      tR# )z:
video uploader that is used to upload video to adaccount
)FacebookError)FacebookRequestError)ABCMetaabstractmethodNc                   4   a  ] tR t^t o RtR tRR ltRtV tR# )VideoUploaderz4
Video Uploader that can upload videos to adaccount
c                    R V n         R # N_sessionselfs   &o/Users/ahmad/.openclaw/workspace/scripts/.venv/lib/python3.14/site-packages/facebook_business/video_uploader.py__init__VideoUploader.__init__   s	        c                    V P                   '       d   \        R4      h\        W4      V n         V P                   P                  4       pRV n         V# )z
Upload the given video file.
Args:
    video(required): The AdVideo object that will be uploaded
    wait_for_encoding: Whether to wait until encoding is finished.
z:There is already an upload session for this video uploaderN)r   r   VideoUploadSessionstart)r   videowait_for_encodingresults   &&& r   uploadVideoUploader.upload   sI     ===L 
 +5D$$&r   r
   N)F)	__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes____classdictcell____classdict__s   @r   r   r      s      r   r   c                   B   a  ] tR t^0t o RR ltR tR tR tR tRt	V t
R# )	r   c                4   Wn         VP                  4       V n        VP                  P                  V9   d*   WP                  P                  ,          V n        R V n        MCVP                  P                  V9   d)   WP                  P                  ,          V n        R V n        VP                  4       V n	        W n
        \        V P                  4      V n        \        V P                  4      V n        \        V P                  4      V n        W@n        W0n        R # r	   )_videoget_api_assured_apiFieldfilepath
_file_path_slideshow_specslideshow_specget_parent_id_assured_account_id_wait_for_encodingVideoUploadStartRequestManager_start_request_manager!VideoUploadTransferRequestManager_transfer_request_managerVideoUploadFinishRequestManager_finish_request_manager_timeout	_interval)r   r   r   intervaltimeouts   &&&&&r   r   VideoUploadSession.__init__2   s    ))+	KK  E)#KK$8$89DO#'D kk((E1#()C)C#DD "DO 668"3&DII'
#
 *KII*
&
 (GII(
$  !r   c                |   V P                   P                  V P                  4       4      P                  4       p\	        VR ,          4      V n        \	        VR,          4      V n        VR,          V n        VR,          pV P                  P                  V P                  4       4       V P                  P                  V P                  4       4      pV P                  '       d7   \        P                  V P                  W P                   V P"                  R7       VP                  4       P%                  4       pW$R&   VR V# )start_offset
end_offsetupload_session_idvideo_id)r8   r9   idsuccess)r1   send_requestgetStartRequestContextjsonint_start_offset_end_offset_session_idr3   getTransferRequestContextr5   getFinishRequestContextr/   VideoEncodingStatusCheckerwaitUntilReadyr'   r7   r6   copy)r   start_responser?   responsebodys   &    r   r   VideoUploadSession.startN   s   44AA'')

$& 	 !!?@~l;<)*=>!*- 	&&33**,	

 //<<((*
 """&55		8nndmm 6 
 }}##%T
Or   c                    \        4       pV P                  '       d/   \        P                  P	                  V P                  4      Vn        V P                  Vn        V# r	   )VideoUploadRequestContextr*   ospathgetsize	file_sizer.   
account_idr   contexts   & r   rC   )VideoUploadSession.getStartRequestContextn   s?    +-OOO " @G!--r   c                .   \        4       pV P                  Vn        V P                  Vn        V P
                  Vn        V P                  '       d   V P                  Vn        V P                  '       d   V P                  Vn
        V P                  Vn        V# r	   )rS   rH   
session_idrF   r<   rG   r=   r*   	file_pathr+   r,   r.   rX   rY   s   & r   rI   ,VideoUploadSession.getTransferRequestContextu   sv    +-!--#11!--OOO $G   %)%9%9G"!--r   c                    \        4       pV P                  Vn        V P                  Vn        V P
                  '       d&   \        P                  ! V P
                  4      Vn        V# r	   )	rS   rH   r]   r.   rX   r*   ntpathbasename	file_namerY   s   & r   rJ   *VideoUploadSession.getFinishRequestContext   sI    +-!--!--OOO & @Gr   )r.   r'   rG   r*   r5   r7   rH   r+   rF   r1   r6   r3   r%   r/   N)F      )r   r   r   r   r   r   rC   rI   rJ   r   r    r!   s   @r   r   r   0   s$     "8@
 r   r   c                   N   a  ] tR t^t o Rt]tR t]R 4       t	]R 4       t
RtV tR# )VideoUploadRequestManagerz%
Abstract class for request managers
c                    Wn         R # r	   r'   r   apis   &&r   r   "VideoUploadRequestManager.__init__   s    	r   c                    R# )z
send upload request
N rY   s   &&r   rB   &VideoUploadRequestManager.send_request       
 	r   c                    R# )z 
get upload params from context
Nro   rY   s   &&r   getParamsFromContext.VideoUploadRequestManager.getParamsFromContext   rq   r   rj   N)r   r   r   r   r   r   __metaclass__r   r   rB   rs   r   r    r!   s   @r   rh   rh      s>      M    r   rh   c                   ,   a  ] tR t^t o R tR tRtV tR# )r0   c                    \        V P                  4      pVP                  V P                  V4      4       VP	                  VP
                  R34      # )z+
send start request with the given context
advideosVideoUploadRequestr'   	setParamsrs   sendrX   r   rZ   requests   && r   rB   +VideoUploadStartRequestManager.send_request   sE    
 %TYY/$33G<=||W//<==r   c                "    R VP                   RR/# )rW   upload_phaser   )rW   rY   s   &&r   rs   3VideoUploadStartRequestManager.getParamsFromContext   s    **G
 	
r   ro   Nr   r   r   r   rB   rs   r   r    r!   s   @r   r0   r0      s     >
 
r   r0   c                   ,   a  ] tR t^t o R tR tRtV tR# )r2   c                   \        V P                  4      pVP                  V n        VP                  V n        VP                  p\        P                  P                  V4      p\        VR,          ^4      p\        VR4      pV P                  V P
                  8w  Ed   VP                  V P                  4       VP                  V P
                  V P                  ,
          4      pV P                  Vn        V P
                  Vn        VP                  V P                  V4      R\        P                  P!                  VP                  4      VR3/4        VP#                  VP$                  R34      P'                  4       p\)        VR,          4      V n        \)        VR,          4      V n        EK/  VP5                  4        X#   \*         Ed%   p	T	P-                  4       p
T	P/                  4       pT
R8X  d   T'       d   RT9   d   R	TR,          9   d   RTR,          R	,          9   dl   T^ 8  de   \)        TR,          R	,          R,          4      T n        \)        TR,          R	,          R,          4      T n        \        T^,
          ^ 4      p R
p	?	EK  MHRT9   dB   RTR,          9   d4   TR,          R,          '       d   \0        P2                  ! ^4        R
p	?	EKZ  TP5                  4        T	hR
p	?	ii ; i).
send transfer request with the given context
rbvideo_file_chunkzmultipart/form-datarx   r<   r=   i] error
error_dataNis_transienti   )rz   r'   r<   rF   r=   rG   r^   rT   rU   rV   maxopenseekreadr{   rs   rb   r|   rX   rD   rE   r   api_error_subcoderP   timesleepclose)r   rZ   r~   r)   rW   retryfchunkrO   esubcoderP   s   &&          r   rB   .VideoUploadTransferRequestManager.send_request   sd   
 %TYY/$11"--$$GGOOH-	I!12A64   D$4$44FF4%%&FF4++d.@.@@AE#'#5#5G !%!1!1G))'2#GG$$W%6%67)& "<<''4$&  &).)A%B"#&x'=#> 4 	
	5 ( --/vvxg%D(DM9*d7mL.II!AI-0 M,7G.* ,/ M,7E,( !$EAIq 1 o&$w-7G}^44

1 	/s2   AG K3.K.>BK.+K.?K.K..K3c                :    R RRVP                   RVP                  /# )r   transferr<   r>   )r<   r]   rY   s   &&r   rs   6VideoUploadTransferRequestManager.getParamsFromContext   s'    JG00!3!3
 	
r   )rG   rF   Nr   r!   s   @r   r2   r2      s     >@
 
r   r2   c                   ,   a  ] tR t^t o R tR tRtV tR# )r4   c                    \        V P                  4      pVP                  V P                  V4      4       VP	                  VP
                  R34      # )r   rx   ry   r}   s   && r   rB   ,VideoUploadFinishRequestManager.send_request   sI    
 %TYY/ 	$33G<= ||W//<==r   c                :    R RRVP                   RVP                  /# )r   finishr>   title)r]   rc   rY   s   &&r   rs   4VideoUploadFinishRequestManager.getParamsFromContext  s'    H!3!3W&&
 	
r   ro   Nr   r!   s   @r   r4   r4      s     >
 
r   r4   c                     a  ] tR tRt o Rt]R 4       t]P                  R 4       t]R 4       t]P                  R 4       t]R 4       t	]	P                  R 4       t	]R	 4       t
]
P                  R
 4       t
]R 4       t]P                  R 4       t]R 4       t]P                  R 4       t]R 4       t]P                  R 4       t]R 4       t]P                  R 4       tRtV tR# )rS   i  z5
Upload request context that contains the param data
c                    V P                   # r	   r.   r   s   &r   rX   $VideoUploadRequestContext.account_id      r   c                    Wn         R # r	   r   )r   rX   s   &&r   rX   r         %r   c                    V P                   # r	   _namer   s   &r   rc   #VideoUploadRequestContext.file_name"      zzr   c                    Wn         R # r	   r   )r   names   &&r   rc   r   &      
r   c                    V P                   # r	   _sizer   s   &r   rW   #VideoUploadRequestContext.file_size*  r   r   c                    Wn         R # r	   r   )r   sizes   &&r   rW   r   .  r   r   c                    V P                   # r	   rH   r   s   &r   r]   $VideoUploadRequestContext.session_id2  r   r   c                    Wn         R # r	   r   )r   r]   s   &&r   r]   r   6  r   r   c                    V P                   # r	   rF   r   s   &r   r<   &VideoUploadRequestContext.start_offset:  s    !!!r   c                    Wn         R # r	   r   )r   r<   s   &&r   r<   r   >  s    )r   c                    V P                   # r	   rG   r   s   &r   r=   $VideoUploadRequestContext.end_offsetB  r   r   c                    Wn         R # r	   r   )r   r=   s   &&r   r=   r   F  r   r   c                    V P                   # r	   _filer   s   &r   fileVideoUploadRequestContext.fileJ  r   r   c                    Wn         R # r	   r   )r   r   s   &&r   r   r   N  r   r   c                    V P                   # r	   	_filepathr   s   &r   r^   #VideoUploadRequestContext.file_pathR  s    ~~r   c                    Wn         R # r	   r   )r   r)   s   &&r   r^   r   V  s    !r   )r.   rG   r   r   r   rH   r   rF   N)r   r   r   r   r   propertyrX   setterrc   rW   r]   r<   r=   r   r^   r   r    r!   s   @r   rS   rS     sx         & &             & & " " * *     & &   
[[    " "r   rS   c                   6   a  ] tR tRt o R tR tRR ltRtV tR# )rz   i[  c                .    R V n         R V n        Wn        R # r	   )_params_filesr'   rk   s   &&r   r   VideoUploadRequest.__init__]  s    	r   c                j    V P                   P                  RVV P                  V P                  RR7      # )z
send the current request
POSTz https://graph-video.facebook.com)paramsfilesurl_override)r'   callr   r   )r   rU   s   &&r   r|   VideoUploadRequest.sendb  s5     yy~~<<++;  
 	
r   Nc                    Wn         W n        R # r	   )r   r   )r   r   r   s   &&&r   r{   VideoUploadRequest.setParamsn  s    r   )r'   r   r   r	   )	r   r   r   r   r   r|   r{   r   r    r!   s   @r   rz   rz   [  s     


 r   rz   c                   @   a  ] tR tRt o ]R 4       t]R 4       tRtV tR# )rK   is  c                V   \         P                   ! 4       p \        P                  W4      pVR,          pVR8w  d   MSWC,           \         P                   ! 4       8:  d   \        R\	        V4      ,           4      h\         P
                  ! V4       Kz  VR8w  d   \        RV,           4      hR# )Tvideo_status
processingzvideo encoding timeout: readyzvideo encoding status: N)r   rK   	getStatusr   strr   )rl   r?   r8   r9   
start_timestatuss   &&&&  r   rL   )VideoEncodingStatusChecker.waitUntilReadyu  s    YY[
/99#HFN+F%#tyy{2#$>W$MNNJJx W)F2  	r   c                p    V P                  R \        V4      .RR/R7      P                  4       pVR,          # )GETfieldsr   )r   )r   rE   rD   )rl   r?   r   s   && r   r   $VideoEncodingStatusChecker.getStatus  sB    ]Oh'  
 $&	 	
 hr   ro   N)	r   r   r   r   staticmethodrL   r   r   r    r!   s   @r   rK   rK   s  s+           r   rK   )r   facebook_business.exceptionsr   r   abcr   r   rT   ra   r   objectr   r   rh   r0   r2   r4   rS   rz   rK   ro   r   r   <module>r      s    7 = ' 	  F 8W Wt 0
%> 
$G
(A G
T
&? 
.C" C"L 0   r   