U
    g)                     @   s   d dl Z d dlZddlmZ ddlmZmZmZmZm	Z	 ddl
mZ G dd deZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZdS )    N   )InfoExtractor   )
clean_htmlint_or_nonejoin_nonemptystr_or_noneurl_or_none)traverse_objc                   @   s@   e Zd ZdZdZdZdZdZdZdZ	dd Z
dd Zd	d
 ZdS )TapTapBaseIEz`V=1&PN=WebApp&LANG=zh_CN&VN_CODE=102&LOC=CN&PLT=PC&DS=Android&UID={uuid}&OS=Windows&OSV=10&DT=PCz:https://www.taptap.cn/webapiv2/video-resource/v1/multi-getNidc                 K   s6   |d| j jt di}| j||fd|i|d S )NzX-UA)uuidquerydata)_X_UAformatr   Zuuid4Z_download_json)selfurlvideo_idr   kwargs r   ;/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/taptap.py_get_api   s    zTapTapBaseIE._get_apic                 C   s   | j | j|d|idd d }t|ddthtf}| j||dd}|D ]0}td	|d
drFt	|dddd|d< qFt
||dt|ddthfddthfdddS )NZ	video_idsr   listr   Zplay_url)Zurl_h265r   F)fatalz^(hev|hvc|hvt)\dZvcodec Z	format_idZh265_)delim)r   formatsinfoduration	thumbnail)original_urlr   )r!   r"   )get_all)r   
_VIDEO_APIr
   r	   anyZ_extract_m3u8_formatsresearchgetr   strr   )r   r   Z
video_dataZ	video_urlr   fmtr   r   r   _extract_video   s     

zTapTapBaseIE._extract_videoc                    sp    |}j|i}tjj||dj}t|j  fddtt|jD }j	|f d|iS )Nr   c                    s   g | ]}  |qS r   )r,   ).0Zid_Zmetainfor   r   r   
<listcomp>7   s   z.TapTapBaseIE._real_extract.<locals>.<listcomp>r   )
Z	_match_id_INFO_QUERY_KEYr
   r   	_INFO_API
_DATA_PATH
_META_PATHset_ID_PATHZplaylist_result)r   r   r   r   r   entriesr   r.   r   _real_extract/   s    

 zTapTapBaseIE._real_extract)__name__
__module____qualname__r   r%   r1   r0   r2   r5   r3   r   r,   r7   r   r   r   r   r      s   r   c                   @   s  e Zd ZdZdZdZddehfdehfddd	ehfddd
ehe	hfddehfddehfdfZ
ddddddddddd	dddddddddddddddigdd id!d"d#d$d%d&d'd&d'd(d)d	ddd*dd$d%d+d&d'd&d'd(d)ddigdd id!d,d-d.d/d0d1d2d3d2d4d5d	dd id6gZd7S )8TapTapMomentIEz+https?://www\.taptap\.cn/moment/(?P<id>\d+)z/https://www.taptap.cn/webapiv2/moment/v3/detail)momenttopic)videos.Z	pin_videor   r<   Zcreated_timeedited_timeauthorusernamer   r=   titlesummary	timestampmodified_timestampuploaderuploader_idrD   descriptionz/https://www.taptap.cn/moment/194618230982052443Z194618230982052443uP   《崩坏3》开放世界「后崩坏书」新篇章 于淹没之地仰视辰星z$md5:cf66f7819d413641b8b28c8543f4ecdaiZ\aZ20211005u   乌酱Z532896	r   rD   rK   rG   upload_daterH   modified_daterI   rJ   r   	info_dictZ2202584mp4B   re:^https?://.*\.(png|jpg)r   extrD   rK   r!   rG   rM   rH   rN   rI   rJ   r"   skip_downloadm3u8r   rO   playlist_countZplaylistparamsz/https://www.taptap.cn/moment/521630629209573493Z521630629209573493uA   《崩坏：星穹铁道》黄泉角色PV——「你的颜色」z$md5:2c81245da864428c904d53ae4ad2182bi@HfZ20240326u   崩坏：星穹铁道Z	414732580Z4006511   z/https://www.taptap.cn/moment/540493587511511299r   Z540493587511511299uF   中式民俗解谜《纸嫁衣7》、新系列《纸不语》公布！z$md5:d60842350e686ddb242291ddfb8e39c9iHFfZ20240517iQ3Gfu   TapTap 编辑Z7159244)r   rX   rO   rY   N)r8   r9   r:   
_VALID_URLr1   r5   r   r*   intr   r3   _TESTSr   r   r   r   r;   ?   s   

	  r;   c                   @   sz   e Zd ZdZdZdZdehfddehehfdZdd	d
ddddddd
ddddidddd
ddddigddidgZ	dS )TapTapAppIEz(https?://www\.taptap\.cn/app/(?P<id>\d+)z,https://www.taptap.cn/webapiv2/app/v4/detail)Z
app_videosr?   .r   rD   rK   textrD   rK   z https://www.taptap.cn/app/168332Z168332u   原神z$md5:e345f39a5fea5de2a46923f70d5f76abr   rD   rK   r   rO   Z4058443rP      rR   r   rT   rD   rK   r!   r"   Z4058462i'  rU   rV   rW   N)
r8   r9   r:   r[   r1   r5   r*   r   r3   r]   r   r   r   r   r^      sB   
r^   c                   @   s   e Zd ZdZdZdS )TapTapIntlBasez|V=1&PN=WebAppIntl2&LANG=zh_TW&VN_CODE=115&VN=0.1.0&LOC=CN&PLT=PC&DS=Android&UID={uuid}&CURR=&DT=PC&OS=Windows&OSV=NT%208.0.0z:https://www.taptap.io/webapiv2/video-resource/v1/multi-getN)r8   r9   r:   r   r%   r   r   r   r   re      s   re   c                   @   sj   e Zd ZdZdZdZdZdehfddehehfdZ	d	d
ddddddddddddigddidgZ
dS )TapTapAppIntlIEz(https?://www\.taptap\.io/app/(?P<id>\d+)z.https://www.taptap.io/webapiv2/i/app/v5/detailZappr_   rD   rK   r`   ra   z https://www.taptap.io/app/233287Z233287u   《虹彩六號 M》z$md5:418285f9c15347fc3cf3e3a3c649f182rb   r   rO   Z
2149708997rP   N   rR   rd   rU   rV   rW   N)r8   r9   r:   r[   r1   r2   r5   r*   r   r3   r]   r   r   r   r   rf      s0   
rf   c                   @   s   e Zd ZdZdZdZdZdZdehfdehfdd	e	hfdd
e
hehfde	hfdde	hfdZddddddddddd	dddddddddddddddigdd id!gZd"S )#TapTapPostIntlIEz)https?://www\.taptap\.io/post/(?P<id>\d+)z6https://www.taptap.io/webapiv2/creation/post/v1/detailZid_strpost)r>   r   Zpublished_timer@   rB   rC   r   rD   Zlist_fieldsrE   rF   z!https://www.taptap.io/post/571785Z571785z(Arknights x Rainbow Six Siege | Event PVz$md5:f7717c13f6d3108e22db7303e6690bf7i=`Z20210302zTapTap EditorZ80224473rL   r   rO   Z
2149491903rP   z   rR   rS   rU   rV   rW   N)r8   r9   r:   r[   r1   r0   r2   r5   r   r*   r\   r   r3   r]   r   r   r   r   rh      sR   

	rh   )r'   r   commonr   utilsr   r   r   r   r	   Zutils.traversalr
   r   r;   r^   re   rf   rh   r   r   r   r   <module>   s   0\'