o
    ic                     @   sH   d dl Z ddlmZ ddlmZmZmZmZmZm	Z	 G dd deZ
dS )    N   )InfoExtractor   )ExtractorErrorget_element_by_idint_or_none
js_to_jsonstr_or_nonetraverse_objc                   @   sR   e Zd ZdZddddddgeeedd	d
ddddgZdd Zdd Zdd ZdS )IxiguaIEz7https?://(?:\w+\.)?ixigua\.com/(?:video/)?(?P<id>\d+).+z*https://www.ixigua.com/69968814615591654716996881461559165471mp4u?   盲目涉水风险大，亲身示范高水位行车注意事项z$md5:8c82f46186299add4a1c455430740229	video_caru   懂车帝原创
6480145787zre:^https?://.+\.(avif|webp)iai  )idexttitledescriptiontags
like_countdislike_count
view_countuploaderuploader_id	thumbnail	timestampduration)url	info_dictc                 C   s@   t d|}|s| jrtdtddd| j|dd|tdS )	NSSR_HYDRATED_DATAzFailed to get SSR_HYDRATED_DATAz.Cookies (not necessarily logged in) are neededT)expectedzwindow._SSR_HYDRATED_DATA= )transform_source)r   _cookies_passedr   _parse_jsonreplacer   )selfwebpagevideo_idjs_data r*   K/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/ixigua.py_get_json_data#   s   
zIxiguaIE._get_json_datac                 c   s    di fdddifddddffD ]E\}}t |dg|d	d
 R D ]3}t|d  t|dt|dt|d|dt|dt|ddd|V  q"qd S )N)
video_list)dynamic_videodynamic_video_listacodecnone)r.   dynamic_audio_listm4a)vcodecr   .c                 S   s   |d S )Nmain_urlr*   )_vr*   r*   r+   <lambda>3   s    z*IxiguaIE._media_selector.<locals>.<lambda>r5   vwidthvheightfps
codec_typequality_typesizer   )r   widthheightr;   r4   	format_idfilesizer   )r
   base64	b64decodedecoder   getr	   )r&   	json_datapathoverridemediar*   r*   r+   _media_selector-   s&   
	zIxiguaIE._media_selectorc                 C   s   |  |}| ||}| ||d d d d }t| |d}||d|d||dt|d	|d
gt|dt|d|d|dt|ddS )NanyVideogidInformation
packerDatavideovideoResourcer   video_abstractvideo_like_countr   tag)	user_infouser_id)rT   namevideo_watch_countvideo_unlike_countvideo_publish_time)r   r   r   formatsr   r   r   r   r   r   r   r   )	_match_id_download_webpager,   listrK   rF   r   r
   )r&   r   r(   r'   rG   rZ   r*   r*   r+   _real_extract@   s"   

zIxiguaIE._real_extractN)	__name__
__module____qualname__
_VALID_URLint_TESTSr,   rK   r^   r*   r*   r*   r+   r      s*    
r   )rC   commonr   utilsr   r   r   r   r	   r
   r   r*   r*   r*   r+   <module>   s     
