
    PIie.                        d Z ddlmZ ddlmZ ddlmZmZ ddlZddlZddl	Z	 G d de
      Z G d d	e
      Z G d
 de
      Z G d de      Z G d de      Z G d de      Z G d de
      Z G d de
      Z G d de
      Zy)z:
video uploader that is used to upload video to adaccount
    )FacebookError)FacebookRequestError)ABCMetaabstractmethodNc                       e Zd ZdZd ZddZy)VideoUploaderz<
    Video Uploader that can upload videos to adaccount
    c                     d | _         y N)_sessionselfs    n/var/www/webhook.estador.de/web/meta/bot/venv/lib/python3.12/site-packages/facebook_business/video_uploader.py__init__zVideoUploader.__init__   s	        c                     | j                   rt        d      t        ||      | _         | j                   j                         }d| _         |S )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   uploadzVideoUploader.upload   sJ     ==L 
 +52CD$$&r   N)F)__name__
__module____qualname____doc__r   r    r   r   r   r      s    r   r   c                   ,    e Zd ZddZd Zd Zd Zd Zy)r   c                 "   || _         |j                         | _        |j                  j                  |v r&||j                  j                     | _        d | _        n=|j                  j                  |v r%||j                  j                     | _        d | _        |j                         | _	        || _
        t        | j                        | _        t        | j                        | _        t        | j                        | _        || _        || _        y 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   zVideoUploadSession.__init__2   s    ))+	KK  E)#EKK$8$89DO#'D kk((E1#()C)C#DD "DO 668"3&DII'
#
 *KII*
&
 (GII(
$  !r   c                 T   | j                   j                  | j                               j                         }t	        |d         | _        t	        |d         | _        |d   | _        |d   }| j                  j                  | j                                | j                  j                  | j                               }| j                  r7t        j                  | j                  || j                   | j"                         |j                         j%                         }||d<   |d= |S )Nstart_offset
end_offsetupload_session_idvideo_id)r2   r3   idsuccess)r+   send_requestgetStartRequestContextjsonint_start_offset_end_offset_session_idr-   getTransferRequestContextr/   getFinishRequestContextr)   VideoEncodingStatusCheckerwaitUntilReadyr!   r1   r0   copy)r   start_responser8   responsebodys        r   r   zVideoUploadSession.startN   s   44AA'')

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

 //<<((*
 ""&55		8dnndmm 6 
 }}##%T
Or   c                     t               }| j                  r.t        j                  j	                  | j                        |_        | j                  |_        |S r
   )VideoUploadRequestContextr$   ospathgetsize	file_sizer(   
account_idr   contexts     r   r<   z)VideoUploadSession.getStartRequestContextn   s=    +-OO " @G!--r   c                    t               }| j                  |_        | j                  |_        | j
                  |_        | j                  r| j                  |_        | j                  r| j                  |_
        | j                  |_        |S r
   )rK   rA   
session_idr?   r5   r@   r6   r$   	file_pathr%   r&   r(   rP   rQ   s     r   rB   z,VideoUploadSession.getTransferRequestContextu   sq    +-!--#11!--OO $G  %)%9%9G"!--r   c                     t               }| j                  |_        | j                  |_        | j
                  r$t        j                  | j
                        |_        |S r
   )	rK   rA   rT   r(   rP   r$   ntpathbasename	file_namerQ   s     r   rC   z*VideoUploadSession.getFinishRequestContext   sG    +-!--!--OO & @Gr   N)F      )r   r   r   r   r   r<   rB   rC   r   r   r   r   r   0   s    "8@
r   r   c                   :    e Zd ZdZeZd Zed        Zed        Z	y)VideoUploadRequestManagerz-
    Abstract class for request managers
    c                     || _         y r
   )r!   r   apis     r   r   z"VideoUploadRequestManager.__init__   s	    	r   c                      y)z%
        send upload request
        Nr   rQ   s     r   r;   z&VideoUploadRequestManager.send_request       
 	r   c                      y)z0
        get upload params from context
        Nr   rQ   s     r   getParamsFromContextz.VideoUploadRequestManager.getParamsFromContext   rb   r   N)
r   r   r   r   r   __metaclass__r   r   r;   rd   r   r   r   r]   r]      s;     M    r   r]   c                       e Zd Zd Zd Zy)r*   c                     t        | j                        }|j                  | j                  |             |j	                  |j
                  df      S )z;
        send start request with the given context
        advideosVideoUploadRequestr!   	setParamsrd   sendrP   r   rR   requests      r   r;   z+VideoUploadStartRequestManager.send_request   sE    
 %TYY/$33G<=||W//<==r   c                      |j                   ddS )Nr   )rO   upload_phase)rO   rQ   s     r   rd   z3VideoUploadStartRequestManager.getParamsFromContext   s     **#
 	
r   Nr   r   r   r;   rd   r   r   r   r*   r*      s    >
r   r*   c                       e Zd Zd Zd Zy)r,   c                 D   t        | j                        }|j                  | _        |j                  | _        |j                  }t        j                  j                  |      }t        |dz  d      }t        |d      }| j                  | j
                  k7  r|j                  | j                         |j                  | j
                  | j                  z
        }| j                  |_        | j
                  |_        |j                  | j                  |      dt        j                  j!                  |j                        |dfi       	 |j#                  |j$                  df      j'                         }t)        |d         | _        t)        |d         | _        | j                  | j
                  k7  r|j5                          S # t*        $ r}	|	j-                         }
|	j/                         }|
d	k(  rc|rd
|v rd|d
   v rd|d
   d   v rz|dkD  rut)        |d
   d   d         | _        t)        |d
   d   d         | _        t        |dz
  d      }Y d}	~	d
|v r*d|d
   v r#|d
   d   rt1        j2                  d       Y d}	~	
|j5                          |	d}	~	ww xY w)>
        send transfer request with the given context
        i      rbvideo_file_chunkzmultipart/form-datarh   r5   r6   i] error
error_datar      Nis_transient)rj   r!   r5   r?   r6   r@   rU   rL   rM   rN   maxopenseekreadrk   rd   rX   rl   rP   r=   r>   r   api_error_subcoderI   timesleepclose)r   rR   rn   r#   rO   retryfchunkrH   esubcoderI   s               r   r;   z.VideoUploadTransferRequestManager.send_request   sw   
 %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'=#> +   D$4$4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

1 	/s&   AG	 		JBJ(JJJc                 6    d|j                   |j                  dS )Ntransfer)rp   r5   r7   )r5   rT   rQ   s     r   rd   z6VideoUploadTransferRequestManager.getParamsFromContext   s!    &#00!(!3!3
 	
r   Nrq   r   r   r   r,   r,      s    >@
r   r,   c                       e Zd Zd Zd Zy)r.   c                     t        | j                        }|j                  | j                  |             |j	                  |j
                  df      S )rt   rh   ri   rm   s      r   r;   z,VideoUploadFinishRequestManager.send_request   sI    
 %TYY/ 	$33G<= ||W//<==r   c                 6    d|j                   |j                  dS )Nfinish)rp   r7   title)rT   rY   rQ   s     r   rd   z4VideoUploadFinishRequestManager.getParamsFromContext  s!    $!(!3!3&&
 	
r   Nrq   r   r   r   r.   r.      s    >
r   r.   c                      e Zd ZdZed        Zej                  d        Zed        Zej                  d        Zed        Zej                  d        Zed        Z	e	j                  d	        Z	ed
        Z
e
j                  d        Z
ed        Zej                  d        Zed        Zej                  d        Zed        Zej                  d        Zy)rK   z=
    Upload request context that contains the param data
    c                     | j                   S r
   r(   r   s    r   rP   z$VideoUploadRequestContext.account_id      r   c                     || _         y r
   r   )r   rP   s     r   rP   z$VideoUploadRequestContext.account_id  
    %r   c                     | j                   S r
   _namer   s    r   rY   z#VideoUploadRequestContext.file_name"      zzr   c                     || _         y r
   r   )r   names     r   rY   z#VideoUploadRequestContext.file_name&  	    
r   c                     | j                   S r
   _sizer   s    r   rO   z#VideoUploadRequestContext.file_size*  r   r   c                     || _         y r
   r   )r   sizes     r   rO   z#VideoUploadRequestContext.file_size.  r   r   c                     | j                   S r
   rA   r   s    r   rT   z$VideoUploadRequestContext.session_id2  r   r   c                     || _         y r
   r   )r   rT   s     r   rT   z$VideoUploadRequestContext.session_id6  r   r   c                     | j                   S r
   r?   r   s    r   r5   z&VideoUploadRequestContext.start_offset:  s    !!!r   c                     || _         y r
   r   )r   r5   s     r   r5   z&VideoUploadRequestContext.start_offset>  s
    )r   c                     | j                   S r
   r@   r   s    r   r6   z$VideoUploadRequestContext.end_offsetB  r   r   c                     || _         y r
   r   )r   r6   s     r   r6   z$VideoUploadRequestContext.end_offsetF  r   r   c                     | j                   S r
   _filer   s    r   filezVideoUploadRequestContext.fileJ  r   r   c                     || _         y r
   r   )r   r   s     r   r   zVideoUploadRequestContext.fileN  r   r   c                     | j                   S r
   	_filepathr   s    r   rU   z#VideoUploadRequestContext.file_pathR  s    ~~r   c                     || _         y r
   r   )r   r#   s     r   rU   z#VideoUploadRequestContext.file_pathV  s	    !r   N)r   r   r   r   propertyrP   setterrY   rO   rT   r5   r6   r   rU   r   r   r   rK   rK     su        & &             & & " " * *     & &   
[[    " "r   rK   c                        e Zd Zd Zd ZddZy)rj   c                 .    d | _         d | _        || _        y r
   )_params_filesr!   r_   s     r   r   zVideoUploadRequest.__init__]  s    	r   c                 j    | j                   j                  d|| j                  | j                  d      S )z*
        send the current request
        POSTz https://graph-video.facebook.com)paramsfilesurl_override)r!   callr   r   )r   rM   s     r   rl   zVideoUploadRequest.sendb  s5     yy~~<<++;  
 	
r   Nc                      || _         || _        y r
   )r   r   )r   r   r   s      r   rk   zVideoUploadRequest.setParamsn  s    r   r
   )r   r   r   r   rl   rk   r   r   r   rj   rj   [  s    


r   rj   c                   ,    e Zd Zed        Zed        Zy)rD   c                 $   t        j                          }	 t        j                  | |      }|d   }|dk7  rnG||z   t        j                          k  rt        dt	        |      z         t        j
                  |       h|dk7  rt        d|z         y )Nvideo_status
processingzvideo encoding timeout: readyzvideo encoding status: )r   rD   	getStatusr   strr   )r`   r8   r2   r3   
start_timestatuss         r   rE   z)VideoEncodingStatusChecker.waitUntilReadyu  s    YY[
/99#xHFN+F%G#tyy{2#$>W$MNNJJx   W)F2  	r   c                 h    | j                  dt        |      gddi      j                         }|d   S )NGETfieldsr   )r   )r   r>   r=   )r`   r8   r   s      r   r   z$VideoEncodingStatusChecker.getStatus  sB    ]Oh'  
 $&	 	
 hr   N)r   r   r   staticmethodrE   r   r   r   r   rD   rD   s  s(          r   rD   )r   facebook_business.exceptionsr   r   abcr   r   rL   rW   r   objectr   r   r]   r*   r,   r.   rK   rj   rD   r   r   r   <module>r      s    7 = ' 	  F 8W Wt 0
%> 
$G
(A G
T
&? 
.C" C"L 0   r   