U
    g7                     @   sx   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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                   @   sf  e Zd Z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"d,d-dd.d/d0dd1d2d3eeedddd4d5d6dd7ddidd8d9d:d9ed;d<dd=d>d?ed@dAdBedCdDdEd!dFdGddDd;dHdAdIdd<dJdCd=d?d>dKidFdLdMdDd;dNdAdd<dOdCd=d?d>dPigdQddidRgZdSdT ZdUdV ZdWS )XFloatplaneIEz<https?://(?:(?:www|beta)\.)?floatplane\.com/post/(?P<id>\w+)z*https://www.floatplane.com/post/2Yf3UedF7CZ
yuleLogLTTmp4Z
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)idext
display_idtitledescription	thumbnaildurationcomment_count
like_countdislike_countrelease_daterelease_timestampuploaderuploader_iduploader_urlchannel
channel_idchannel_urlavailabilityZskip_downloadZm3u8)url	info_dictparamsz*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   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r   )r&   r'   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   r   r   r   r   r   r   r   r   r   r   r   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   r   r   r   r   r   r%   r    r!   r$   r   r   r#   r   r   r"   r   r'   Z
ISPJjexylSz!The $50 electronic drum kit. .movzYhttps://pbs.floatplane.com/video_thumbnails/ISPJjexylS/335202812134041_1701249383392.jpegin  )r   r   r   r   r   r#   r   r%   r   r   r"   r    r$   r!   Z
qKfxu6fEpuZaaczRoland TD-7 Demo.m4ar   )r   r   r   r   r   r#   r%   r   r   r"   r    r$   r!   z*requires subscription: "The Trash Network")r&   r'   r)   Zplaylistskipr(   c                 C   s   |  dds|   d S )Nzhttps://www.floatplane.comz	sails.sid)Z_get_cookiesgetZraise_login_required)self r.   ?/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/floatplane.py_real_initialize   s    zFloatplaneIE._real_initializec                    s  |  |}| jd|d|iddd}tt|ds<tddd	t|d
gdpLd }|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 ]`}|d }|
dpd}	| jd|	 |d|id|	 dd}
| jd||	dkrdnd|
d d d|	 d!d}t|d"d#thf  fd$d%}g }t|d&D ]}t|d' |t|d"d(d)|d* thf}|t|d*thfd+thfd,thfd-thfd.t|
d/|t|d0d1 d2d3 q\||d|it|
dthfd4thfd5d6thfd7d8|i q|||d9t|dthfd:thfd;thfd<thfd=thfd5d6thfd>}t|d?kr| j|f|S ||d1  |S )@Nz.https://www.floatplane.com/api/v3/content/postr   zDownloading post datazUnable to download post data)querynoteZerrnote)metadata)ZhasVideoZhasAudioz,Post does not contain a video or audio trackT)expected)creatorurlnamez*https://www.floatplane.com/channel/%s/home/)r"   r6   )Zneeds_subscription)r!   r$   r%   r5   r   r"   releaseDate)r   r    r"   r#   r   ))ZvideoAttachmentsZaudioAttachments.typevideoz*https://www.floatplane.com/api/v3/content/zDownloading z	 metadatar1   r2   z.https://www.floatplane.com/api/v2/cdn/deliveryZvodZaodguid)r9   r<   z stream dataresourceuric                    s2    }| p
i   D ]\}}|d| d|}q|S )Nz{qualityLevelParams.})itemsreplace)r(   pathivalZpath_templater.   r/   format_path   s    z/FloatplaneIE._real_extract.<locals>.format_path)r=   dataZqualityLevels.ZcdnrG   ZqualityLevelParamsnamelabelwidthheight)Z	format_idZformat_noterJ   rK   codecsz/chunk.m3u8r   r   )r&   r   r   r   rB   )r   r   r   formats)r   r   textZlikesZdislikescomments)r   r   r   r   r   r   r   )Z	_match_id_download_jsonanyr   r   r	   r   Z_availabilitystrr   r,   dictappendintr   r   	partitionr
   r   r   lenplaylist_resultupdate)r-   r&   Zpost_idZ	post_datar!   Zcommon_infor@   ZmediaZmedia_idZ	media_typr3   streamrF   rM   ZqualityZ	post_infor.   rE   r/   _real_extract   s    
     




  
 
  
 

zFloatplaneIE._real_extractN)__name__
__module____qualname__
_VALID_URLrU   _TESTSr0   r[   r.   r.   r.   r/   r      s(  " r   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   r   3   )r&   r'   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;   z https://www.floatplane.com/post/r   r   r8   )r   r   r   )
_PAGE_SIZErP   Z
url_resultr   r,   r   )r-   r   Z
creator_idr#   pager1   Z	page_datapostr.   r.   r/   _fetch_page.  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"   r7   )delimz/https://www.floatplane.com/api/v3/creator/namedzcreatorURL[0])r1   r   Zchannelsc                    s   |d  kS )Nr6   r.   )_vr"   r.   r/   <lambda>H      z3FloatplaneChannelIE._real_extract.<locals>.<lambda>F)get_allr   Zabout)r   r   )Z_match_valid_urlgroupr   rP   r   rX   r   	functoolspartialrj   r,   rg   )r-   r&   r5   r   Zcreator_dataZchannel_datar.   rn   r/   r[   ?  s8       
    z!FloatplaneChannelIE._real_extractN)r\   r]   r^   r_   rg   r`   rj   r[   r.   r.   r.   r/   ra     s4   		ra   )rs   commonr   utilsr   r   r   r   r	   r
   r   r   r   r   r   Zutils.traversalr   r   ra   r.   r.   r.   r/   <module>   s   4 ~