
    VGh>                     j    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 ddlmZ  G d de      Zy)	    N   )InfoExtractor   )
ExtractorError
clean_htmlfilter_dictget_element_by_idint_or_nonejoin_nonempty
js_to_json	qualitiesurl_or_noneurljoin)traverse_objc                   d    e 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ddddgZddZd Zd Zy)KukuluLiveIEz1https?://live\.erinn\.biz/live\.php\?h(?P<id>\d+)z*https://live.erinn.biz/live.php?h675134569 e380fa6a47fc703d91cea913ab44ec2e	675134569mp4u   プロセカu*   テストも兼ねたプロセカ配信。i||e20231216zre:^https?://.*)idexttitledescription	timestampupload_date	thumbnail)urlmd5	info_dictz*https://live.erinn.biz/live.php?h102338092 dcf5167a934b1c60333461e13a81a6e2	102338092u   Among Usで遊びます！！uK   VTuberになりましたねんねこ㌨ですよろしくお願いしますi-e20240107z*https://live.erinn.biz/live.php?h878049531T)r   only_matchingNc                     ||rdndz  }| j                  d|d| dd| dt        |d| d|d	      
      }t        j                  j	                  |      S )Nz (force_h264) z.https://live.erinn.biz/live.player.fplayer.phpzDownloading z quality metadatazUnable to download get
liveByAjax)hashaction
force_h264query)_download_webpager   urllibparseparse_qs)selfvideo_iddesccoder+   qss         d/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/kukululive.py_get_quality_metazKukuluLiveIE._get_quality_meta2   sz    :25##<h4& 126I$O`4a vZ0(  $  ||$$R((    c                 P   t        |ddt        hf      }t        |ddt        hf      } t        d      |      }t        |ddt        hf      r|j	                  ||d   d   d||d       t        |ddt        hf      r(|j	                  t        |d	      |d   d   d
d|d       y y )Nvcodecr   now_quality)lowh264highhlsaddrr   )	format_idr   r   r;   qualityhlsaddr_audioonly	audioonlym4anone)r   strr   r   appendr   )r2   formatsquality_metar;   rB   quality_prioritys         r7   _add_quality_formatsz!KukuluLiveIE._add_quality_formats>   s    lXq3%,@A|mQ-FG=9%<=gFy!k]&CDNN$#I.q1 +  ':A}&MNNN*7K@#$78; +  Or9   c           
      D  
 | j                  |      | j                  |      }d|v rt        dd      t        t	        d|j                  dd      j                  dd	                  | j                  d
|      
| j                  ddg|      | j                  d|dd      rug }dD ]e  \  }}| j                  ||      }| j                  ||       |dk(  s1t        |d      dk(  sA| j                  || j                  ||d             g 
d|dS | j                  ddddi      }t        | j                  d|ddt               d!       }d&
fd"	}	t        |      d#k(  rt         |	|d$            S | j                   |	|      
d%      S )'Nu8   >タイムシフトが見つかりませんでした。<zThis stream has expiredT)expected	livetitlez<SPANz<spanzSPAN>zspan>Descriptionzog:imageztwitter:imagez(var\s+timeshift\s*=\s*false)zis livestreamF)default))r?   Z)r=   ForceLowr?   )r;   r   HEVC1)r+   )r   r   r   r   is_liverI   z1https://live.erinn.biz/live.timeshift.fplayer.phpzDownloading player htmlzUnable to download player htmlr)   r,   zvar\s+fplayer_source\s*=zstream dataz\[(?s:.+)\])contains_patterntransform_sourcec                     |d   S )Nfile )_vs     r7   <lambda>z,KukuluLiveIE._real_extract.<locals>.<lambda>x   s    XYZ`Xa r9   c              3      K   t        | d      D ]F  \  }}|r d| n|r d| dnt        |dt        hf      t        d|d         dd	d
gd H y w)Nr   r\   z (Part )
time_startzhttps://live.erinn.bizrZ   r   m3u8_native)r   r   protocol)r   r   r   r   r   rI   )	enumerater   r
   r   )segmentsplaylistisegmentr   r   r   r3   s       r7   entriesz+KukuluLiveIE._real_extract.<locals>.entriesz   s     '!4 
7/7XJas+X6>wgaS2E#.!-g{m7T!U!*&'?Q$$1!   s   AAr   )rf   )multi_video)T)	_match_idr.   r   r   r	   replace_html_search_meta_search_regexr8   rL   r   _search_jsonr   lennextplaylist_result)r2   r   htmlrI   r4   r5   rJ   player_htmlsourcesri   r   r   r   r3   s             @@@@r7   _real_extractzKukuluLiveIE._real_extractS   s   >>#&%%c84EM !:TJJk4<<+I+Q+QRY[b+cdf,,]DA**J+H$O	>o_deG D _t#55hdK))'<@6>l<&OSY&Y--!7!7$Y\!7!]_	_ *&"  ,,?%'GPVX`Oa - c t00'mX+j  1  JKac	 	 w<1%899##GG$4h{`d#eer9   )N)__name__
__module____qualname__
_VALID_URL_TESTSr8   rL   rv   r[   r9   r7   r   r      sw    EJ;1#G#%+
 <14h#%+
 <1F:
)*9fr9   r   )urllib.parser/   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   utils.traversalr   r   r[   r9   r7   <module>r      s/     !   +yf= yfr9   