
    ŞiSr                     >   d dl Z d dlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
mZmZ  G d de          Zdtd	Z G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d  d!e          Z G d" d#e          Z G d$ d%e          Z G d& d'e          Z G d( d)e          Z G d* d+e          Z G d, d-e          Z  G d. d/e           Z! G d0 d1e           Z" G d2 d3e           Z# G d4 d5e          Z$ G d6 d7e$          Z% G d8 d9e$          Z& G d: d;e$          Z' G d< d=e          Z( G d> d?e(          Z) G d@ dAe(          Z* G dB dCe(          Z+ G dD dEe          Z, G dF dGe,          Z- G dH dIe,          Z. G dJ dKe,          Z/ G dL dMe          Z0 G dN dOe0          Z1 G dP dQe0          Z2 G dR dSe0          Z3 G dT dUe          Z4 G dV dWe4          Z5 G dX dYe4          Z6 G dZ d[e4          Z7 G d\ d]e          Z8 G d^ d_e8          Z9 G d` dae8          Z: G db dce8          Z; G dd dee          Z< G df dge<          Z= G dh die<          Z> G dj dke<          Z? G dl dme          Z@ G dn doe@          ZA G dp dqe@          ZB G dr dse@          ZCdS )u    N   )InfoExtractor   )	HTTPError)ExtractorErrorint_or_nonejoin_nonemptytry_geturl_or_noneurlencode_postdatac                   j    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 ZddZddZd Zd Zd Zd ZdS )ZattooPlatformBaseIENc                 D    dt          | d          r| j        n| j        z  S )Nz
https://%s	_API_HOST)hasattrr   _HOSTselfs    \C:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/zattoo.py	_host_urlzZattooPlatformBaseIE._host_url   s&    {1K1K[t~~QUQ[\\    c                 F    | j         s|                     dd           d S d S )Nz)An account is needed to access this mediapassword)method)_power_guide_hashraise_login_requiredr   s    r   _real_initializez%ZattooPlatformBaseIE._real_initialize   s;    % 	f%%&QZd%eeeee	f 	fr   c                 |   	 |                      |                                  dd dt          ||dd          |                                  ddd          }nN# t          $ rA}t	          |j        t                    r!|j        j        d	k    rt          d
d           d }~ww xY w|d         d         | _        d S )Nz/zapi/v2/account/loginz
Logging intrue)loginr   rememberz/loginz0application/x-www-form-urlencoded; charset=UTF-8)RefererzContent-Type)dataheadersi  z3Unable to login: incorrect username and/or passwordT)expectedsessionpower_guide_hash)	_download_jsonr   r   r   
isinstancecauser   statusr   )r   usernamer   r#   es        r   _perform_loginz#ZattooPlatformBaseIE._perform_login   s   	&&>>##;;;T<'% ( &) )  
 #'.."2"2:::$V  ' 	 	DD  	 	 	!'9-- #!'.C2G2G$I!# # # # 	 "&i1C!Ds   AA 
B&%<B!!B&c                 (   |                      |                                  dd d          d         }|                     |                                  dd dt          t	          t          j                              ddd|d	          
           d S )Nz/token.jsonzDownloading session tokensession_tokenz/zapi/v3/session/hellozOpening sessionenz1.8.2json)uuidlangapp_versionformatclient_app_token)r#   )r(   r   _request_webpager   strr3   uuid4)r   r0   s     r   _initialize_pre_loginz*ZattooPlatformBaseIE._initialize_pre_login/   s    ++~~,,,d4OQ QQ`b 	~~777$6DJLL))& $18 8 % % 	 	 	 	 	 	r   c                     |                      |                                  dd          }	 t          fd|d         D                       S # t          t          f$ r t          d          w xY w)Nz/zapi/v2/playlistzDownloading playlistc              3      K   | ]T}|                     d           r=t          |                     d                    k    =t          |d                    V  UdS )
program_ididN)getr9   ).0itemrecids     r   	<genexpr>zHZattooPlatformBaseIE._extract_video_id_from_recording.<locals>.<genexpr>B   sr       L L,088L))L.1$((4...A.AU.J.J D&''.J.J.J.JL Lr   
recordingsz)Could not extract video id from recording)r(   r   nextStopIterationKeyErrorr   )r   rC   playlists    ` r    _extract_video_id_from_recordingz5ZattooPlatformBaseIE._extract_video_id_from_recording>   s    &&~~222E;QS S	N L L L L4<\4JL L L L L L x( 	N 	N 	N !LMMM	Ns    A !A1c                 4   |                      |                                  d| j         |dddi          d         }g }|D ]}|                    |d                    	 t	          fd|D                       S # t
          $ r t          d	          w xY w)
Nz/zapi/v2/cached/channels/zDownloading channel listdetailsFquerychannel_groupschannelsc              3      K   | ]S}|                     d           r<|                     d          k    s|                     d           k    I|d          V  TdS )ciddisplay_aliasN)r@   )rA   chanchannel_names     r   rD   z4ZattooPlatformBaseIE._extract_cid.<locals>.<genexpr>Q   su       9 9 $88E??9 HH_--==xx,66 U 7666	9 9r   zCould not extract channel id)r(   r   r   extendrF   rG   r   )r   video_idrU   rO   channel_listchgrps     `   r   _extract_cidz!ZattooPlatformBaseIE._extract_cidH   s    ,,~~RR$:PRR0e$ - & & '78 # 	3 	3Ej 12222	A 9 9 9 9(49 9 9 9 9 9
  	A 	A 	A !?@@@	As   "A= =Bc                    |                      |                                  d| j         |d|dd          }|d         d         }|d         }||                    d	          p|d
         |                    d          |                    d          |                    d          |                    d
          t	          |                    d                    t	          |                    d                    t	          |                    d                    t          |d t                    t          |d t                    d}||fS )Nz&/zapi/v2/cached/program/power_details/zDownloading video informationT)program_idscompleterM   programsr   rR   tetdi_urlrU   e_nos_noyearc                     | d         S )Nc xs    r   <lambda>zBZattooPlatformBaseIE._extract_cid_and_video_info.<locals>.<lambda>p   s
    qv r   c                     | d         S )Ngrh   ri   s    r   rk   zBZattooPlatformBaseIE._extract_cid_and_video_info.<locals>.<lambda>q   s
    3 r   )r?   titledescription	thumbnailcreatorepisodeepisode_numberseason_numberrelease_year
categoriestags)r(   r   r   r@   r   r
   list)r   rW   r#   prR   	info_dicts         r   _extract_cid_and_video_infoz0ZattooPlatformBaseIE._extract_cid_and_video_infoY   s8   ""~~__tG]__+'  	 #   Qh UU3ZZ*1T755::wuu^,,uuT{{)!%%--88(v77'f66!!%5%5t<<A//66
 
	 I~r   c                 <   |                      |                                  d| |d          }||                    d          |                    d          t          |                    d                    t          |                    d                    t          |                    d                    t          |                    d                    t	          |d	 t
                    d
}|d         d         d         d         d         |d         |fS )zH
        @returns    (ondemand_token, ondemand_type, info_dict)
        z/zapi/vod/movies/z Downloading ondemand informationrn   ro   durationre   rs   rt   c                     | d         S )Nrv   rh   ri   s    r   rk   z=ZattooPlatformBaseIE._extract_ondemand_info.<locals>.<lambda>   s
    !L/ r   )r?   rn   ro   r}   ru   rs   rt   rv   terms_catalogr   termstokentype)r(   r   r@   r   r
   rx   )r   ondemand_idr#   rz   s       r   _extract_ondemand_infoz+ZattooPlatformBaseIE._extract_ondemand_infov   s    ""~~??+??;= = XXg&&88M22#DHHZ$8$899'(8(899)$((3C*D*DEE(/)B)BCC!$(A(A4HH	
 	
	 O$Q'03G<d6lIUUr   Fc           
      >   ddi}|r1|                     ddi           |                                  d| }	nk|r|                                  d| }	nO|r1|                     |||d           |                                  d}	n|                                  d	| d
| }	g }
i }dD ]}|                                }||d<   |                     |	|d|                                 dt          |          d          }|s\t          |d t                    }|sv|D ]v}t          |t                    st          |                    d                    }|s>|                    d          }|dk    rdnd }t          ||                    d          |          }|                    d          r4|                     |||d          \  }}|                     ||           n|                    d          r6|                     ||dd|d          \  }}|                     ||           nB|dk    r|                     |||d          }n"|d k    r|                     |||d!          }nJ |D ]}||d"<   |
                    |           x|
|fS )#Nhttps_watch_urlsT	timeshifti0*  z/zapi/watch/live/z/zapi/watch/recording/)teasable_id
term_tokenteasable_typez/zapi/watch/vod/videoz/zapi/v3/watch/replay//)dashhls7stream_typezDownloading z formatsF)r#   fatalc                     | d         d         S )Nstream
watch_urlsrh   ri   s    r   rk   z7ZattooPlatformBaseIE._extract_formats.<locals>.<lambda>   s    (L 9 r   urlaudio_channelAr   maxrater   )mpd_idr   )targethlsmp4m3u8_native)entry_protocolm3u8_idr   hds)f4m_idr   smooth_playready)ism_idr   quality)updater   copyr(   upperr   r
   rx   r)   dictr   r@   r	   
startswith"_extract_mpd_formats_and_subtitles_merge_subtitles#_extract_m3u8_formats_and_subtitles_extract_f4m_formats_extract_ism_formatsrV   )r   rR   rW   	record_idr   ondemand_termtokenondemand_typeis_livepostdata_commonr   formats	subtitlesr   postdatar#   r   watch	watch_urlr   
preference	format_idthis_formatssubsthis_formats                           r   _extract_formatsz%ZattooPlatformBaseIE._extract_formats   s   
  	N""K#7888^^%%====CC 
	N^^%%HHYHHCC 	N""*0!.$ $   
 ^^%%<<<CC^^%%MMSMM8MMC	+ ,	- ,	-K&++--H&1H]#&&XKk.?.?.A.AKKK'11 ' @ @D   994A AJ # - -!%.. '		%(8(899	   %		/ : :"/3"6"6QQD
)+uyy7K7K][[	))&11 !)-)P)P!8IU *Q *L *L&L$))$y)AAAA ++E22 !)-)Q)Q!8U'4i# *R *% *%&L$ ))$y)AAAA E))#'#<#<!8IU $= $L $LLL $666#'#<#<!8IU $= $L $LLL !L#/ 8 8K-7K	**|,,,,;-< 	!!r   c                 x    |                      |          \  }}|                     |||          \  |d<   |d<   |S N)r   r   r   )r{   r   )r   rW   r   rR   rz   s        r   _extract_videoz#ZattooPlatformBaseIE._extract_video   sJ    99(CCY7;7L7LSRZfo7L7p7p4	)i4r   c                 t    |                      ||          }|                     ||d          \  }}||d||dS )NT)r   )r?   rn   r   r   r   )rZ   r   )r   rU   rR   r   r   s        r   _extract_livez"ZattooPlatformBaseIE._extract_live   sT    l;;!223T2JJ!"
 
 	
r   c                     |                      |          }|                     |          \  }}|                     |||          \  |d<   |d<   |S r   )rJ   r{   r   )r   r   rW   rR   rz   s        r   _extract_recordz$ZattooPlatformBaseIE._extract_record   s]    88CC99(CCY7;7L7LSRZfo7L7p7p4	)i4r   c                 ~    |                      |          \  }}}|                     d ||||          \  |d<   |d<   |S )N)r   r   r   r   r   )r   r   )r   r   r   r   rz   s        r   _extract_ondemandz&ZattooPlatformBaseIE._extract_ondemand   s^    7;7R7RS^7_7_4M97;7L7L+;1 8M 8P 8P4	)i4 r   c                     |                      |                                          \  }} t          | d| j                   |p|          S )N	_extract_)_match_valid_urlgroupsgetattr_TYPE)r   r   rW   r   s       r   _real_extractz"ZattooPlatformBaseIE._real_extract   sP    "33C88??AA)6wt55566x7L9MMMr   )NNNNFN)__name__
__module____qualname__r   r   r   r.   r;   rJ   rZ   r{   r   r   r   r   r   r   r   rh   r   r   r   r      s       ] ] ]f f fE E E*  N N NA A A"  :V V V&B" B" B" B"H   
	
 	
 	
    N N N N Nr   r   c           	      ^    |r	d| d| dnd}dt          j        |            d| d| d| d		S )
N|z
/(?P<vid1>)z
(?P<vid1>)z(?x)https?://(?:www\.)?z /(?:
        [^?#]+\?(?:[^#]+&)?z
=(?P<vid2>z
)
        z
    ))reescape)hostmatchqsbase_re
match_bases        r   _create_valid_urlr      so    5<N1g111111,J		$ 	 		 	*/	 			 	 	 	r   c                       e Zd ZdZdZdS )ZattooBaseIEzattoo
zattoo.comNr   r   r   _NETRC_MACHINEr   rh   r   r   r   r              NEEEr   r   c                   p    e Zd Z eej        ddd          ZdZddddd	d
dddddd
ddidddddddgZdS )ZattooIE\d+program(?:program|watch)/[^/]+videoz(https://zattoo.com/program/zdf/250170418	250170418r   zMarkus Lanzz$md5:e41cb1257de008ca62a73bb876ffa7fcz5re:http://images.zattic.com/cms/.+/format_480x360.jpgzZDF HDi  z
Folge 1655zcount:1zcount:2)
r?   extrn   ro   rp   rq   ru   rr   rv   rw   skip_downloadm3u8)r   rz   paramsz-https://zattoo.com/program/daserste/210177916Tr   only_matchingz>https://zattoo.com/guide/german?channel=srf1&program=169860555N	r   r   r   r   r   r   
_VALID_URLr   _TESTSrh   r   r   r   r      s        ""<#5vyJcddJE9"AP ##
 
 #F+   ?  P %FFFr   r   c                   l     e Zd Z eej        ddd          ZdZddddddgZe	 fd            Z
 xZS )	ZattooLiveIE[^/?&#]+channellivez3https://zattoo.com/channels/german?channel=srf_zweiTr   zhttps://zattoo.com/live/srf1c                 ~    t                               |          rdn t                                          |          S NF)r   suitablesuperclsr   	__class__s     r   r   zZattooLiveIE.suitable"  2     ))#..IuuEGG4D4DS4I4IIr   )r   r   r   r   r   r   r   r   r   classmethodr   __classcell__r   s   @r   r   r             ""<#5{IvVVJED  . F J J J J [J J J J Jr   r   c                   L    e Zd Z eej        ddd          ZdZddddddgZd	S )
ZattooMoviesIEz\w+movie_idz
vod/moviesondemandz"https://zattoo.com/vod/movies/7521Tr   zIhttps://zattoo.com/ondemand?movie_id=7521&term_token=9f00f43183269484eddeNr   rh   r   r   r  r  '  sV        ""<#5vz<XXJE3  [ FFFr   r  c                   @    e Zd Z eddd          ZdZddddddgZd	S )
ZattooRecordingsIEr   r   	recordingrecordz1https://zattoo.com/recordings?recording=193615508Tr   zGhttps://zattoo.com/tc/ptc_recordings_all_recordings?recording=193615420N)r   r   r   r   r   r   r   rh   r   r   r	  r	  3  sQ        ""<EEJEB  Y FFFr   r	  c                        e Zd ZdZdZde ZdS )NetPlusTVBaseIEnetplusz
netplus.tvwww.Nr   r   r   r   r   r   rh   r   r   r  r  ?  s#        NEuIIIr   r  c                   L    e Zd Z eej        ddd          ZdZddddddgZd	S )
NetPlusTVIEr   r   r   r   z-https://netplus.tv/program/daserste/210177916Tr   z>https://netplus.tv/guide/german?channel=srf1&program=169860555N	r   r   r   r   r  r   r   r   r   rh   r   r   r  r  E  sW        ""?#8&)MfggJE>  P FFFr   r  c                   l     e Zd Z eej        ddd          ZdZddddddgZe	 fd            Z
 xZS )	NetPlusTVLiveIEr   r   r   z3https://netplus.tv/channels/german?channel=srf_zweiTr   zhttps://netplus.tv/live/srf1c                 ~    t                               |          rdn t                                          |          S r   )r  r   r   r   s     r   r   zNetPlusTVLiveIE.suitable\  2    #,,S11Luuuww7G7G7L7LLr   )r   r   r   r   r  r   r   r   r   r   r   r  r  s   @r   r  r  Q  s        ""?#8+yRXYYJED  . F M M M M [M M M M Mr   r  c                   J    e Zd Z eej        dd          ZdZddddddgZdS )	NetPlusTVRecordingsIEr   r
  r  z1https://netplus.tv/recordings?recording=193615508Tr   zGhttps://netplus.tv/tc/ptc_recordings_all_recordings?recording=193615420Nr  rh   r   r   r  r  a  sT        ""?#8&+NNJEB  Y FFFr   r  c                       e Zd ZdZdZdS )MNetTVBaseIEmnettvztvplus.m-net.deNr   rh   r   r   r  r  m  s        NEEEr   r  c                   L    e Zd Z eej        ddd          ZdZddddddgZd	S )
MNetTVIEr   r   r   r   z2https://tvplus.m-net.de/program/daserste/210177916Tr   zChttps://tvplus.m-net.de/guide/german?channel=srf1&program=169860555N	r   r   r   r   r  r   r   r   r   rh   r   r   r  r  r  sW        ""<#5vyJcddJEC  U FFFr   r  c                   l     e Zd Z eej        ddd          ZdZddddddgZe	 fd            Z
 xZS )	MNetTVLiveIEr   r   r   z8https://tvplus.m-net.de/channels/german?channel=srf_zweiTr   z!https://tvplus.m-net.de/live/srf1c                 ~    t                               |          rdn t                                          |          S r   )r  r   r   r   s     r   r   zMNetTVLiveIE.suitable  r   r   )r   r   r   r   r  r   r   r   r   r   r   r  r  s   @r   r!  r!  ~  s        ""<#5{IvVVJEI  3 F J J J J [J J J J Jr   r!  c                   J    e Zd Z eej        dd          ZdZddddddgZdS )	MNetTVRecordingsIEr   r
  r  z6https://tvplus.m-net.de/recordings?recording=193615508Tr   zLhttps://tvplus.m-net.de/tc/ptc_recordings_all_recordings?recording=193615420Nr  rh   r   r   r$  r$    sT        ""<#5v{KKJEG  ^ FFFr   r$  c                       e Zd ZdZdZdS )WalyTVBaseIEwalytvzplayer.waly.tvNr   rh   r   r   r&  r&    s        NEEEr   r&  c                   L    e Zd Z eej        ddd          ZdZddddddgZd	S )
WalyTVIEr   r   r   r   z1https://player.waly.tv/program/daserste/210177916Tr   zBhttps://player.waly.tv/guide/german?channel=srf1&program=169860555N	r   r   r   r   r&  r   r   r   r   rh   r   r   r)  r)    sW        ""<#5vyJcddJEB  T FFFr   r)  c                   l     e Zd Z eej        ddd          ZdZddddddgZe	 fd            Z
 xZS )	WalyTVLiveIEr   r   r   z7https://player.waly.tv/channels/german?channel=srf_zweiTr   z https://player.waly.tv/live/srf1c                 ~    t                               |          rdn t                                          |          S r   )r)  r   r   r   s     r   r   zWalyTVLiveIE.suitable  r   r   )r   r   r   r   r&  r   r   r   r   r   r   r  r  s   @r   r,  r,    s        ""<#5{IvVVJEH  2 F J J J J [J J J J Jr   r,  c                   J    e Zd Z eej        dd          ZdZddddddgZdS )	WalyTVRecordingsIEr   r
  r  z5https://player.waly.tv/recordings?recording=193615508Tr   zKhttps://player.waly.tv/tc/ptc_recordings_all_recordings?recording=193615420Nr*  rh   r   r   r/  r/    sT        ""<#5v{KKJEF  ] FFFr   r/  c                        e Zd ZdZdZde ZdS )BBVTVBaseIEbbvtvz
bbv-tv.netr  Nr  rh   r   r   r1  r1    s#        NEuIIIr   r1  c                   L    e Zd Z eej        ddd          ZdZddddddgZd	S )
BBVTVIEr   r   r   r   z-https://bbv-tv.net/program/daserste/210177916Tr   z>https://bbv-tv.net/guide/german?channel=srf1&program=169860555N	r   r   r   r   r1  r   r   r   r   rh   r   r   r4  r4    sW        "";#4fiIbccJE>  P FFFr   r4  c                   l     e Zd Z eej        ddd          ZdZddddddgZe	 fd            Z
 xZS )	BBVTVLiveIEr   r   r   z3https://bbv-tv.net/channels/german?channel=srf_zweiTr   zhttps://bbv-tv.net/live/srf1c                 ~    t                               |          rdn t                                          |          S r   )r4  r   r   r   s     r   r   zBBVTVLiveIE.suitable  2    ((--Huu5773C3CC3H3HHr   )r   r   r   r   r1  r   r   r   r   r   r   r  r  s   @r   r7  r7    s        "";#4k9fUUJED  . F I I I I [I I I I Ir   r7  c                   J    e Zd Z eej        dd          ZdZddddddgZdS )	BBVTVRecordingsIEr   r
  r  z1https://bbv-tv.net/recordings?recording=193615508Tr   zGhttps://bbv-tv.net/tc/ptc_recordings_all_recordings?recording=193615420Nr5  rh   r   r   r;  r;    sT        "";#4fkJJJEB  Y FFFr   r;  c                        e Zd ZdZdZde ZdS )VTXTVBaseIEvtxtvzvtxtv.chr  Nr  rh   r   r   r=  r=    #        NEuIIIr   r=  c                   L    e Zd Z eej        ddd          ZdZddddddgZd	S )
VTXTVIEr   r   r   r   z+https://vtxtv.ch/program/daserste/210177916Tr   z<https://vtxtv.ch/guide/german?channel=srf1&program=169860555N	r   r   r   r   r=  r   r   r   r   rh   r   r   rA  rA    W        "";#4fiIbccJE<  N FFFr   rA  c                   l     e Zd Z eej        ddd          ZdZddddddgZe	 fd            Z
 xZS )	VTXTVLiveIEr   r   r   z1https://vtxtv.ch/channels/german?channel=srf_zweiTr   zhttps://vtxtv.ch/live/srf1c                 ~    t                               |          rdn t                                          |          S r   )rA  r   r   r   s     r   r   zVTXTVLiveIE.suitable  r9  r   )r   r   r   r   r=  r   r   r   r   r   r   r  r  s   @r   rE  rE            "";#4k9fUUJEB  , F I I I I [I I I I Ir   rE  c                   J    e Zd Z eej        dd          ZdZddddddgZdS )	VTXTVRecordingsIEr   r
  r  z/https://vtxtv.ch/recordings?recording=193615508Tr   zEhttps://vtxtv.ch/tc/ptc_recordings_all_recordings?recording=193615420NrB  rh   r   r   rI  rI    T        "";#4fkJJJE@  W FFFr   rI  c                       e Zd ZdZdZdS )GlattvisionTVBaseIEglattvisiontvziptv.glattvision.chNr   rh   r   r   rL  rL  #  s        $N!EEEr   rL  c                   L    e Zd Z eej        ddd          ZdZddddddgZd	S )
GlattvisionTVIEr   r   r   r   z6https://iptv.glattvision.ch/program/daserste/210177916Tr   zGhttps://iptv.glattvision.ch/guide/german?channel=srf1&program=169860555N	r   r   r   r   rL  r   r   r   r   rh   r   r   rO  rO  (  sX        ""#6#<fiQjkkJEG  Y FFFr   rO  c                   l     e Zd Z eej        ddd          ZdZddddddgZe	 fd            Z
 xZS )	GlattvisionTVLiveIEr   r   r   z<https://iptv.glattvision.ch/channels/german?channel=srf_zweiTr   z%https://iptv.glattvision.ch/live/srf1c                 ~    t                               |          rdn t                                          |          S r   )rO  r   r   r   s     r   r   zGlattvisionTVLiveIE.suitable?  2    '0055Puu577;K;KC;P;PPr   )r   r   r   r   rL  r   r   r   r   r   r   r  r  s   @r   rR  rR  4  s        ""#6#<k9V\]]JEM  7 F Q Q Q Q [Q Q Q Q Qr   rR  c                   J    e Zd Z eej        dd          ZdZddddddgZdS )	GlattvisionTVRecordingsIEr   r
  r  z:https://iptv.glattvision.ch/recordings?recording=193615508Tr   zPhttps://iptv.glattvision.ch/tc/ptc_recordings_all_recordings?recording=193615420NrP  rh   r   r   rV  rV  D  sU        ""#6#<fkRRJEK  b FFFr   rV  c                        e Zd ZdZdZde ZdS )SAKTVBaseIEsaktvzsaktv.chr  Nr  rh   r   r   rX  rX  P  r?  r   rX  c                   L    e Zd Z eej        ddd          ZdZddddddgZd	S )
SAKTVIEr   r   r   r   z+https://saktv.ch/program/daserste/210177916Tr   z<https://saktv.ch/guide/german?channel=srf1&program=169860555N	r   r   r   r   rX  r   r   r   r   rh   r   r   r[  r[  V  rC  r   r[  c                   l     e Zd Z eej        ddd          ZdZddddddgZe	 fd            Z
 xZS )	SAKTVLiveIEr   r   r   z1https://saktv.ch/channels/german?channel=srf_zweiTr   zhttps://saktv.ch/live/srf1c                 ~    t                               |          rdn t                                          |          S r   )r[  r   r   r   s     r   r   zSAKTVLiveIE.suitablem  r9  r   )r   r   r   r   rX  r   r   r   r   r   r   r  r  s   @r   r^  r^  b  rG  r   r^  c                   J    e Zd Z eej        dd          ZdZddddddgZdS )	SAKTVRecordingsIEr   r
  r  z/https://saktv.ch/recordings?recording=193615508Tr   zEhttps://saktv.ch/tc/ptc_recordings_all_recordings?recording=193615420Nr\  rh   r   r   ra  ra  r  rJ  r   ra  c                       e Zd ZdZdZdS )EWETVBaseIEewetvztvonline.ewe.deNr   rh   r   r   rc  rc  ~  s        NEEEr   rc  c                   L    e Zd Z eej        ddd          ZdZddddddgZd	S )
EWETVIEr   r   r   r   z2https://tvonline.ewe.de/program/daserste/210177916Tr   zChttps://tvonline.ewe.de/guide/german?channel=srf1&program=169860555N	r   r   r   r   rc  r   r   r   r   rh   r   r   rf  rf    sW        "";#4fiIbccJEC  U FFFr   rf  c                   l     e Zd Z eej        ddd          ZdZddddddgZe	 fd            Z
 xZS )	EWETVLiveIEr   r   r   z8https://tvonline.ewe.de/channels/german?channel=srf_zweiTr   z!https://tvonline.ewe.de/live/srf1c                 ~    t                               |          rdn t                                          |          S r   )rf  r   r   r   s     r   r   zEWETVLiveIE.suitable  r9  r   )r   r   r   r   rc  r   r   r   r   r   r   r  r  s   @r   ri  ri    s        "";#4k9fUUJEI  3 F I I I I [I I I I Ir   ri  c                   J    e Zd Z eej        dd          ZdZddddddgZdS )	EWETVRecordingsIEr   r
  r  z6https://tvonline.ewe.de/recordings?recording=193615508Tr   zLhttps://tvonline.ewe.de/tc/ptc_recordings_all_recordings?recording=193615420Nrg  rh   r   r   rl  rl    sT        "";#4fkJJJEG  ^ FFFr   rl  c                        e Zd ZdZdZde ZdS )QuantumTVBaseIE	quantumtvzquantum-tv.comr  Nr  rh   r   r   rn  rn    s#         NEuIIIr   rn  c                   L    e Zd Z eej        ddd          ZdZddddddgZd	S )
QuantumTVIEr   r   r   r   z1https://quantum-tv.com/program/daserste/210177916Tr   zBhttps://quantum-tv.com/guide/german?channel=srf1&program=169860555N	r   r   r   r   rn  r   r   r   r   rh   r   r   rq  rq    sW        ""?#8&)MfggJEB  T FFFr   rq  c                   l     e Zd Z eej        ddd          ZdZddddddgZe	 fd            Z
 xZS )	QuantumTVLiveIEr   r   r   z7https://quantum-tv.com/channels/german?channel=srf_zweiTr   z https://quantum-tv.com/live/srf1c                 ~    t                               |          rdn t                                          |          S r   )rq  r   r   r   s     r   r   zQuantumTVLiveIE.suitable  r  r   )r   r   r   r   rn  r   r   r   r   r   r   r  r  s   @r   rt  rt    s        ""?#8+yRXYYJEH  2 F M M M M [M M M M Mr   rt  c                   J    e Zd Z eej        dd          ZdZddddddgZdS )	QuantumTVRecordingsIEr   r
  r  z5https://quantum-tv.com/recordings?recording=193615508Tr   zKhttps://quantum-tv.com/tc/ptc_recordings_all_recordings?recording=193615420Nrr  rh   r   r   rw  rw    sT        ""?#8&+NNJEF  ] FFFr   rw  c                       e Zd ZdZdZdS )OsnatelTVBaseIE	osnateltvztvonline.osnatel.deNr   rh   r   r   ry  ry    s         N!EEEr   ry  c                   L    e Zd Z eej        ddd          ZdZddddddgZd	S )
OsnatelTVIEr   r   r   r   z6https://tvonline.osnatel.de/program/daserste/210177916Tr   zGhttps://tvonline.osnatel.de/guide/german?channel=srf1&program=169860555N	r   r   r   r   ry  r   r   r   r   rh   r   r   r|  r|    sW        ""?#8&)MfggJEG  Y FFFr   r|  c                   l     e Zd Z eej        ddd          ZdZddddddgZe	 fd            Z
 xZS )	OsnatelTVLiveIEr   r   r   z<https://tvonline.osnatel.de/channels/german?channel=srf_zweiTr   z%https://tvonline.osnatel.de/live/srf1c                 ~    t                               |          rdn t                                          |          S r   )r|  r   r   r   s     r   r   zOsnatelTVLiveIE.suitable  r  r   )r   r   r   r   ry  r   r   r   r   r   r   r  r  s   @r   r  r    s        ""?#8+yRXYYJEM  7 F M M M M [M M M M Mr   r  c                   J    e Zd Z eej        dd          ZdZddddddgZdS )	OsnatelTVRecordingsIEr   r
  r  z:https://tvonline.osnatel.de/recordings?recording=193615508Tr   zPhttps://tvonline.osnatel.de/tc/ptc_recordings_all_recordings?recording=193615420Nr}  rh   r   r   r  r    sT        ""?#8&+NNJEK  b FFFr   r  c                        e Zd ZdZdZde ZdS )EinsUndEinsTVBaseIE1und1tvz1und1.tvr  Nr  rh   r   r   r  r    s#        NEuIIIr   r  c                   L    e Zd Z eej        ddd          ZdZddddddgZd	S )
EinsUndEinsTVIEr   r   r   r   z+https://1und1.tv/program/daserste/210177916Tr   z<https://1und1.tv/guide/german?channel=srf1&program=169860555N	r   r   r   r   r  r   r   r   r   rh   r   r   r  r    sX        ""#6#<fiQjkkJE<  N FFFr   r  c                   l     e Zd Z eej        ddd          ZdZddddddgZe	 fd            Z
 xZS )	EinsUndEinsTVLiveIEr   r   r   z1https://1und1.tv/channels/german?channel=srf_zweiTr   zhttps://1und1.tv/live/srf1c                 ~    t                               |          rdn t                                          |          S r   )r  r   r   r   s     r   r   zEinsUndEinsTVLiveIE.suitable#  rT  r   )r   r   r   r   r  r   r   r   r   r   r   r  r  s   @r   r  r    s        ""#6#<k9V\]]JEB  , F Q Q Q Q [Q Q Q Q Qr   r  c                   J    e Zd Z eej        dd          ZdZddddddgZdS )	EinsUndEinsTVRecordingsIEr   r
  r  z/https://1und1.tv/recordings?recording=193615508Tr   zEhttps://1und1.tv/tc/ptc_recordings_all_recordings?recording=193615420Nr  rh   r   r   r  r  (  sU        ""#6#<fkRRJE@  W FFFr   r  c                       e Zd ZdZdZdS )SaltTVBaseIEsalttvz
tv.salt.chNr   rh   r   r   r  r  4  r   r   r  c                   L    e Zd Z eej        ddd          ZdZddddddgZd	S )
SaltTVIEr   r   r   r   z-https://tv.salt.ch/program/daserste/210177916Tr   z>https://tv.salt.ch/guide/german?channel=srf1&program=169860555N	r   r   r   r   r  r   r   r   r   rh   r   r   r  r  9  sW        ""<#5vyJcddJE>  P FFFr   r  c                   l     e Zd Z eej        ddd          ZdZddddddgZe	 fd            Z
 xZS )	SaltTVLiveIEr   r   r   z3https://tv.salt.ch/channels/german?channel=srf_zweiTr   zhttps://tv.salt.ch/live/srf1c                 ~    t                               |          rdn t                                          |          S r   )r  r   r   r   s     r   r   zSaltTVLiveIE.suitableP  r   r   )r   r   r   r   r  r   r   r   r   r   r   r  r  s   @r   r  r  E  r  r   r  c                   J    e Zd Z eej        dd          ZdZddddddgZdS )	SaltTVRecordingsIEr   r
  r  z1https://tv.salt.ch/recordings?recording=193615508Tr   zGhttps://tv.salt.ch/tc/ptc_recordings_all_recordings?recording=193615420Nr  rh   r   r   r  r  U  sT        ""<#5v{KKJEB  Y FFFr   r  r   )Dr   r3   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   r   r   r   r   r   r  r	  r  r  r  r  r  r  r!  r$  r&  r)  r,  r/  r1  r4  r7  r;  r=  rA  rE  rI  rL  rO  rR  rV  rX  r[  r^  ra  rc  rf  ri  rl  rn  rq  rt  rw  ry  r|  r  r  r  r  r  r  r  r  r  r  rh   r   r   <module>r     s
   				  ! ! ! ! ! ! - - - - - -               \N \N \N \N \N= \N \N \N~	 	 	 	    '   
    |   6J J J J J< J J J 	 	 	 	 	\ 	 	 		 	 	 	 	 	 	 	    *   	 	 	 	 	/ 	 	 	M M M M Mo M M M 	 	 	 	 	O 	 	 	    '   
	 	 	 	 	| 	 	 	J J J J J< J J J 	 	 	 	 	 	 	 	    '   
	 	 	 	 	| 	 	 	J J J J J< J J J 	 	 	 	 	 	 	 	    &   	 	 	 	 	k 	 	 	I I I I I+ I I I 	 	 	 	 	 	 	 	    &   	 	 	 	 	k 	 	 	I I I I I+ I I I 	 	 	 	 	 	 	 	" " " " ". " " "
	 	 	 	 	) 	 	 	Q Q Q Q Q- Q Q Q 	 	 	 	 	 3 	 	 	    &   	 	 	 	 	k 	 	 	I I I I I+ I I I 	 	 	 	 	 	 	 	    &   
	 	 	 	 	k 	 	 	I I I I I+ I I I 	 	 	 	 	 	 	 	    *   	 	 	 	 	/ 	 	 	M M M M Mo M M M 	 	 	 	 	O 	 	 	" " " " "* " " "
	 	 	 	 	/ 	 	 	M M M M Mo M M M 	 	 	 	 	O 	 	 	    .   	 	 	 	 	) 	 	 	Q Q Q Q Q- Q Q Q 	 	 	 	 	 3 	 	 	    '   
	 	 	 	 	| 	 	 	J J J J J< J J J 	 	 	 	 	 	 	 	 	 	r   