o
    i)                     @   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   uuid4_download_json)selfurlvideo_idr   kwargs r   K/home/ubuntu/.local/lib/python3.10/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 ]}td	|d
dr;t	|dddd|d< q#t
||dt|ddthfddthfdddS )N	video_idsr   listr   play_url)url_h265r   F)fatalz^(hev|hvc|hvt)\dvcodec 	format_idh265_)delim)r   formatsinfoduration	thumbnail)original_urlr   )r)   r*   )get_all)r   
_VIDEO_APIr
   r	   any_extract_m3u8_formatsresearchgetr   strr   )r   r   
video_data	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   )r7   ).0id_metainfor   r   r   
<listcomp>7   s    z.TapTapBaseIE._real_extract.<locals>.<listcomp>r   )
	_match_id_INFO_QUERY_KEYr
   r   	_INFO_API
_DATA_PATH
_META_PATHset_ID_PATHplaylist_result)r   r   r   r   r   entriesr   r:   r   _real_extract/   s   

zTapTapBaseIE._real_extract)__name__
__module____qualname__r   r-   r?   r>   r@   rC   rA   r   r7   rF   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.	pin_videor   rK   created_timeedited_timeauthorusernamer   rL   titlesummary	timestampmodified_timestampuploaderuploader_idrU   descriptionz/https://www.taptap.cn/moment/194618230982052443194618230982052443uP   《崩坏3》开放世界「后崩坏书」新篇章 于淹没之地仰视辰星z$md5:cf66f7819d413641b8b28c8543f4ecdaiZ\a20211005u   乌酱532896	r   rU   r\   rX   upload_daterY   modified_daterZ   r[   r   	info_dict2202584mp4B   re:^https?://.*\.(png|jpg)r   extrU   r\   r)   rX   ra   rY   rb   rZ   r[   r*   skip_downloadm3u8r   rc   playlist_countplaylistparamsz/https://www.taptap.cn/moment/521630629209573493521630629209573493uA   《崩坏：星穹铁道》黄泉角色PV——「你的颜色」z$md5:2c81245da864428c904d53ae4ad2182bi@Hf20240326u   崩坏：星穹铁道	4147325804006511   z/https://www.taptap.cn/moment/540493587511511299r   540493587511511299uF   中式民俗解谜《纸嫁衣7》、新系列《纸不语》公布！z$md5:d60842350e686ddb242291ddfb8e39c9iHFf20240517iQ3Gfu   TapTap 编辑7159244)r   rm   rc   ro   N)rG   rH   rI   
_VALID_URLr?   rC   r   r3   intr   rA   _TESTSr   r   r   r   rJ   ?   s    

	  rJ   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)
app_videosrN   .r   rU   r\   textrU   r\   z https://www.taptap.cn/app/168332168332u   原神z$md5:e345f39a5fea5de2a46923f70d5f76abr   rU   r\   r   rc   4058443re      rg   r   ri   rU   r\   r)   r*   4058462i'  rj   rk   rl   N)
rG   rH   rI   rx   r?   rC   r3   r   rA   rz   r   r   r   r   r{      sD    
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)rG   rH   rI   r   r-   r   r   r   r   r      s    r   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/detailappr|   rU   r\   r~   r   z https://www.taptap.io/app/233287233287u   《虹彩六號 M》z$md5:418285f9c15347fc3cf3e3a3c649f182r   r   rc   
2149708997re   N   rg   r   rj   rk   rl   N)rG   rH   rI   rx   r?   r@   rC   r3   r   rA   rz   r   r   r   r   r      s2    
r   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/detailid_strpost)rM   r   published_timerQ   rS   rT   r   rU   list_fieldsrV   rW   z!https://www.taptap.io/post/571785571785z(Arknights x Rainbow Six Siege | Event PVz$md5:f7717c13f6d3108e22db7303e6690bf7i=`20210302zTapTap Editor80224473r`   r   rc   
2149491903re   z   rg   rh   rj   rk   rl   N)rG   rH   rI   rx   r?   r>   r@   rC   r   r3   ry   r   rA   rz   r   r   r   r   r      sT    

	r   )r0   r   commonr   utilsr   r   r   r   r	   utils.traversalr
   r   rJ   r{   r   r   r   r   r   r   r   <module>   s    0\'