a
    h                     @   s`   d dl Z ddlmZ ddlmZmZmZmZmZ ddl	m
Z
 G dd deZG d	d
 d
eZdS )    N   )InfoExtractor   )determine_extint_or_noneparse_durationparse_iso8601url_or_none)traverse_objc                   @   s   e Zd ZdZdZdg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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/d0 Zd1d2 Zd3S )4KikaIEzKiKA.dez=https?://(?:www\.)?kika\.de/[\w/-]+/videos/(?P<id>[a-z-]+\d+)ZDEzdhttps://www.kika.de/logo/videos/logo-vom-samstag-einunddreissig-august-zweitausendvierundzwanzig-100Z fbfc8da483719ef06f396e5e5b938c69zDlogo-vom-samstag-einunddreissig-august-zweitausendvierundzwanzig-100mp4Z20240831iWfi  zEpisode 476i  zSeason 2024iz  z"logo! vom Samstag, 31. August 2024idf)idextupload_date	timestampseason_numbermodified_dateepisodeepisode_numberseasondurationtitlemodified_timestamp)urlmd5	info_dictz/https://www.kika.de/kaltstart/videos/video92498Z 710ece827e5055094afeb474beacb7aaZ
video92498z7. Wo ist Leo?z$md5:fb48396a5b75068bcac1df74f1524920i  ieZ20231218   Z20240319ibez	Episode 7r   zSeason 1)r   r   r   descriptionr   r   r   r   r   r   r   r   r   z>https://www.kika.de/bernd-das-brot/astrobrot/videos/video90088Z ffd1b700d7de0a6616a1d08544c77294Z
video90088Z20221102it\bc   i8e   z*Es ist nicht leicht, ein Astrobrot zu seinZ20240322z$md5:d3641deaf1b5515a160788b2be4159a9z	Episode 8)r   r   r   r   r   r   r   r   r   r   r   r   r   c                 C   s   |  |}| d| |}| |d d |}i }t|d }rV|ddg|d< t|d }r|dg |d	d |t| |||d
t|dt	hfdt	hfdt
hfdt
hfdthfdthfftfdthfdthfdS )Nz.https://www.kika.de/_next-api/proxy/v1/videos/assetsr   ZvideoSubtitleZttml)r   r   deZ	webvttUrlZvtt)r   formats	subtitlesr   r   dateZmodificationDateZdurationInSecondsr   ZepisodeNumberr   )r   r   r   r   r   r   r   )	_match_id_download_jsonr	   get
setdefaultappendlist_extract_formatsr
   strr   r   r   any)selfr   video_iddocZvideo_assetsr#   Zttml_resourceZwebvtt_resource r1   J/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/kika.py_real_extractJ   s>    
zKikaIE._real_extractc                 c   s   t |ddd fD ]}|d }t|}|dkrJ| j||dddd	E d H  q||d
t |dthfdthfdthtfdthdd hfdthdd hfdV  qd S )Nr    c                 S   s   t |d S )Nr   r	   _vr1   r1   r2   <lambda>n       z)KikaIE._extract_formats.<locals>.<lambda>r   Zm3u8r   ZhlsF)Zm3u8_idfatal)r   Z	format_idZ
frameWidthZframeHeightZfileSizeZbitrateAudioc                 S   s   | dkrd S | S Nr1   xr1   r1   r2   r8   }   r9   ZbitrateVideoc                 S   s   | dkrd S | S r;   r1   r=   r1   r1   r2   r8   ~   r9   )widthheightfilesizeZabrZvbr)r
   r   Z_extract_m3u8_formatsr   filter)r.   Z
media_infor/   ZmediaZ
stream_urlr   r1   r1   r2   r+   m   s$    

zKikaIE._extract_formatsN)	__name__
__module____qualname__ZIE_DESC
_VALID_URLZ_GEO_COUNTRIES_TESTSr3   r+   r1   r1   r1   r2   r      sp   7#r   c                   @   s6   e Zd ZdZdddddddgZd	d
 Zdd ZdS )KikaPlaylistIEz5https?://(?:www\.)?kika\.de/[\w-]+/(?P<id>[a-z-]+\d+)z2https://www.kika.de/logo/logo-die-welt-und-ich-562zlogo-die-welt-und-ich-562zlogo!z$md5:7b9d7f65561b82fa512f2cfb553c397d)r   r   r   d   )r   r   Zplaylist_countc                 c   s   t dD ]}| j||d| d}t|ddd fD ]L}| j|d d fd	tit|d
thfdthfdthfdthfdV  q6t|ddt	hf}|s
 qq
d S )Nr   zDownloading page )Znotecontentc                 S   s   t |d d S )Napir   r4   r5   r1   r1   r2   r8      r9   z)KikaPlaylistIE._entries.<locals>.<lambda>rK   r   Zier   r   r   r$   )r   r   r   r   linksnext)
	itertoolscountr&   r
   Z
url_resultr   r,   r   r   r	   )r.   Zplaylist_urlplaylist_idpagedataitemr1   r1   r2   _entries   s$    

	zKikaPlaylistIE._entriesc                 C   sJ   |  |}| d| |}| j| |d d |||d|ddS )Nz.https://www.kika.de/_next-api/proxy/v1/brands/ZvideoSubchannelZvideosPageUrlr   r   )r   r   )r%   r&   Zplaylist_resultrT   r'   )r.   r   rP   Z
brand_datar1   r1   r2   r3      s    

zKikaPlaylistIE._real_extractN)rC   rD   rE   rF   rG   rT   r3   r1   r1   r1   r2   rH      s   
rH   )rN   commonr   utilsr   r   r   r   r	   Zutils.traversalr
   r   rH   r1   r1   r1   r2   <module>   s
   u