
    VGh5                     j    d dl Z d dlZd dlZddlmZ ddlmZ ddlmZ ddl	m
Z
mZmZ  G d d	e      Zy)
    N   )FileDownloader)FFmpegFD   )Request)DownloadErrorstr_or_nonetry_getc                       e Zd ZdZd Zy)NiconicoLiveFDz/ Downloads niconico live without being stopped c                    	
 |d   
|d   |d   |d   |j                  dd      	|j                  dd      t         j                   j                  xs i       }|j	                         }|j                  dd	i       	 fd
 
fd}t        j                  |d      }|j                          |j                  ||      S )Nvideo_idurlwsoriginlive_qualityhighlive_latencyprotocolm3u8c                    | rj                   j                  t        
dd	 i            }j                   j                  j	                  dd      rj                  d       |j                  t        j                  ddd	dd
dddddd             n}|5  	 |j                         }|st        j                  |      }|rt        |t              s<|j	                  d      dk(  r#|j                  d       |j                  d       n|j	                  d      dk(  rj                  |       	 d d d        y|j	                  d      dk(  r;j                  |       t        |d t              xs |}t!        |      cd d d        S j                   j                  j	                  dd      r*t#        |      dkD  r|d d dz   }j                  d|        B# 1 sw Y   y xY w)NOriginzhttps://)headersverboseFz%[debug] Sending startWatching requeststartWatchingzhls+fmp4single_cookie)qualityr   latencyaccessRightMethod	chasePlay	webSocketT)r   commentable)streamroom	reconnect)typedatar&   pingz{"type":"pong"}z{"type":"keepSeat"}
disconnecterrorc                     | d   d   S )Nbodycode )xs    c/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/downloader/niconico.py<lambda>zFNiconicoLiveFD.real_download.<locals>.communicate_ws.<locals>.<lambda>E   s    !F)F:K     d   z...z[debug] Server said: )ydlurlopenr   paramsget	to_screensendjsondumpsrecvloads
isinstancedictwrite_debugr
   strr   len)r%   r   r<   r'   messager   r   selfws_extractorws_origin_hostws_urls        r0   communicate_wsz4NiconicoLiveFD.real_download.<locals>.communicate_ws   s   XX%%gfx8TbScId>e&fg88??&&y%8NN#JK

+ (4(2'31@).# )4+/! &*$  $ " G779D ::d+Dz$'= xx'61 23 67&)\9((.#G G &)W4((.")$0KS"Q"YUY,W5%G G& ,,Y>t9s?#':#5D)>tf'EF+ G Gs   BG#AG#AG##G,c            
          d} 	 	  |       }|du r	 d} y 	 d} # t         $ rL}j                  dj                  dt        |                   t	        j
                  d       Y d }~d} fd }~ww xY w# d} w xY w)NFTzD[{}] {}: Connection error occured, reconnecting after 10 seconds: {}zniconico:live
   )BaseExceptionr8   formatr	   timesleep)r%   reterH   rD   r   s      r0   ws_mainz-NiconicoLiveFD.real_download.<locals>.ws_mainL   s    I	%(3Cd{ !%I # !%I 
 % NN#i#p#p  rA  CK  MX  YZ  M[  $\  ]JJrN $I
 !%Is'    	A/A A*#A2 *A//A2 2A6T)targetdaemon)
r7   r   r4   r6   copyupdate	threadingThreadstartdownload)rD   filename	info_dictdlnew_info_dictrQ   threadrH   r   r   r   rE   rF   rG   s   `      @@@@@@@r0   real_downloadzNiconicoLiveFD.real_download   s    Z(5! "8, }}^V< }}^V<dhh 1r2!(
 	.	G .	G`	% !!>{{8]33r2   N)__name__
__module____qualname____doc__r_   r.   r2   r0   r   r      s    9O4r2   r   )r:   rV   rM   commonr   externalr   
networkingr   utilsr   r	   r
   r   r.   r2   r0   <module>rh      s+       "    7 7R4^ R4r2   