
    VGh                     R    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	  G d de      Z
y)	    N   )InfoExtractor   )	HTTPError)ExtractorErrorint_or_nonestr_or_nonetry_getc                   L    e Zd ZdZdZdZddiZdZdZd Z	d Z
d	 Zd
 Zd Zd Zy)ImgGamingBaseIEz-https://dce-frontoffice.imggaming.com/api/v2/z$857a1e5d-e35e-4fdf-805b-a87b6f8364bfNzAccept-Encodingidentityzlhttps?://(?P<domain>%s)/(?P<type>live|playlist|video)/(?P<id>\d+)(?:\?.*?\bplaylistId=(?P<playlist_id>\d+))?c                 F    d| j                   z   | j                  d| _        y )Nzdce.)Realmz	x-api-key)_REALM_API_KEY_HEADERSselfs    c/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/imggaming.py_initialize_pre_loginz%ImgGamingBaseIE._initialize_pre_login   s    dkk)
    c                     | j                   j                         }d|d<   d| j                  | j                  dz   d dt	        j
                  ||d      j                         |      d   z   | j                   d	<   y )
Nzapplication/jsonzContent-TypezBearer loginz
Logging in)idsecret)dataheadersauthorisationTokenAuthorization)r   copy_download_json	_API_BASEjsondumpsencode)r   usernamepassword	p_headerss       r   _perform_loginzImgGamingBaseIE._perform_login   s    MM&&(	$6	.!)2T5H5HNNW$,TZZ"1 & vx 6I 6,
 -A6B *Bo&r   c                 `    | j                   j                  d      s| j                  d       y y )Nr   r'   )method)r   getraise_login_requiredr   s    r   _real_initializez ImgGamingBaseIE._real_initialize%   s*    }}  1%%Z%8 2r   c                 ^    | j                  | j                  |z   |z   || j                        S )N)r   )r!   r"   r   )r   pathmedia_ids      r   	_call_apizImgGamingBaseIE._call_api)   s5    ""NNT!H,h # O 	Or   c                    d}|dk(  r|dz  }n|dz  }	 | j                  ||      d   S # t        $ r}t        |j                  t              rl|j                  j
                  dk(  rSt        | j                  |j                  j                  j                         j                         |      d   d   d	
       d }~ww xY w)Nstreamvideoz/vod/z	?eventId=playerUrlCallbacki  messagesr   T)expected)
r2   r   
isinstancecauser   status_parse_jsonresponsereaddecode)r   r1   
media_typestream_pathes        r   _extract_dve_api_urlz$ImgGamingBaseIE._extract_dve_api_url-   s     7"K;&K	>>X'':< < 	!''9-!''..C2G$$$QWW%5%5%:%:%<%C%C%ExPQ[\]^_!# # 	s   ) 	B>BB99B>c           
      h   | j                  |      j                         \  }}}}|r| j                  ||      rd|}}|dk(  r| j                  d|      }g }t	        |d       xs g D ]U  }t        |j                  d            }	|	s |j                  | j                  d| d|	 | j                         |	             W | j                  |||j                  d      |j                  d            S | j                  ||      }
| j                  |
|      }|d	k(  }|r| j                  d
|      d   }n|d   }g }dD ]  |j                  dz         xs t	        |fd      }|s+dk(  rf| j                  ||d|dd| j                        }|D ]>  }|j                  di       j!                  | j                         |j                  |       @ |j#                  | j%                  ||dd| j                                i }|j                  dg       D ]I  }|j                  d      }|s|j                  |j                  dd      g       j                  d|i       K ||||j                  d      |j                  d      t'        |j                  d            |j                  d      ||d	S )Nplaylistzvod/playlist/c                     | d   d   S )Nvideosvods )xs    r   <lambda>z/ImgGamingBaseIE._real_extract.<locals>.<lambda>G   s    Qx[5H r   r   zhttps://z/video/titledescriptionlivezevent/name)hlsdashUrlc                     |    d   S )NurlrI   )rJ   protos    r   rK   z/ImgGamingBaseIE._real_extract.<locals>.<lambda>\   s    WXY^W_`eWf r   rP   mp4F)rN   m3u8_idfatalr   http_headersrQ   )mpd_idrX   r   	subtitlesrT   langen_USthumbnailUrldurationtags)	r   rL   formats	thumbnailrM   r_   r`   is_liver[   )_match_valid_urlgroups_yes_playlistr2   r
   r	   r,   append
url_resultie_keyplaylist_resultrC   r!   _extract_m3u8_formats_MANIFEST_HEADERS
setdefaultupdateextend_extract_mpd_formatsr   )r   rT   domainr@   r1   playlist_idrE   entriesr5   video_iddve_api_url
video_datarc   rL   ra   	media_urlm3u8_formatsfr[   subtitlesubtitle_urlrU   s                        @r   _real_extractzImgGamingBaseIE._real_extract=   s   484I4I#4N4U4U4W1
Hk!!+x8'1;H
#~~ox@HG +HIOR .&uyy7tvhghZ8KKM8 - .	. ''8<<#8]+- - //*E((h?
&NN8X6w?Ev&E$ 	5E"uu}5gMf9gI~#99xW!8N8N  :  P & &ALL4;;D<R<RSNN1%& t88xe 22  9  4 5	5  	"{B7 	H#<<.L  fg!>CJJ|L 		 #7%>>-8#JNN:$>?NN6*"

 
	
r   )__name__
__module____qualname__r"   r   r   rl   r   _VALID_URL_TEMPLr   r)   r.   r2   rC   r|   rI   r   r   r   r      sK    ?I5HH*J7F G
B9O A
r   r   )r#   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   rI   r   r   <module>r      s&     ! - q
m q
r   