o
    i	                     @   sT   d dl Z d dlZddlmZ ddlmZ ddlmZ ddlm	Z	 G dd	 d	eZ
dS )
    N   )FileDownloader)HlsFD   )_cloudfront_auth_request)network_exceptionsc                   @   s    e Zd ZdZdd Zdd ZdS )	SoopVodFDz
    Downloads Soop subscription VODs with required cookie refresh requests
    Note, this is not a part of public API, and will be removed without notice.
    DO NOT USE
    c                 C   sz   |  d| j d t| j| j}|d }|d }t }tj| j|||fd}|	  z|
||W |  S |  w )N[z'] Downloading Soop subscription VOD HLS_cookie_refresh_paramswebpage_url)targetargs)	to_screenFD_NAMEr   ydlparams	threadingEventThread_cookie_refresh_threadstartreal_downloadset)selffilename	info_dictfdrefresh_paramsreferer_url
stop_eventrefresh_thread r!   J/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/downloader/soop.pyr      s   zSoopVodFD.real_downloadc              
      s   |d }|d }|d } fdd}| dsqt }||}	|dd}
|	r-||	d	 kp5|	 o5||
 d
k}|rjz jt||||  ||d< W n tyi } z d j	 d|  W Y d }~nd }~ww | drd S d S )Nm3u8_urlstrm_idvideo_idc                    s$    j j| }tdd |D ddS )Nc                 s   s&    | ]}d |j v r|jr|jV  qdS )
CloudFrontN)nameexpires).0cookier!   r!   r"   	<genexpr>*   s   $ z^SoopVodFD._cookie_refresh_thread.<locals>._get_cloudfront_cookie_expiration.<locals>.<genexpr>r   )default)r   	cookiejarget_cookies_for_urlmin)r#   cookiesr   r!   r"   !_get_cloudfront_cookie_expiration(   s   zKSoopVodFD._cookie_refresh_thread.<locals>._get_cloudfront_cookie_expiration   _last_refreshr      K   r	   z!] Cookie refresh attempt failed: )
waittimegetr   urlopenr   readr   r   r   )r   r   r   r   r#   r$   r%   r2   current_timeexpiration_timelast_refresh_checkshould_refresher!   r1   r"   r   #   s.   
$z SoopVodFD._cookie_refresh_threadN)__name__
__module____qualname____doc__r   r   r!   r!   r!   r"   r   
   s    r   )r   r8   commonr    r   extractor.afreecatvr   networking.exceptionsr   r   r!   r!   r!   r"   <module>   s    