a
    hQ?                     @   s   d dl Z ddlmZ ddlmZmZmZmZmZm	Z	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dS )    N   )InfoExtractor   )ExtractorErrorOnDemandPagedList
clean_htmldetermine_extformat_fieldint_or_nonejoin_nonemptyparse_codecsparse_iso8601url_or_noneurljoin)traverse_objc                   @   s   e Zd Zdd ZdS )FloatplaneBaseIEc                    s  |  |}| j| j d|d|idd| jd}tt|dsHtddd	t|d
g| j dp`d }|t| dt|d| j	dddt|ddt
hfddt
hfddt
hfddt
hfdthfd}g }t|dD ]N}|d }|dpd}	| j| j d|	 |d|id|	 d| jd}
| j| j d||	dkr:dnd|
d d d|	 d!| jd}t|d"d#t
hf  fd$d%}g }t|d&D ]T}t|d' |t|d"d(d)|d* thf}t|d*t
hf}i }d }| jd urx| j||d+| j| jtd,|d-d.d/td0|d-d.d/d1}|sq| jd2|d3d d4}|rx| j||d+| j| jtd,|d5d.d/td0|d5d.d/d1}|rx|  |d6< |i t|d7t
hfd8thfd9thfd:t|d;|t|d<d= d>|||pd d? q|i |d|it|
dt
hfd@thfdAdBthfdCdD|i qi |||dEt|dt
hfdFthfdGthfdHthfdIthfdAdBthfdJdK| ji}t|dLkr| j|fi |S ||d=  |S )MNz/api/v3/content/postidzDownloading post datazUnable to download post data)querynoteerrnoteimpersonate)metadata)ZhasVideoZhasAudioz,Post does not contain a video or audio trackT)expected)creatorurlnamez/channel/%s/home/)channelr   )Zneeds_subscription)uploader_urlchannel_urlavailabilityr   titler   releaseDate)uploaderuploader_idr   
channel_idrelease_timestamp))ZvideoAttachmentsZaudioAttachments.typevideoz/api/v3/content/zDownloading z	 metadata)r   r   r   z/api/v2/cdn/deliveryZvodZaodguid)r&   r(   z stream dataresourceuric                    s2    }| p
i   D ]\}}|d| d|}q|S )Nz{qualityLevelParams.})itemsreplace)paramspathivalZpath_template P/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/floatplane.pyformat_pathB   s    z3FloatplaneBaseIE._real_extract.<locals>.format_path)r)   dataZqualityLevels.Zcdnr6   ZqualityLevelParamsnameFZDownloadingzm3u8 information delimzFailed to download)fatalr   headersr   r   z0#EXT-X-KEY:METHOD=AES-128,URI="(https?://[^"]+)"zHLS AES key URI)defaultzHLS AES keykeylabelwidthheight)Zformat_noter@   rA   codecsz/chunk.m3u8r   mp4)urlext	format_idZhls_media_playlist_datahls_aesduration	thumbnailr/   )r    rH   rI   formats)r   
display_idtextZlikesZdislikescomments)r    description
like_countdislike_countcomment_countrI   Zhttp_headersr   ) Z	_match_id_download_json	_BASE_URL_IMPERSONATE_TARGETanyr   r   r	   r   Z_availabilitystrr   getdictZ_download_webpage_HEADERSr   Z_search_regexZ_request_webpagereadhexappendintr   r   	partitionr
   r   r   lenplaylist_resultupdate)selfrD   Zpost_idZ	post_datar   Zcommon_infor,   ZmediaZmedia_idZ	media_typr   streamr5   rJ   ZqualityrF   rG   Z	m3u8_datakey_urlZurlhZ	post_infor3   r2   r4   _real_extract   s    









zFloatplaneBaseIE._real_extractN)__name__
__module____qualname__re   r3   r3   r3   r4   r      s   r   c                   @   sv  e Zd ZdZdZdZee ddZdddd	d
dddeeeddddddddddddiddddddeeedd dddd!d"d#dd$d%d&d'd(d)d*deeed+d,dddd-d.d/dd$d%d&d0d1dd2d3d4dd5d6d7eeedddd8d9d:dd;ddidd<d=d>d=ed?d@ddAdBdCedDdEdFedGdHdId%dJdKddHd?dLdEdMdd@dNdGdAdCdBdOidJdPdQdHd?dRdEdd@dSdGdAdCdBdTigdUddidVgZdWdX Z	dS )YFloatplaneIEz<https?://(?:(?:www|beta)\.)?floatplane\.com/post/(?P<id>\w+)zhttps://www.floatplane.comNr   )ZOriginZRefererz*https://www.floatplane.com/post/2Yf3UedF7CZ
yuleLogLTTrC   Z
2Yf3UedF7Cz;8K Yule Log Fireplace with Crackling Fire Sounds - 10 Hoursz$md5:adf2970e0de1c5e3df447818bb0309f6zre:^https?://.*\.jpe?g$iÌ  Z20191206i(]ZLinusTechTipsZ59f94c0bdd241b70349eb72bz5https://www.floatplane.com/channel/linustechtips/homezLinus Tech TipsZ63fe42c309e691e4e36de93dz:https://www.floatplane.com/channel/linustechtips/home/mainZsubscriber_only)r   rE   rK   r    rN   rI   rH   rQ   rO   rP   release_dater%   r"   r#   r   r   r$   r   r   Zskip_downloadZm3u8)rD   	info_dictr.   z*https://www.floatplane.com/post/j2jqG3JmgJZ
j2jqG3JmgJz5TJM: Does Anyone Care About Avatar: The Way of Water?z$md5:00bf17dc5733e4031e99b7fd6489f274i|icZ20221224zThey're Just MoviesZ64135f82fc76ab7f9fbdc876z:https://www.floatplane.com/channel/linustechtips/home/tajm)r   r    rN   rI   rQ   rO   rP   r%   rj   r"   r#   r   r   r$   r   r   r   )rD   rk   playlist_countz*https://www.floatplane.com/post/3tK2tInhoNZ
3tK2tInhoNz<Extras - How Linus Communicates with Editors (Compensator 4)z$md5:83cd40aae1ce124df33769600c80ca5bi\eZ20231121zFP ExclusivesZ6413623f5b12cca228a28e78zAhttps://www.floatplane.com/channel/linustechtips/home/fpexclusivez+https://beta.floatplane.com/post/d870PEFXS1Z
bg9SuYKEwwZ
d870PEFXS1zALCS Drama, TLOU 2 Remaster, Destiny 2 Player Count Drops, + More!z$md5:80d612dcabf41b17487afcbe303ec57din]eZ20231122i  Z
GameLinkedZ649dbade3540dbc3945eeda7z@https://www.floatplane.com/channel/linustechtips/home/gamelinked)r   rE   rK   r    rN   rI   r%   rj   rH   rO   rP   rQ   r"   r#   r   r   r$   r   r   z*https://www.floatplane.com/post/65B5PNoBtfZ
65B5PNoBtfzTI recorded the inbuilt demo mode for your 90's enjoyment, thanks for being Floaties!igezThe Trash NetworkZ61bc20c9a131fb692bf2a513z7https://www.floatplane.com/channel/TheTrashNetwork/homezDhttps://www.floatplane.com/channel/TheTrashNetwork/home/thedrumthingzThe $50 electronic drum kit.Z64424fe73cd58cbcf8d8e131z\https://pbs.floatplane.com/blogPost_thumbnails/65B5PNoBtf/725555379422705_1701247052743.jpegzThe Drum ThingZ20231129)r   rN   rK   rO   r%   r"   r   r#   r   r   rQ   r    r$   rI   rP   r   rj   rk   Z
ISPJjexylSz!The $50 electronic drum kit. .movzYhttps://pbs.floatplane.com/video_thumbnails/ISPJjexylS/335202812134041_1701249383392.jpegin  )r   rE   rj   r%   r    r$   rI   r   r"   rH   r   r#   r   r   Z
qKfxu6fEpuZaaczRoland TD-7 Demo.m4ar   )r   rE   rj   r%   r    r$   r   r"   rH   r   r#   r   r   z*requires subscription: "The Trash Network")rD   rk   rl   Zplaylistskipr.   c                 C   s   |  | jds|   d S )Nz	sails.sid)Z_get_cookiesrS   rW   Zraise_login_required)rb   r3   r3   r4   _real_initialize0  s    zFloatplaneIE._real_initialize)
rf   rg   rh   
_VALID_URLrS   rT   rY   r]   _TESTSro   r3   r3   r3   r4   ri      s0  " ri   c                   @   s^   e Zd ZdZdZddddddd	d
dddddd	ddddddd	gZdd Zdd ZdS )FloatplaneChannelIEz`https?://(?:(?:www|beta)\.)?floatplane\.com/channel/(?P<id>[\w-]+)/home(?:/(?P<channel>[\w-]+))?   z=https://www.floatplane.com/channel/linustechtips/home/ltxexpozlinustechtips/ltxexpozLTX Expoz$md5:9819002f9ebe7fd7c75a3a1d38a59149)r   r    rN   3   )rD   rk   Zplaylist_mincountz1https://www.floatplane.com/channel/ShankMods/homeZ	ShankModsz
Shank Modsz$md5:6dff1bb07cad8e5448e04daad9be1b30   z5https://beta.floatplane.com/channel/bitwit_ultra/homeZbitwit_ultrazBitwit Ultraz$md5:1452f280bb45962976d4789200f676dd   c              
   c   s   || j || j  d}|r ||d< | jd||d|d  d}|pBg D ]8}| jd|d  t|d |d	t|d
dV  qDd S )N)r   limitZ
fetchAfterr   z1https://www.floatplane.com/api/v3/content/creatorzDownloading page r   )r   r   z https://www.floatplane.com/post/r   r    r!   )r   r    r%   )
_PAGE_SIZErR   Z
url_resultri   rW   r   )rb   rK   Z
creator_idr$   pager   Z	page_datapostr3   r3   r4   _fetch_pageR  s     zFloatplaneChannelIE._fetch_pagec              
      s   |  |dd\} t| dd}| jd|d|idd }t|d	 fd
dfddpXi }| jtt| j	||d |
d| j||
dp|
d|
dp|
ddS )Nr   r   r   r9   z/https://www.floatplane.com/api/v3/creator/namedzcreatorURL[0])r   r   Zchannelsc                    s   |d  kS )Nr   r3   )_vr   r3   r4   <lambda>l      z3FloatplaneChannelIE._real_extract.<locals>.<lambda>F)get_allr    Zabout)r    rN   )Z_match_valid_urlgroupr   rR   r   r`   r   	functoolspartialr{   rW   rx   )rb   rD   r   rK   Zcreator_dataZchannel_datar3   r~   r4   re   c  s*    
z!FloatplaneChannelIE._real_extractN)rf   rg   rh   rp   rx   rq   r{   re   r3   r3   r3   r4   rr   5  s4   		rr   )r   commonr   utilsr   r   r   r   r	   r
   r   r   r   r   r   Zutils.traversalr   r   ri   rr   r3   r3   r3   r4   <module>   s   4~ $