
    V|hQ?                         S SK r SSKJr  SSKJrJrJrJrJrJ	r	J
r
JrJrJrJr  SSKJr   " S S\5      r " S	 S
\5      r " S S\5      rg)    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                       \ rS rSrS rSrg)FloatplaneBaseIE   c                 <  ^ U R                  U5      nU R                  U R                   S3USU0SSU R                  S9n[	        [        US5      5      (       d
  [        SSS	9e[        US
/U R                   S35      =(       d    S nU[        U S3[        US5      5      U R                  SS9S.[        USS[        14SS[        14SS[        14SS[        14S[        14S.5      En/ n[        US5       GH  nUS   nUR                  S5      =(       d    Sn	U R                  U R                   SU	 3USU0SU	 S3U R                  S9n
U R                  U R                   S3UU	S:X  a  SOSU
S   S .SU	 S!3U R                  S9n[        US"S#[        145      mU4S$ jn/ n[        US%5       GH  n[        US&   U" [        US"S'S(US)   [        145      5      5      n[        US)[        145      n0 nS nU R                  b  U R                  XS*U R                  U R                  [!        S+US,S-S.9[!        S/US,S-S.9S09nU(       d  M  U R#                  S1US2S S39nU(       ae  U R%                  UUS*U R                  U R                  [!        S+US4S-S.9[!        S/US4S-S.9S09nU(       a!  UR'                  5       R)                  5       US5'   UR+                  0 [        US6[        14S7[,        14S8[,        14S9.5      E[/        UR                  S:5      5      EU[1        UR3                  S;5      S<   S=5      UUU=(       d    S S>.E5        GM     UR+                  0 UESU0E[        U
S[        14S?[4        14S@SA[6        14SB.5      ESCU0E5        GM     0 UEUUSD.E[        US[        14SE[8        14SF[4        14SG[4        14SH[4        14S@SA[6        14SI.5      ESJU R                  0En[;        U5      SK:  a  U R<                  " U40 UD6$ UR?                  US<   5        U$ )LNz/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/content/zDownloading z	 metadata)r   r   r   z/api/v2/cdn/deliveryvodaodguid)r/   r3   z stream dataresourceuric                 |   > TnU =(       d    0 R                  5        H  u  p#UR                  SU S3U5      nM     U$ )Nz{qualityLevelParams.})itemsreplace)paramspathivalpath_templates       U/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/floatplane.pyformat_path3FloatplaneBaseIE._real_extract.<locals>.format_pathB   s@    $%|224FA<<*?s"(EsKD 5    )r4   dataqualityLevels.cdnrC   qualityLevelParamsnameF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)format_noterQ   rR   codecsz/chunk.m3u8r   mp4)urlext	format_idhls_media_playlist_datahls_aesduration	thumbnailr;   )r'   r[   r\   formats)r   
display_idtextlikesdislikescomments)r'   description
like_countdislike_countcomment_countr\   http_headersr   ) 	_match_id_download_json	_BASE_URL_IMPERSONATE_TARGETanyr   r   r
   r   _availabilitystrr   getdict_download_webpage_HEADERSr   _search_regex_request_webpagereadhexappendintr   r	   	partitionr   r   r   lenplaylist_resultupdate)selfrV   post_id	post_datar$   common_infor8   mediamedia_id	media_typr   streamr@   r]   qualityrX   rZ   	m3u8_datakey_urlurlh	post_infor>   s                        @r?   _real_extractFloatplaneBaseIE._real_extract   s*   ..%''~~23WT7O(2P00 ( 2	
 <	+QRSS !OZ^__#./DNN3CCS1TV ^Y] 	 )"l^1#5|IOe7fg ..$.G
 9&#7 )4#7%w6($6&3m_%E' 	
 !)-\]ET{H		&)4WI**>>""29+>QUW_P`#I;i8dF^F^ + `H ((>>""67%.'%9Eu$V,J 'yk> 44 ) 6F )*ecU1KLM G'0Z[fUm[Z1EwvY]X^_:a .b c(6C5/B	 	 ++7 $ 6 6U@X@Xbfbobo*=)EW_bc -.BIOail m !7 !oI % "00K!#4d 1 DG #44#XUH`H`jnjwjw!.}i^a!b$12F	S`hk$l  5  n  -1YY[__->GEN  "7(/#'7")C5!1#+cU"3-   #7;;x#89  (})Ea)H%P!*/8&$  7 \P LL 		h	 x%u-!+k] ;"-v}!E* 	 7	 	A ^V

!
 9!C5) &5&6",{m!<",{m!<)6K=A' 	
 DMM
	 u:>'';;;q"rB    N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   rB   r?   r   r      s    zrB   r   c                      \ rS rSrSrSrSr\\ S3S.rS0 SS	_S
S_SS_SS_SS_SS_SS_S\_S\_S\_SS_SS_SS_SS _S!S"_S#S$_S%S&_S'S(S).ES*S+0S,.S-0 SS._SS/_SS0_SS_S\_S\_S\_SS1_SS2_SS_SS _S!S"_S#S3_S%S4_S5S6_S7S(_S8S9.S:0 SS;_SS<_SS=_SS_S\_S\_S\_SS>_SS?_SS_SS _S!S"_S#S@_S%SA_S5SB_S7S(_S8S9.SC0 SSD_S
S_SSE_SSF_SSG_SS_SSH_SSI_SSJ_S\_S\_S\_SS_SS _S!S"_S#SK_S%SL_SMS(S).ES*S+0S,.SN0 SSO_SSP_SSO_S\_SSQ_SSR_S7S(_SSS_S!ST_S5SU_S\_SSV_S%SW_SSX_S\_S#SY_SSZ_S8S[S\SSZSQS]SWS^S(SRS_SYSSSUSTS`.0S[SaSbSZSQScSWS(SRSdSYSSSUSTSe.0/SfS*S+0Sg./r	Sh r
Sirg)jFloatplaneIE   z<https?://(?:(?:www|beta)\.)?floatplane\.com/post/(?P<id>\w+)zhttps://www.floatplane.comNr!   )OriginRefererz*https://www.floatplane.com/post/2Yf3UedF7Cr   
yuleLogLTTrW   rU   r^   
2Yf3UedF7Cr'   z;8K Yule Log Fireplace with Crackling Fire Sounds - 10 Hoursrc   z$md5:adf2970e0de1c5e3df447818bb0309f6r\   zre:^https?://.*\.jpe?g$r[   iÌ  rf   rd   re   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)rV   	info_dictr:   z*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   )rV   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   rW   r   r,   r'   r+   r\   r&   r)   r[   r"   r*   r%   r$   
qKfxu6fEpuaaczRoland TD-7 Demo.m4ar   )r   rW   r   r,   r'   r+   r&   r)   r[   r"   r*   r%   r$   z*requires subscription: "The Trash Network")rV   r   r   playlistskipr:   c                     U R                  U R                  5      R                  S5      (       d  U R                  5         g g )Nz	sails.sid)_get_cookiesrj   ro   raise_login_required)r}   s    r?   _real_initializeFloatplaneIE._real_initialize0  s4      044[AA%%' BrB   r   )r   r   r   r   
_VALID_URLrj   rk   rr   rx   _TESTSr   r   r   rB   r?   r   r      s7   PJ,I[?H
 <
,
5
 ,
 R	

 A
 3
 
 S
 #
 S
 J
  
 
 5
 S
  (!
" 4#
$ X-'
* #F+/2 <
,
L
 A
 3	

 S
 #
 S
  
 J
 
 5
 S
 ,
 4
 W
  -!
$ ), <
,
S
 A
 3	

 S
 #
 S
  
 J
 
 5
 S
 
 4
 ^
  -!
$ ), =
,
5
 ,
 X	

 A
 3
  
 J
 
 #
 S
 S
 
 5
 S
  |!
" 4#
$ ^-'
* #F+/2 <
,
r
 ,
 #	

  
 +
 -
 5
 U
 a
 S
 3
 4
 w
 S
  '!
" J#
& " *%/<8x 1/+9e Y
$ " *%//8 1/+9e Y
#!D ="F+s:uTFl(rB   r   c                   b    \ rS rSrSrSrSSSSS.S	S
.SSSSS.SS
.SSSSS.SS
./rS rS rSr	g)FloatplaneChannelIEi5  z`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'   rc   3   )rV   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   c              #   @  #    UU R                   X@R                   -  S.nU(       a  X5S'   U R                  SUUSUS-    3S9nU=(       d    /  HL  nU R                  SUS    3[        US   UR	                  S	5      [        UR	                  S
5      5      S9v   MN     g 7f)N)r   limit
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_SIZEri   
url_resultr   ro   r   )r}   r^   
creator_idr+   pager   	page_dataposts           r?   _fetch_pageFloatplaneChannelIE._fetch_pageR  s     __0

 ))''? 1$(< ( >	 OOD//24:,?d488G3D"/0G"H " J J $s   BBc                   ^ U R                  U5      R                  SS5      u  nm[        UTSS9nU R                  SUSU0S9S   n[	        US	U4S
 j4SS9=(       d    0 nU R                  [        [        R                  " U R                  X4S   UR                  S5      5      U R                  5      X5R                  S5      =(       d    UR                  S5      UR                  S5      =(       d    UR                  S5      S9$ )Nr   r"   r!   rJ   z/https://www.floatplane.com/api/v3/creator/namedzcreatorURL[0])r   r   channelsc                    > US   T:H  $ )Nr    r   )_vr"   s     r?   <lambda>3FloatplaneChannelIE._real_extract.<locals>.<lambda>l  s    AiLG4KrB   F)get_allr'   about)r'   rc   )_match_valid_urlgroupr   ri   r   r{   r   	functoolspartialr   ro   r   )r}   rV   r   r^   creator_datachannel_datar"   s         @r?   r   !FloatplaneChannelIE._real_extractc  s   005;;D)L"7G3?
**=8 + ::;= $:'KLV[] c`b 	 ##$5i6G6Gjt*<l>N>Nt>T7VW[WfWf%h..w7T<;K;KG;T$((1N\5E5Eg5N $ P 	PrB   r   N)
r   r   r   r   r   r   r   r   r   r   r   rB   r?   r   r   5  sv    tJJN)A

   C!A

   G #A

 !!F4J"PrB   r   )r   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r   utils.traversalr   r   r   r   r   rB   r?   <module>r      sQ     !    +{} {|`(# `(F<P- <PrB   