U
    gc                     @   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/6996881461559165471Z6996881461559165471mp4u?   盲目涉水风险大，亲身示范高水位行车注意事项z$md5:8c82f46186299add4a1c455430740229Z	video_caru   懂车帝原创Z
6480145787zre:^https?://.+\.(avif|webp)iai  )idexttitledescriptiontags
like_countdislike_count
view_countuploaderuploader_idZ	thumbnail	timestampduration)urlZ	info_dictc                 C   s@   t d|}|s(| jrtdtddd| j|dd|tdS )	NZSSR_HYDRATED_DATAzFailed to get SSR_HYDRATED_DATAz.Cookies (not necessarily logged in) are neededT)expectedzwindow._SSR_HYDRATED_DATA= )Ztransform_source)r   Z_cookies_passedr   Z_parse_jsonreplacer   )selfwebpagevideo_idZjs_data r    ;/tmp/pip-unpacked-wheel-q5ljy6pj/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 ]\}}t |d|d	d
 fD ]f}t|d  t|dt|dt|d|dt|dt|ddd|V  q>q d S )N)Z
video_list)dynamic_videoZdynamic_video_listZacodecnone)r#   Zdynamic_audio_listZm4a)vcodecr   .c                 S   s   |d S )Nmain_urlr    )_vr    r    r!   <lambda>3       z*IxiguaIE._media_selector.<locals>.<lambda>r&   ZvwidthZvheightfpsZ
codec_typeZquality_typesizer   )r   widthheightr+   r%   Z	format_idfilesizer   ).)r
   base64	b64decodedecoder   getr	   )r   	json_datapathoverrideZ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 )NZanyVideoZgidInformationZ
packerDatavideoZvideoResourcer   Zvideo_abstractZvideo_like_countr   tag)	user_infoZuser_id)r:   nameZvideo_watch_countZvideo_unlike_countZvideo_publish_time)r   r   r   formatsr   r   r   r   r   r   r   r   )Z	_match_idZ_download_webpager"   listr7   r3   r   r
   )r   r   r   r   r4   r<   r    r    r!   _real_extract@   s"    

zIxiguaIE._real_extractN)	__name__
__module____qualname__Z
_VALID_URLintZ_TESTSr"   r7   r>   r    r    r    r!   r      s(   
r   )r0   commonr   utilsr   r   r   r   r	   r
   r   r    r    r    r!   <module>   s    
