
    ukiB                         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e      Z G d	 d
e      Z G d de      Zy)    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                       e Zd Zd Zy)FloatplaneBaseIEc                 	   | j                  |      }| j                  | j                   d|d|idd| j                        }t	        t        |d            st        dd	      t        |d
g| j                   d      xs d }|t        | dt        |d            | j                  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   }|j                  d      xs d}	| j                  | j                   d|d|dd|	 d| j                        }
| j                  | j                   d|	 |d|	 dd|id | j                  !      }t        |
d"d#d$d%d&t        ht        t        d'      hf      }g }t        |
d"d#d(d) f      D ]  }t        ||d&         }t        |d*t        hf      }i }d }| j                  | j                  ||d | j                  | j                   t#        d+|d,d-.      t#        d/|d,d-.      0      }|s| j%                  d1|d2d 3      }|ri| j'                  ||d | j                  | j                   t#        d+|d4d-.      t#        d/|d4d-.      0      }|r!|j)                         j+                         |d5<   |j-                  i t        |d6t        hfd7dd8t.        hfd7dd9t.        hfd7dd:t        hfd7d;d:t        hfd7dd<d=t/        d>?      hfd7d;d<d=t/        d>?      hfd7d;d@t.        hfd7ddAt0        hfdB	      |t3        |j5                  dC      d#   dD      |||xs d dE        i }i }t        |dFdG f      D ]r  }|j                  dH      xs dI}d&|dJ   i}|j                  dK      r"|j7                  |g       j-                  |       R|j7                  |g       j-                  |       t |j-                  i |d|it        |dt        hfdLt.        hfdMdNt        hfdO      |||dP       = i |||dQt        |dt        hfdRt8        hfdSt.        hfdTt.        hfdUt.        hfdMdNt        hfdV      dW| j                   i}t;        |      dXkD  r | j<                  |fi |S |j?                  |d#          |S )YNz/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                     |d   S )Nr7    _vs     V/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/yt_dlp/extractor/floatplane.py<lambda>z0FloatplaneBaseIE._real_extract.<locals>.<lambda>D   s    WXY^W_     nameDownloadingzm3u8 information delimzFailed to download)r4   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_noterK   rL   vcodecacodecvbrabraudio_channelsrS   z/chunk.m3u8mp4)r7   ext	format_idhls_media_playlist_datahls_aes
textTracksc                     t        |d         S )Nsrc)r   r;   s     r>   r?   z0FloatplaneBaseIE._real_extract.<locals>.<lambda>s   s    {[\]b[cOd r@   languageenra   	generatedduration	thumbnailpath)r'   re   rf   )formats	subtitlesautomatic_captions)r   
display_idtextlikesdislikescomments)r'   description
like_countdislike_countcomment_countrf   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)selfr7   post_id	post_datar$   common_infoitemsmediamedia_id	media_typstreamr   cdn_base_urlrh   variant
format_urlr\   r^   	m3u8_datakey_urlurlhri   rj   sub_datasub_lang	sub_entry	post_infos                              r>   _real_extractzFloatplaneBaseIE._real_extract   s    ..%''~~23WT7O(2P00 ( 2	
 <	+QRS !OZ^__#./DNN3CCS1TV ^Y] 	 )"l^1#5|IOe7fg ..$.G
 9&#7 )4#7%w6($6&3m_%E' 	
 !)-\] U	ET{H		&)4WI((>>""78(#-8D#I;l; 44	 ) 6F **>>""29+>yk3D(;K)A)A + CH
 (!YU[M3Q_I`Ha1c dL G'1jJ_0`a +$\75>B
(6C5/B	 	 ++7 $ 6 6"HEtG_G_imiviv*=)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"('7[M!J#)7H{m"L#)7GcU"C#)7GcU"C &IZ^H_G`a &IZ^H_G`a+17N[M*Z &H
- 
  &()=)=m)LQ)OQVW!*/8&$!  5+Z I!#(LBd3ef I#<<
3;t"HUO4	<<,&11(B?FFyQ((26==iHI LL h x%u-!+k] ;"-v}!E*  #&&8 UU	n

!
 9!C5) &5&6",{m!<",{m!<)6K=A' 	
 DMM
	 u:>'4'';;;q"r@   N)__name__
__module____qualname__r   r:   r@   r>   r   r      s    Fr@   r   c                      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dg Z	y)hFloatplaneIEz<https?://(?:(?:www|beta)\.)?floatplane\.com/post/(?P<id>\w+)zhttps://www.floatplane.comNr!   )OriginRefererz*https://www.floatplane.com/post/2Yf3UedF7Cr   
yuleLogLTTr[   rZ   rk   
2Yf3UedF7Cr'   z;8K Yule Log Fireplace with Crackling Fire Sounds - 10 Hoursrp   z$md5:adf2970e0de1c5e3df447818bb0309f6rf   zre:^https?://.*\.jpe?g$re   iÌ  rs   rq   rr   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)r7   	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   )r7   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   r[   r   r,   r'   r+   rf   r&   r)   re   r"   r*   r%   r$   
qKfxu6fEpuaaczRoland TD-7 Demo.m4ar   )r   r[   r   r,   r'   r+   r&   r)   re   r"   r*   r%   r$   z*requires subscription: "The Trash Network")r7   r   r   playlistskipr   c                 z    | j                  | j                        j                  d      s| j                          y y )Nz	sails.sid)_get_cookiesrw   r|   raise_login_required)r   s    r>   _real_initializezFloatplaneIE._real_initialize<  s1      044[A%%' Br@   )
r   r   r   
_VALID_URLrw   rx   r~   int_TESTSr   r:   r@   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(r@   r   c                   Z    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 Zd Zy)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'   rp   3   )r7   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              #   8  K   || j                   || j                   z  d}|r||d<   | j                  d||d|dz          }|xs g D ]N  }| j                  d|d    t        |d   |j	                  d	      t        |j	                  d
                   P y w)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_SIZErv   
url_resultr   r|   r   )r   rk   
creator_idr+   pager   	page_dataposts           r>   _fetch_pagezFloatplaneChannelIE._fetch_page^  s     __0

 )E)''? 1$(< ( >	 O 	JD//24:,?d488G3D"/0G"H " J J	Js   BBc                    | j                  |      j                  dd      \  }t        |d      }| j                  d|d|i      d   }t	        |d	fd
fd      xs i }| j                  t        t        j                  | j                  ||d   |j                  d            | j                        ||j                  d      xs |j                  d      |j                  d      xs |j                  d            S )Nr   r"   r!   rD   z/https://www.floatplane.com/api/v3/creator/namedzcreatorURL[0])r   r   channelsc                     |d   k(  S )Nr    r:   )r<   r=   r"   s     r>   r?   z3FloatplaneChannelIE._real_extract.<locals>.<lambda>x  s    AiLG4K r@   F)get_allr'   about)r'   rp   )_match_valid_urlgroupr   rv   r   r   r   	functoolspartialr   r|   r   )r   r7   r   rk   creator_datachannel_datar"   s         @r>   r   z!FloatplaneChannelIE._real_extracto  s   005;;D)L"7G3?
**=8 + ::;= $:'KLV[] c`b 	 ##$5i6G6Gj,t*<l>N>Nt>T7VW[WfWf%hl..w7T<;K;KG;T$((1N\5E5Eg5N $ P 	Pr@   N)r   r   r   r   r   r   r   r   r:   r@   r>   r   r   A  sv    tJJN)A

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

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

 !!F4J"Pr@   r   )r   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r   utils.traversalr   r   r   r   r   r:   r@   r>   <module>r      sQ     !    4G} GT`(# `(F<P- <Pr@   