o
    iFC                     @   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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dS )    N   )InfoExtractor   )ExtractorErrorOnDemandPagedList
clean_htmldetermine_extfloat_or_noneformat_fieldint_or_nonejoin_nonemptyparse_iso8601url_or_noneurljoin)requiretraverse_objc                   @   s   e Zd Zdd ZdS )FloatplaneBaseIEc                 C   sV  |  |}| j| j d|d|idd| jd}tt|ds$tddd	t|d
g| j dp0d }|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 ]z}|d }|dpvd}	| j| j d|d|dd|	 d| jd}
| j| j d|	 |d|	 dd|id | jd!}t|
d"d#d$d%d&thttd'hf}g }t|
d"d#d(d)d* fD ]}t||d& }t|d+t
hf}i }d }| jd ur,| j||d | j| jtd,|d-d.d/td0|d-d.d/d1}|sq| jd2|d3d d4}|r,| j||d | j| jtd,|d5d.d/td0|d5d.d/d1}|r,|  |d6< |i t|d7t
hfd8dd9thfd8dd:thfd8dd;t
hfd8d<d;t
hfd8dd=d>td?d@hfd8d<d=d>td?d@hfd8d<dAthfd8ddBthfdC	|t|dDd# dE|||pd dF qi }i }t|dGdHd* fD ]+}|dIpdJ}d&|dK i}|dLr||g | q||g | q|i |d|it|dt
hfdMthfdNdOthfdP|||dQ qii |||dRt|dt
hfdSthfdTthfdUthfdVthfdNdOthfdWdX| ji}t|dYkr"| j|fi |S ||d#  |S )ZNz/api/v3/content/postidzDownloading post datazUnable to download post data)querynoteerrnoteimpersonate)metadata)hasVideohasAudioz,Post does not contain a video or audio trackT)expected)creatorurlnamez/channel/%s/home/)channelr   )needs_subscription)uploader_urlchannel_urlavailabilityr   titler   releaseDate)uploaderuploader_idr   
channel_idrelease_timestamp))videoAttachmentsaudioAttachments.typevideoz/api/v3/delivery/infoonDemand)scenarioentityIdzDownloading z stream data)r   r   r   z/api/v3/content/z	 metadataF)r   fatalr   groupsr   origins.urlzcdn base urlvariantsc                 S   s   |d S )Nr4    _vr6   r6   O/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/floatplane.py<lambda>D   s    z0FloatplaneBaseIE._real_extract.<locals>.<lambda>nameDownloadingzm3u8 information delimzFailed to download)r1   r   headersr   r   z0#EXT-X-KEY:METHOD=AES-128,URI="(https?://[^"]+)"zHLS AES key URI)defaultzHLS AES keykeylabelmetawidthheightcodecaudiobitrateaveragei  )scalechannelCountfps)	format_noterF   rG   vcodecacodecvbrabraudio_channelsrN   z/chunk.m3u8mp4)r4   ext	format_idhls_media_playlist_datahls_aes
textTracksc                 S   s   t |d S )Nsrc)r   r7   r6   r6   r:   r;   s       languageenr[   	generatedduration	thumbnailpath)r$   r`   ra   )formats	subtitlesautomatic_captions)r   
display_idtextlikesdislikescomments)r$   description
like_countdislike_countcomment_countra   http_headersr   ) 	_match_id_download_json	_BASE_URL_IMPERSONATE_TARGETanyr   r   r
   r   _availabilitystrr   getr   r   _download_webpage_HEADERSr   _search_regex_request_webpagereadhexappendr   r	   r   	partition
setdefaultr   lenplaylist_resultupdate)selfr4   post_id	post_datar!   common_infoitemsmediamedia_id	media_typstreamr   cdn_base_urlrc   variant
format_urlrW   rY   	m3u8_datakey_urlurlhrd   re   sub_datasub_lang	sub_entry	post_infor6   r6   r:   _real_extract   s  








zFloatplaneBaseIE._real_extractN)__name__
__module____qualname__r   r6   r6   r6   r:   r      s    r   c                   @   s  e Zd ZdZdZdZee ddZdi ddd	d
dddddddddddedededdddddddd d!d"d#d$d%d&d'd(d)d*id+d,i dd-dd.dd/dddedededd0dd1ddddd d!d"d2d$d3d4d5d6d'd7d8d9i dd:dd;dd<dddedededd=dd>ddddd d!d"d?d$d@d4dAd6d'd7d8dBi ddCd	d
ddDddEddFddddGddHddIdedededdddd d!d"dJd$dKdLd'd(d)d*id+dMi ddNddOddNdeddPddQd6d'ddRd dSd4dTdeddUd$dVddWded"dXddYd7dZd[d
dYdPd\dVd]d'dQd^dXdRdTdSd_idZd`dadYdPdbdVd'dQdcdXdRdTdSddigded)d*idfgZdgdh Z	dS )iFloatplaneIEz<https?://(?:(?:www|beta)\.)?floatplane\.com/post/(?P<id>\w+)https://www.floatplane.comNr   )OriginRefererz*https://www.floatplane.com/post/2Yf3UedF7Cr   
yuleLogLTTrV   rU   rf   
2Yf3UedF7Cr$   z;8K Yule Log Fireplace with Crackling Fire Sounds - 10 Hoursrk   z$md5:adf2970e0de1c5e3df447818bb0309f6ra   zre:^https?://.*\.jpe?g$r`   iÌ  rn   rl   rm   release_date20191206r)   i(]r&   LinusTechTipsr'   59f94c0bdd241b70349eb72br!   z5https://www.floatplane.com/channel/linustechtips/homer   zLinus Tech Tipsr(   63fe42c309e691e4e36de93dz:https://www.floatplane.com/channel/linustechtips/home/mainsubscriber_only)r"   r#   skip_downloadm3u8)r4   	info_dictparamsz*https://www.floatplane.com/post/j2jqG3JmgJ
j2jqG3JmgJz5TJM: Does Anyone Care About Avatar: The Way of Water?z$md5:00bf17dc5733e4031e99b7fd6489f274i|ic20221224zThey're Just Movies64135f82fc76ab7f9fbdc876r"   z:https://www.floatplane.com/channel/linustechtips/home/tajmr#   r   )r4   r   playlist_countz*https://www.floatplane.com/post/3tK2tInhoN
3tK2tInhoNz<Extras - How Linus Communicates with Editors (Compensator 4)z$md5:83cd40aae1ce124df33769600c80ca5bi\e20231121zFP Exclusives6413623f5b12cca228a28e78zAhttps://www.floatplane.com/channel/linustechtips/home/fpexclusivez+https://beta.floatplane.com/post/d870PEFXS1
bg9SuYKEww
d870PEFXS1zALCS Drama, TLOU 2 Remaster, Destiny 2 Player Count Drops, + More!z$md5:80d612dcabf41b17487afcbe303ec57din]e20231122i  
GameLinked649dbade3540dbc3945eeda7z@https://www.floatplane.com/channel/linustechtips/home/gamelinkedz*https://www.floatplane.com/post/65B5PNoBtf
65B5PNoBtfzTI recorded the inbuilt demo mode for your 90's enjoyment, thanks for being Floaties!igezThe Trash Network61bc20c9a131fb692bf2a513z7https://www.floatplane.com/channel/TheTrashNetwork/homezDhttps://www.floatplane.com/channel/TheTrashNetwork/home/thedrumthingzThe $50 electronic drum kit.64424fe73cd58cbcf8d8e131z\https://pbs.floatplane.com/blogPost_thumbnails/65B5PNoBtf/725555379422705_1701247052743.jpegzThe Drum Thing20231129r   
ISPJjexylSz!The $50 electronic drum kit. .movzYhttps://pbs.floatplane.com/video_thumbnails/ISPJjexylS/335202812134041_1701249383392.jpegin  )r   rV   r   r)   r$   r(   ra   r#   r&   r`   r   r'   r"   r!   
qKfxu6fEpuaaczRoland TD-7 Demo.m4ar   )r   rV   r   r)   r$   r(   r#   r&   r`   r   r'   r"   r!   z*requires subscription: "The Trash Network")r4   r   r   playlistskipr   c                 C   s"   |  | jds|   d S d S )Nz	sails.sid)_get_cookiesrr   rw   raise_login_required)r   r6   r6   r:   _real_initialize<  s   zFloatplaneIE._real_initialize)
r   r   r   
_VALID_URLrr   rs   ry   int_TESTSr   r6   r6   r6   r:   r      s   	
	
	
	
	
" r   c                   @   s    e Zd ZdZdd Zdd ZdS )FloatplaneChannelBaseIEz8Subclasses must set _RESULT_IE, _BASE_URL and _PAGE_SIZEc              
   c   s    || j || j  d}|r||d< | j| j d||d|d  d}|p&g D ] }| j| j d|d  | j|d |d	t|d
dV  q'd S )N)r   limit
fetchAfterr   z/api/v3/content/creatorzDownloading page r   )r   r   z/post/r   r$   r%   )r   r$   r)   )
_PAGE_SIZErq   rr   
url_result
_RESULT_IErw   r   )r   rf   
creator_idr(   pager   	page_datapostr6   r6   r:   _fetch_pageD  s$   
z#FloatplaneChannelBaseIE._fetch_pagec              
      s   |  |dd\} t| dd}| j| j d|d|idd }t|d	 fd
dfddp0i }| jtt	| j
||d |d| j||dpN|d|dpW|ddS )Nr   r   r   r?   z/api/v3/creator/namedzcreatorURL[0])r   r   channelsc                    s   |d  kS )Nr   r6   r7   r   r6   r:   r;   ^  r\   z7FloatplaneChannelBaseIE._real_extract.<locals>.<lambda>F)get_allr$   about)r$   rk   )_match_valid_urlgroupr   rq   rr   r   r   r   	functoolspartialr   rw   r   )r   r4   r   rf   creator_datachannel_datar6   r   r:   r   U  s*   

z%FloatplaneChannelBaseIE._real_extractN)r   r   r   __doc__r   r   r6   r6   r6   r:   r   A  s    r   c                   @   sV   e Zd ZdZdZdZe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S )FloatplaneChannelIEz`https?://(?:(?:www|beta)\.)?floatplane\.com/channel/(?P<id>[\w-]+)/home(?:/(?P<channel>[\w-]+))?r      z=https://www.floatplane.com/channel/linustechtips/home/ltxexpozlinustechtips/ltxexpozLTX Expoz$md5:9819002f9ebe7fd7c75a3a1d38a59149)r   r$   rk   3   )r4   r   playlist_mincountz1https://www.floatplane.com/channel/ShankMods/home	ShankModsz
Shank Modsz$md5:6dff1bb07cad8e5448e04daad9be1b30   z5https://beta.floatplane.com/channel/bitwit_ultra/homebitwit_ultrazBitwit Ultraz$md5:1452f280bb45962976d4789200f676dd   N)	r   r   r   r   rr   r   r   r   r   r6   r6   r6   r:   r   f  s6    		r   )r   commonr   utilsr   r   r   r   r	   r
   r   r   r   r   r   utils.traversalr   r   r   r   r   r   r6   r6   r6   r:   <module>   s    4  $%