a
    h)                     @   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   s:   i |d| j jt di}| j||fd|i|d S )NzX-UA)uuidquerydata)_X_UAformatr   uuid4Z_download_json)selfurlvideo_idr   kwargs r   L/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/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                    st    |}j|i}tjj||dj}t|j  fddtt|jD }j	|fi  d|iS )Nr   c                    s   g | ]}i   |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&   r2   r1   r3   r6   r4   r   r-   r8   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_idrE   descriptionz/https://www.taptap.cn/moment/194618230982052443Z194618230982052443uP   《崩坏3》开放世界「后崩坏书」新篇章 于淹没之地仰视辰星z$md5:cf66f7819d413641b8b28c8543f4ecdaiZ\aZ20211005u   乌酱Z532896	r   rE   rL   rH   upload_daterI   modified_daterJ   rK   r   	info_dictZ2202584mp4B   re:^https?://.*\.(png|jpg)r   extrE   rL   r"   rH   rN   rI   rO   rJ   rK   r#   skip_downloadm3u8r   rP   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   rY   rP   rZ   N)r9   r:   r;   
_VALID_URLr2   r6   r   r+   intr   r4   _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   rE   rL   textrE   rL   z https://www.taptap.cn/app/168332Z168332u   原神z$md5:e345f39a5fea5de2a46923f70d5f76abr   rE   rL   r   rP   Z4058443rQ      rS   r   rU   rE   rL   r"   r#   Z4058462i'  rV   rW   rX   N)
r9   r:   r;   r\   r2   r6   r+   r   r4   r^   r   r   r   r   r_      sB   
r_   c                   @   s   e Zd ZdZdZdS )TapTapIntlBaseIEz|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)r9   r:   r;   r   r&   r   r   r   r   rf      s   rf   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`   rE   rL   ra   rb   z https://www.taptap.io/app/233287Z233287u   《虹彩六號 M》z$md5:418285f9c15347fc3cf3e3a3c649f182rc   r   rP   Z
2149708997rQ   N   rS   re   rV   rW   rX   N)r9   r:   r;   r\   r2   r3   r6   r+   r   r4   r^   r   r   r   r   rg      s0   
rg   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_timerA   rC   rD   r   rE   Zlist_fieldsrF   rG   z!https://www.taptap.io/post/571785Z571785z(Arknights x Rainbow Six Siege | Event PVz$md5:f7717c13f6d3108e22db7303e6690bf7i=`Z20210302zTapTap EditorZ80224473rM   r   rP   Z
2149491903rQ   z   rS   rT   rV   rW   rX   N)r9   r:   r;   r\   r2   r1   r3   r6   r   r+   r]   r   r4   r^   r   r   r   r   ri      sR   

	ri   )r(   r   commonr   utilsr   r   r   r   r	   Zutils.traversalr
   r   r<   r_   rf   rg   ri   r   r   r   r   <module>   s   0\'