
    V|h                         S SK r S SKrS SKrSSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJrJrJr  SS	KJr   " S
 S\5      rg)    N   )FileDownloader)FFmpegFD   )Request)WebSocketResponse)DownloadErrorstr_or_nonetruncate_string)traverse_objc                       \ rS rSrSrS rSrg)NiconicoLiveFD   z.Downloads niconico live without being stopped c                 L  ^ ^^	^
^^ US   m
US   nUS   US   US   sm	mm[        T R                  T R                  =(       d    0 5      nUR                  5       nSUS'   U	U UU4S jmUU U
4S	 jn[        R
                  " US
S9nUR                  5         UR                  X5      $ )Niddownloader_optionsmax_qualitywsws_urlm3u8protocolc                 4  > U (       d  [        T[        5      (       d  TR                  R                  [	        TSS0S95      nTR                  R
                  R                  SS5      (       a  TR                  S5        UR                  [        R                  " SSSS	.S
SSSTS.S.SS.5      5        OTnU    UR                  5       nU(       d  M  [        R                  " U5      nU(       a  [        U[        5      (       d  MN  UR                  S5      S:X  a#  UR                  S5        UR                  S5        OUR                  S5      S:X  a  TR                  U5         S S S 5        gUR                  S5      S:X  a8  TR                  U5        [        USS[        14US9n[!        U5      sS S S 5        $ TR                  R
                  R                  SS5      (       a  TR                  S[#        US5       35        GMN  ! , (       d  f       g = f)NOriginzhttps://live.nicovideo.jp)headersverboseFzSending startWatching requestT	webSocket)commentabler   single_cookiehighhls)accessRightMethod	chasePlaylatencyr   quality)	reconnectroomstreamstartWatching)datatyper*   pingz{"type":"pong"}z{"type":"keepSeat"}
disconnecterrorbodycode)defaultzServer response: d   )
isinstancer   ydlurlopenr   paramsgetwrite_debugsendjsondumpsrecvloadsdictr   r
   r	   r   )	r%   r   r;   r)   messager$   selfws_extractorr   s	        T/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/downloader/niconico.pycommunicate_ws4NiconicoLiveFD.real_download.<locals>.communicate_ws   s   
<9J K KXX%%gX/J$K'M N88??&&y%88$$%DE

%)+/(3!
 2A).'-(-'.# ,$  $ "779D ::d+Dz$'='= xx'61 23 67&)\9((.#  &)W4((.".tff{m5T^b"c,W5# $ ,,Y>>((+<_TSV=W<X)YZ%  s   9B.H	0AH	=AH		
Hc                     > Sn   T" U 5      nUSL a   Sn g  Sn M  ! [          a:  nTR                  ST SU 35        [        R                  " S5         S nASn MW  S nAff = f! Sn f = f)NFTz[niconico:live] z;: Connection error occured, reconnecting after 10 seconds: 
   )BaseException	to_screentimesleep)r%   reterB   r?   video_ids      rA   ws_main-NiconicoLiveFD.real_download.<locals>.ws_mainH   s    I
%(3Cd{ !%I # !%I 
 % NN*8*4opqorsuJJrN $I !%Is&    
A -AA# A  A# #A'T)targetdaemon)r   r3   r5   copy	threadingThreadstartdownload)r?   filename	info_dictoptsdlnew_info_dictrM   threadrB   r$   rL   r@   r   s   `       @@@@@rA   real_downloadNiconicoLiveFD.real_download   s    T?-.(,](;T$Zh%vdhh 1r2!($*j!-	[ -	[^	% !!>{{833     N)__name__
__module____qualname____firstlineno____doc__r\   __static_attributes__r_   r^   rA   r   r      s    9J4r^   r   )r9   rR   rH   commonr   externalr   
networkingr   networking.websocketr   utilsr	   r
   r   utils.traversalr   r   r_   r^   rA   <module>rl      s1       "    4 ? ? *M4^ M4r^   