
    VGh#                         d dl Z d dlZd dlZ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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ISO639Utilsdetermine_extfilter_dictfloat_or_noneint_or_nonejoin_nonemptymake_archive_idparse_codecsparse_iso8601parse_qssmuggle_urlunified_timestampunsmuggle_urlurl_or_noneurljoinvariadic)requiretraverse_objc                   j    e Zd ZdgZdZi Zd ZddZd Zd Z	e
d        Zd	 Zdd
ZddZe
d        Zy)	ZDFBaseIEDE)zdfz	api-tokenc                    | j                   s?| j                   j                   | j                  j                  | j                  di i       t        | j                   dt        hfd      t        t        j                               k  r_| j                   j                  | j                  dd dd              | j                  j                  g | j                  | j                     | j                   d    d	| j                   d
    S )Ndefaultexpiresr   r   z0https://zdf-prod-futura.zdf.de/mediathekV2/tokenzDownloading API tokenzFailed to download API tokentype token)_token_cacheupdatecacheload_TOKEN_CACHE_PARAMSr   r   inttime_download_jsonstore)selfs    ]/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/zdf.py_get_api_tokenzZDFBaseIE._get_api_token"   s       $$_TZZ__d6N6N%[XZ%[\))I}+EqQTWX\XaXaXcTdd$$T%8%8BD')G&I J DJJJd66J8I8IJ##F+,Ad.?.?.H-IJJ    Nc           
      P    | j                  ||d| d| t        d|i            S )NDownloading Failed to download Api-Auth)headers)r+   r	   )r-   urlvideo_iditem	api_tokens        r.   	_call_apizZDFBaseIE._call_api1   s?    ""\$04Gv2NY 78 # : 	:r0   c                     |rt        |t              sy t        j                  d|      }|r5t	        |j                  d            t	        |j                  d            z  S d S )Nz(?P<width>\d+):(?P<height>\d+)widthheight)
isinstancestrrematchr)   group)r-   aspect_ratiomobjs      r.   _parse_aspect_ratiozZDFBaseIE._parse_aspect_ratio6   sQ    :lC#@xx9<HGKs4::g&'#djj.B*CCUQUUr0   c                 J    t        |d dt        hfdt        hfdf      xs d S )Nc                     |d   S )NanchorOffset _vs     r.   <lambda>z-ZDFBaseIE._extract_chapters.<locals>.<lambda>=   s    .0A r0   rH   anchorLabel)
start_timetitle)r   r
   r?   )r-   datas     r.   _extract_chapterszZDFBaseIE._extract_chapters<   s=    D#A)M?;#cU+D
 #   	r0   c                     t               }i }| D ]l  }t        |j                  d            }|r||v r$|j                  |       |j                  d      xs d}|j	                  |g       j                  d|i       n |S )Nurilanguagedeur6   )setr   getadd
setdefaultappend)src	seen_urls	subtitlescaptionsubtitle_urllangs         r.   _extract_subtitleszZDFBaseIE._extract_subtitlesB   s    E		 	G&w{{5'9:L<9#<MM,';;z*3eD  r*11|3 	 r0   c                 :    t        ||j                  dd            S )Nz
{playerId}android_native_6)r   replace)r-   api_base_urltemplates      r.   _expand_ptmd_templatezZDFBaseIE._expand_ptmd_templateQ   s    |X%5%5lDV%WXXr0   c                 &   d }d }g g }}t               }	t        |      D ]  }
t        |
i       \  }
}|j                  d      dk(  }| j	                  |
|d|      }|j                  d      xs | j                  d|
dd       }|s|s|}|st        |dd	d
t        d      hf      }|t        |ddt        hf      z  }t        |ddddt        hf      D ]!  }t        |ddt        hf      D ]  }t        |ddd f      D ]  }|d   }||	v r|	j                  |       t        |      }|dk(  r| j                  ||ddd      }n|dv rt        |j                  d            }|r|rt        ||z        nd }d|it        |j                  d            ||t        d|j                  d             t        | j                  d!|d"d             d#g}n| j!                  d$| d%|&       g }|j                  d'      }|D ]  }t#        j$                  |j                  d(      xs |j                  d(      xs d)j'                               }|j                  d*      d+k(  }|j)                  i |t        |d,   |xr d-      t        | xr ||xr d.|j                  d/      d01      |rd2nd3||r|j                  d/      d4k(  s|s|d5k(  rd6n|d7k(  r|d8k(  rd9n|d7k(  rd:n|d8k(  rd;nd3d<         	 $  |xs |||| j+                  |      d=S )>Nvod_media_typeDGSz	PTMD databasenamez/vod/ptmd/[^/?#]+/(\w+)z
content IDr    
attributesdurationvaluei  )scalecaptions.priorityListformitaeten	qualitiesaudiotracksc                     t        |d         S )NrT   r   rJ   s     r.   rM   z)ZDFBaseIE._extract_ptmd.<locals>.<lambda>q   s    ZefghmfnZo r0   rT   m3u8mp4hlsF)m3u8_idfatal)rz   webmhighestVerticalResolutionr6   	mimeCodechttpr!   z_(\d+)k_tbr)r=   r<   	format_idr   z Skipping unsupported extension "")r7   classrU    vcodecnoner   dgszGerman Sign Languageformat_notez, delimAudiodeskriptionadirV   main
      r   )r   r   
preferencerU   language_preference)idrn   formatsr^   )rW   r   r   rX   r:   _search_regexr   r
   dictrY   r   _extract_m3u8_formatsr   roundr   r   report_warningr   
short2longlowerr[   rb   )r-   	ptmd_urlsr7   r9   rC   
content_idrn   r   src_captionsr]   ptmd_urlsmuggled_datais_dgsptmdrl   streamqualityvariant
format_urlextfmtsr=   r<   f_classff_langis_audio_onlys                              r.   _extract_ptmdzZDFBaseIE._extract_ptmdT   s   
 "BE	 + D	H&3Hb&A#Hm"&&'78EAF>>(Hk9MD $ h %%&@(Lbf%g  f%
'|ZS`gkSlRm.noL
C$/HIIL&tnc=RUX\W]-^_ /+F[#v4NO .G#/'8Mo9p#q -%,U^
%2$!j1+J7&=#'#=#= *HeURW $> $YD O3%0=X1Y%ZFDPU[E,*?$@aeE %z%".w{{;/G"H% +1).-:66::fCU-V'243E3EkS]_dnr3E3s't% $D !//2RSVRWWX0Ydl/m#%D")++g"6!% A%0%;%;!"z!2!Sgkk*6M!SQS Z Z \&^F,-EE(Ov,EM#NN ,"#,-:1[>6K[V[-\/<(5$5$A'$*$E/E$%EE-$80F 5;b,2-:quu]?SWi?i4AgQUo %(/57fCT.4o.5.?)+, 	3-./+D	N ( 00>	
 	
r0   c                     |s	|sJ d       | j                  d|d| d| ||r#t        j                  |      j                         nd t	        | j                         d|rdnd d            S )	Nz One of query or body is requiredzhttps://api.zdf.de/graphqlr2   r3   Tzapplication/json)r4   zApollo-Require-PreflightzContent-Type)queryrQ   r5   )r+   jsondumpsencoder	   r/   )r-   item_id	data_descr   bodys        r.   _download_graphqlzZDFBaseIE._download_graphql   s    @@@}""('9+&*=i[(I4djj.557T //1,06: 2! 	 #  	r0   c                    t        | t        j                  hd f      D cg c]U  \  }}t        |      ||dk(  rdnddt        t	        j
                  dt        |            dt        hfdt        hfd	      W c}}S c c}}w )
Nc                     t        |d         S )Nr   rx   rJ   s     r.   rM   z/ZDFBaseIE._extract_thumbnails.<locals>.<lambda>   s    Q\]^_`]aQb r0   originalr   r   )r   r6   r   z+(?P<width>\d+|auto)[Xx](?P<height>\d+|auto)r<   r=   )r<   r=   )r   r   itemsr?   r@   searchr   )sourcer   r6   s      r.   _extract_thumbnailszZDFBaseIE._extract_thumbnails   s     !-VtzzlDb5c df i i.(J6!A
 299%SUXYbUcd!K=1#k]3g 	
 f 	f fs   AB N)NN)__name__
__module____qualname___GEO_COUNTRIESr(   r$   r/   r:   rE   rR   staticmethodrb   rh   r   r   r   rI   r0   r.   r   r      sf    VN.LK:
V  YQ
f 	f 	fr0   r   c                       e Zd ZddgZdZdddddd	d
dddddgdddddddd	d
dddddgdddiddddddd	d
dddddgdddiddddddddddddd d!d"d#d$d%gd&d'd(ddddddddddd d!d"d#d$d%gd&ddid)d*ddddddddddd d!d"d#d$d%gd&ddid)d+d,i d-d.d/dd0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKgd'dLdMdNddOdPdQdRdSdTdUgdV	d'dWdXdYddZd[d\d]d^d_d`dadbd dcdddegd&d'dfdgddhdidjdkdldmdndodpdqdrdsdtgd&ddudvdwdxdydzd{d|d}dd dbd d~ddgd&ddidddddddddddddddddddddddddddddddgZdZ fdZd Zd Z	 xZ
S )ZDFIEzFhttps?://(?:www\.)?zdf\.de/(?:video|play)/(?:[^/?#]+/)*(?P<id>[^/?#]+)z=https?://(?:www\.)?zdf\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)\.htmlr   zrhttps://www.zdf.de/video/dokus/sylt---deutschlands-edles-nordlicht-movie-100/sylt-deutschlands-edles-nordlicht-100%sylt-deutschlands-edles-nordlicht-100rz   #Sylt - Deutschlands edles Nordlicht$md5:35407b810c2e1e33efbe15ef6e4c06c3     P@<https://www.zdf.de/assets/sylt-118~original?cb=1613992485011-sylt---deutschlands-edles-nordlicht-movie-1009`20210204zdf 210402_1915_sendung_dokr   r   rP   descriptionrn   	thumbnailseries	series_id	timestampupload_date_old_archive_ids)r6   	info_dictzqhttps://www.zdf.de/play/dokus/sylt---deutschlands-edles-nordlicht-movie-100/sylt-deutschlands-edles-nordlicht-100skip_downloadT)r6   r   paramszbhttps://www.zdf.de/dokumentation/dokumentation-sonstige/sylt-deutschlands-edles-nordlicht-100.htmlzphttps://www.zdf.de/video/dokus/die-magie-der-farben-116/die-magie-der-farben-von-koenigspurpur-und-jeansblau-100 1eda17eb40a9ead3046326e10b9c5973z8die-magie-der-farben-von-koenigspurpur-und-jeansblau-100u   Von Königspurpur bis Jeansblauz$md5:a89da10c928c6235401066b60a6d5c1ag     n@zShttps://www.zdf.de/assets/koenigspurpur-bis-jeansblau-100~original?cb=1741857765971zDie Magie der Farbenzdie-magie-der-farben-116zSeason 1r   z	Episode 2r   i-V20151025zzdf 151025_magie_farben2_tex)r   r   rP   r   rn   r   r   r   seasonseason_numberepisodeepisode_numberr   r   r   )r6   md5r   zohttps://www.zdf.de/play/dokus/die-magie-der-farben-116/die-magie-der-farben-von-koenigspurpur-und-jeansblau-100)r6   r   r   r   zfhttps://www.zdf.de/dokumentation/terra-x/die-magie-der-farben-von-koenigspurpur-und-jeansblau-100.htmlzThttps://www.zdf.de/video/magazine/heute-journal-104/heute-journal-vom-19-12-2021-100 6ada39465497a84fb98d48ffff69e7b7r   z heute-journal-vom-19-12-2021-100r   rP   zheute journal vom 19.12.2021r   z$md5:02504cf3b03777ff32fcc927d260c5ddrn   g     @r   zjhttps://epg-image.zdf.de/fotobase-webdelivery/images/273e5545-16e7-4ca3-898e-52fe9e06d964?layout=1920x1080chapterszcount:11r   heute journalr   heute-journal-104r   zSeason 2021r   i  r   zEpisode 370r   ir  r   i̙ar   20211219r   zzdf 211219_sendung_hjozhhttps://www.zdf.de/nachrichten/politik/deutschland/koalitionsverhandlungen-spd-cdu-csu-dobrindt-100.html c3a78514dd993a5781aa3afe50db51e2z0koalitionsverhandlungen-spd-cdu-csu-dobrindt-100u(   Dobrindt schließt Steuererhöhungen ausz$md5:9a117646d7b8df6bc902eb543a9c9023iE  zXhttps://www.zdfheute.de/assets/dobrindt-csu-berlin-direkt-100~1920x1080?cb=1743357653736ig20250330zzdf 250330_clip_2_bdi)	r   r   rP   r   rn   r   r   r   r   zFhttps://www.zdf.de/funk/druck-11790/funk-alles-ist-verzaubert-102.html 57af4423db0455a3975d2dc4578536bczfunk-alles-ist-verzaubert-102zAlles ist verzaubertz0Die Neue an der Schule verdreht Ismail den Kopf.g     @zXhttps://www.zdf.de/assets/teaser-funk-alles-ist-verzaubert-102~original?cb=1663848412907DRUCKzfunk-collection-funk-11790-1590zSeason 7   z	Episode 1i0|a20211029zzdf video_funk_1770473zHhttps://www.zdf.de/serien/soko-stuttgart/das-geld-anderer-leute-100.htmlzdas-geld-anderer-leute-100zDas Geld anderer Leutez$md5:cb6f660850dc5eb7d1ab776ea094959dg     *@zjhttps://epg-image.zdf.de/fotobase-webdelivery/images/e2d7e55a-09f0-424e-ac73-6cac4dd65f35?layout=1920x1080zSOKO Stuttgartzsoko-stuttgart-104z	Season 11   z
Episode 10r   i2g20241015zzdf 191205_1800_sendung_sok8zLhttps://www.zdf.de/serien/northern-lights/begegnung-auf-der-bruecke-100.htmlzbegegnung-auf-der-bruecke-100r~   u   Begegnung auf der Brückez$md5:e53a555da87447f7f1207f10353f8e45g     @zjhttps://epg-image.zdf.de/fotobase-webdelivery/images/c5ff1d1f-f5c8-4468-86ac-1b2f1dbecc76?layout=1920x1080zNorthern Lightsznorthern-lights-100iDg20250203zzdf 240319_2310_sendung_notzgeo-restricted http formatz^https://www.zdf.de/politik/phoenix-sendungen/wohin-fuehrt-der-protest-in-der-pandemie-100.html)r6   only_matchingz@https://www.zdf.de/dokumentation/ab-18/10-wochen-sommer-102.htmlzOhttps://www.zdf.de/politik/phoenix-sendungen/die-gesten-der-maechtigen-100.htmlz>https://www.zdf.de/filme/filme-sonstige/der-hauptmann-112.htmlz8https://www.zdf.de/wissen/nano/nano-21-mai-2019-102.htmlzYhttps://www.zdf.de/service-und-hilfe/die-neue-zdf-mediathek/zdfmediathek-trailer-100.htmlz\https://www.zdf.de/filme/taunuskrimi/die-lebenden-und-die-toten-1---ein-taunuskrimi-100.htmlzqhttps://www.zdf.de/dokumentation/planet-e/planet-e-uebersichtsseite-weitere-dokumentationen-von-planet-e-100.htmlzVhttps://www.zdf.de/arte/todliche-flucht/page-video-artede-toedliche-flucht-16-100.htmlzShttps://www.zdf.de/dokumentation/terra-x/unser-gruener-planet-wuesten-doku-100.htmla$  
query VideoByCanonical($canonical: String!) {
  videoByCanonical(canonical: $canonical) {
    canonical
    title
    leadParagraph
    editorialDate
    teaser {
      description
      image {
        list
      }
    }
    episodeInfo {
      episodeNumber
      seasonNumber
    }
    smartCollection {
      canonical
      title
    }
    currentMedia {
      nodes {
        ptmdTemplate
        ... on VodMedia {
          duration
          aspectRatio
          streamAnchorTags {
            nodes {
              anchorOffset
              anchorLabel
            }
          }
          vodMediaType
          label
        }
        ... on LiveMedia {
          start
          stop
          encryption
          liveMediaType
          label
        }
        id
      }
    }
  }
}
    c                 h    t        |   |i |}|j                  d      }t        | |      g|d<   |S )Nr   r   )superr   popr   )r-   argskwargs	ptmd_dataold_archive_id	__class__s        r.   r   zZDFIE._extract_ptmd  s@    G)4:6:	"t,)8~)N(O	$%r0   c                 R   | j                  d| |dd      }|d   }t        |dt        ht        t	        d      hf      }g }t        |dt
        j                  hd	f      D ]a  \  }}t        |d
t        hf      }|s|j                  ||t        |j                  d            t        |j                  d            d       c d|it        |ddt        hfddt        hfdt        ht        fdd| j                  hfd      | j                  ||| j                               d|iS )Nz4https://zdf-prod-futura.zdf.de/mediathekV2/document/zDownloading fallback metadataz$Failed to download fallback metadata)noteerrnotedocument)streamApiUrlAndroid)streamsr   r   zPTMD URL
teaserBild.r6   r<   r=   )r6   r   r<   r=   
thumbnailstitelbeschreibung))r   date)metaeditorialDaterq   )rP   r   r   r^   r   )r+   r   r   anyr   r   r   r[   r   rX   r?   r   rb   r   r/   )	r-   document_idvideor   r   r  thumbnail_keyr   thumbnail_urls	            r.   _extract_fallbackzZDFIE._extract_fallback  so   ##B;-P=: $ < $JM3!4 5+7 8 
(4Xtzzl\_?`(a 		$M9(U[M4JKM $#$Y]]7%;<%immH&=>	 			 *
5$gu5 *NSEBE&'. )*t7N7N6OP# 
   ;8K8K8MN
 +
 	
r0   c                    | j                  |      }| j                  |dd| j                  d|id      d   d   }|s| j                  |      S d }g }t	        |dd	d
 f      D ]l  }| j                  d|d         }|j                  d      x}rt        |d|i      }|j                  |       |rM| j                  |j                  d            }n i t	        |dt        hfdt        t        hfdt        hfddd| j                  hfddt        hfddt        hfddt        hfddt        hfdd	ddd	| j                  hfd	      | j!                  ||| j#                         |      d|iS )Nzvideo metadataVideoByCanonical	canonical)operationNamer   	variables)r   rQ   videoByCanonicalcurrentMedianodesc                     |d   S )NptmdTemplaterI   rJ   s     r.   rM   z%ZDFIE._real_extract.<locals>.<lambda>3  s    TUVdTe r0   zhttps://api.zdf.der  vodMediaTyperj   aspectRatiorP   leadParagraph)teaserr   r  r  imagelistepisodeInfoepisodeNumberseasonNumbersmartCollectionr   streamAnchorTags)	rP   r   r   r  r   r   r   r   r   r   )	_match_idr   _GRAPHQL_QUERYr  r   rh   rX   r   r[   rE   r?   r  r   r   r   rR   r   r/   )	r-   r6   r7   
video_datarC   r   noder   rj   s	            r.   _real_extractzZDFIE._real_extract&  s   >>#&++H6F/((%x0N
+  	 &	'
 ))(33	 ngGe-fg 	QD112F^H\]H!%.!99~9&x2BN1STX&#778OP	Q
:!C5) LcTWSXY-?'&4;S;S:TU#0/K="Q"/+!O,gu=/seD+Wa9KWW[WmWmVno
( 

   Hd6I6I6K\Z
 (
 	
r0   )r   r   r   
_VALID_URLIE_NAME_TESTSr%  r   r  r(  __classcell__r   s   @r.   r   r      s2   QHJ
 G D9:AW;H#%!> ?
$ C9:AW;H#%!> ?
 #D)!& t9:AW;H#%!> ?
 #D)!& B1L6An,3 "#%!? @
	. A1L6An,3 "#%!? @
" #D)+0 x1L6An,3 "#%!? @
" #D)+2 f1
4
5
 3
 A	

 
   F
 

 o
 ,
 m
 T
 }
 c
 
 :
" !9 :#
4 z1D?As#%!8 9

	" X11+Ms: "#%!9 :
	, Z.-A F&-!# #%!? @
( ^10A F'. "#%!> ?
" #$@A', p R a P J
 k n C h emyFv0Nd#
J$
r0   r   c                       e Zd ZdZdZddddddd	d
dddddd	ej                         gddddddddddddgdddi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/d0d,dd1d2d3gZd4Ze	 fd5       Z
d9d6Zd7 Zd8 Z xZS ):ZDFChannelIEz2https?://www\.zdf\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)zzdf:channelz1https://www.zdf.de/sport/das-aktuelle-sportstudiozdas-aktuelle-sportstudio-220zdas aktuelle sportstudioz$md5:e46c785324238a03edcf8b301c5fd5dc)r   rP   r      )r6   r   playlist_mincountz5https://www.zdf.de/sport/das-aktuelle-sportstudio-220zFhttps://www.zdf.de/dokus/sylt---deutschlands-edles-nordlicht-movie-100r   rz   r   r   r   r   r   r   r   r   r   r   T)add_ier6   r   r   z9https://www.zdf.de/gesellschaft/aktenzeichen-xy-ungeloestzaktenzeichen-xy-ungeloest-110u   Aktenzeichen XY... Ungelöstz$md5:b79ac0d64b979e53cbe510c0ca9cb7ber   z&https://www.zdf.de/serien/taunuskrimi/ztaunuskrimi-100Taunuskrimiz$md5:ee7204e9c625c3b611d1274f9d0e3070   z0https://www.zdf.de/serien/taunuskrimi/?staffel=1ztaunuskrimi-100-s1zTaunuskrimi - Season 1r   )r6   r   playlist_countz-https://www.zdf.de/magazine/heute-journal-104r   r   z$md5:6edad39189abf8431795d3d6d7f986b3i  z:https://www.zdf.de/magazine/heute-journal-104?staffel=2024zheute-journal-104-s2024zheute journal - Season 2024   z>Video count changes daily, needs support for playlist_maxcount)r6   r   r5  skip   c                 P    t         j                  |      rdS t        |   |      S )NF)r   suitabler   )clsr6   r   s     r.   r:  zZDFChannelIE.suitable  s#    s+uF1A#1FFr0   c                     | j                  |d| d| ddt        j                  t        ||| j                  |d            t        j                  dddd	i      d
      d   d   S )Nzseason z page z JSONseasonByCanonical)seasonIndexr  episodesPageSizeepisodesAfterpersistedQueryr   @9412a0f4ac55dc37d46975d461ec64bfd14380d815df843a1492348f77b5c99aversion
sha256Hashr  r  
extensionsr   rQ   smartCollectionByCanonical)r   r   r   r	   
_PAGE_SIZE)r-   playlist_idcanonical_id
season_idxr   page_numbercursors          r.   _fetch_pagezZDFChannelIE._fetch_page  s    %%7=/}EJ!4!ZZ#-!-(,%+	5 )  #jj$#$&h'* S &   45 	5r0   c              #   2  K   t        |      D ]  \  }}|||k7  rd }t        j                  d      D ]  }| j                  ||||||      }	t	        |	d      }
t	        |
dddd f      D ]b  } | j
                  |d   t        fi t	        |dt        hfd	d
t        hfdt        t        hfdt        hfddt        hfddt        hfd       d t	        |
dddt        hf      xs i }|j                  d      r|j                  d      s |d   }  y w)Nr   )seasonsr  ..episodesr  c                     t        |d         S )N
sharingUrlrx   rJ   s     r.   rM   z'ZDFChannelIE._entries.<locals>.<lambda>  s    ;q;W r0   rU  r  r  rP   r  r  r  r   r!  )r   rP   r   r   r   r   r   pageInfohasNextPage	endCursor)	enumerate	itertoolscountrP  r   
url_resultr   r?   r  r   r   r   rX   )r-   rK  rL  season_numbersrequested_season_numberrM  r   rO  rN  pager  r   	page_infos                r.   _entrieszZDFChannelIE._entries  s_    )2>)B 	0%J&27NR_7_F(q1 0''z=+W]_ %T+DE+EW.W4   G *$//-u	&w#."6&.#%?,XZ]`c_d+e*9M?)K/<oP[}.].;^k]-[1 	 	 )ZdV0TU[Y[	 }}]39==;U";//0	0s   DDc                    | j                  |      }| j                  ||      }| j                  | j                  |j                  dd      }t        t        |      ddt        hf      }t        ||xr d|       }| j                  |ddt        j                  |d	d
      t        j                  ddddi      d      d   d   }t        |dt        hf      xs i }t        |ddddt        hf      }| j                  |xr |t        |j                  d            xr |j                  d            s| j!                  |d   t"        |d         S |||vrt%        d| d      | j'                  | j)                  ||||      |t        t        |dt*        hf      |xr d| d      t        |dt*        hf            S )Nz
channel idr   )rB   staffelr   szsmart collection dataGetSmartCollectionByCanonicald   )r  videoPageSizerA  r   @cb49420e133bd668ad895a8cea0e65cba6aa11ac1cacb02341ff5cf32a17cd02rC  rF  rH  rQ   rI  r
  rR  .numberrU  r  zSeason z% was not found in the collection datarP   z - r   infoText)r$  _request_webpager   r)  r6   r   r   r   r   r   r   r   r   _yes_playlistr   rX   r\  r   r   playlist_resultra  r?   )	r-   r6   rL  urlhr   rK  collection_datar&  r]  s	            r.   r(  zZDFChannelIE._real_extract  s   ~~c*$$S,7))$//488\Y])^$Xc]Y[M4RS#L-2WaDWX000!@!ZZ!-%()  #jj$#$&h'* 9 1   45 "/GdV3DEK
%o	9cS[^i]j7kl!!*{
|45U*..:U
 ??:l#;UJ{D[\\$n)L 7=/9^!_``##MM+|^]S_w.>?;GM?";5J :u*=>@ 	@r0   r   )r   r   r   r)  r*  r   ie_keyr+  rJ  classmethodr:  rP  ra  r(  r,  r-  s   @r.   r/  r/  M  s^   FJG C0/A

  	 G0/A

  	 <<>"W9:AW;H#%!> ?
 #D)#& K13A

  8#"A

  B&-A

  ?%$A

 ! L+2A

 P	IMF^ JG G5$0>'@r0   r/  )rZ  r   r@   r*   commonr   utilsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   utils.traversalr   r   r   r   r/  rI   r0   r.   <module>ru     sb      	  !    & 4af afHI
I I
Xp@9 p@r0   