
    VGh?!                         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  G d de      Z G d d	e      Z G d
 de      Zy)    N   )InfoExtractor   )ExtractorErrordetermine_extextract_attributesint_or_noneparse_qssmuggle_urlunescapeHTMLunsmuggle_urlc                   P    e Zd ZdZdZed        Zed
d       Zd Z	d
dZ
d Zd	 Zy)GlomexBaseIEzhttps://player.glomex.com/z:https://integration-cloudfront-eu-west-1.mes.glomex.cloud/c                 &    || S t        | d|i      S )Norigin)r   )url
origin_urls     `/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/glomex.py_smuggle_origin_urlz GlomexBaseIE._smuggle_origin_url   s    J3: 677    Nc                 T    d|xs | j                   i}t        ||      \  }}||d   fS )Nr   )default)_DEFAULT_ORIGIN_URLr   )clsr   fallback_origin_urldefaultsunsmuggled_urldatas         r   _unsmuggle_origin_urlz"GlomexBaseIE._unsmuggle_origin_url   s8    1LS5L5LM,S(CtH~--r   c                 \    ddddd}|j                  d      d   }|j                  |d      S )	Nvideoplaylistzrelated videos playlistzcurated playlist)vplrlcl-r   zunknown type)splitget)selfvideo_id_VIDEOID_TYPESprefixs       r   _get_videoid_typezGlomexBaseIE._get_videoid_type!   s=    +$	
 $Q'!!&.99r   c                     |||xs | j                   d}| j                  |      }| j                  | j                  |d| dd| d|      S )N)integration_idplaylist_idcurrent_urlzDownloading z JSONzUnable to download )query)r   r.   _download_json_API_URL)r*   r+   integrationr2   r3   video_id_types         r   _download_api_datazGlomexBaseIE._download_api_data+   sk    )#&B$*B*B

 ..x8""MM]O59!-6	 #  	r   c                     | j                  |||      }|d   }|st        d|       |D cg c]  }| j                  ||       }}t        |      dk(  r|d   S | j	                  ||      S c c}w )Nvideoszno videos found for r   r   )r8   r   _extract_api_datalenplaylist_result)r*   r+   r6   r2   api_datar:   r!   s          r   _download_and_extract_api_dataz+GlomexBaseIE._download_and_extract_api_data8   s    **8[+N(# #7z!BCCGMNe$((9NNK1,vayX$2F2Fvx2XX Os   A-c           	      T   |j                  d      dk(  r| j                  |d          g i }}|d   j                         D ]g  \  }}t        |      }|dk(  r>| j	                  ||d|d	      \  }}	|j                  |       | j                  |	|
       T|j                  ||d       i |j                  d      r|D ]
  }
|d   |
d<    |j                  d      xs g |j                  d      xs i gz   }|D cg c]/  }|j                  d      r|j                  d      |d    dddd1 }}| j                  |       |j                  d      xs ||j                  d      |j                  d      |t        |j                  d            |j                  d      ||dS c c}w )N
error_codecontentGeoblockedgeo_locations)	countriessourcem3u8mp4F)m3u8_idfatal)target)r   	format_idlanguageimagesimager   idz/profile:player-960x540i  i  )rO   r   widthheightclip_idtitledescriptionclip_duration
created_at)rO   rS   rT   
thumbnailsduration	timestampformats	subtitles)
r)   raise_geo_restricteditemsr   #_extract_m3u8_formats_and_subtitlesextend_merge_subtitlesappend_remove_duplicate_formatsr	   )r*   r!   r+   rZ   subsrK   
format_urlextformats_subs_fmtrM   rN   rW   s                 r   r;   zGlomexBaseIE._extract_api_data@   s   99\"&99%%o0F%GB%*8_%:%:%< 	!Iz
+Cf}"&"J"J% #K #!% x(%%eD%9%!*  	 99Z  4"'
"3J4 ))H%+		'0B0Hb/II 3
 5!1	 ))D/El^#:;	
 3
 3 	&&z2 ))I&2(YYw' 99]3$#EIIo$>?<0	
 		
3s   ;4F%N)__name__
__module____qualname__r   r5   staticmethodr   classmethodr   r.   r8   r?   r;    r   r   r   r      sH    6KH8 8
 . .
:Y(
r   r   c            
       @    e Zd ZdZdZdZdZddddd	d
dddddgZd Zy)GlomexIEglomexzGlomex videosz1https?://video\.glomex\.com/[^/]+/(?P<id>v-[^-]+)19syy24xjn1oqlpczehttps://video.glomex.com/sport/v-cb24uwg77hgh-nach-2-0-sieg-guardiola-mit-mancity-vor-naechstem-titel cec33a943c4240c9cb33abea8c26242ezv-cb24uwg77hghrG   z$md5:38a90cedcfadd72982c81acf13556e0cz$md5:1ea6b6caff1443fcbbba159e432eedb8is  i颍`20210501)rO   re   rS   rT   rX   rY   upload_dater   md5	info_dictc                     | j                  |      }| j                  t        j                  || j                  |      t        j                         |      S ri   )	_match_id
url_resultGlomexEmbedIEbuild_player_url_INTEGRATION_IDie_key)r*   r   r+   s      r   _real_extractzGlomexIE._real_extract   sG    >>#&**8T5I5I3O  "H. 	.r   N)	rj   rk   rl   IE_NAMEIE_DESC
_VALID_URLr   _TESTSr   ro   r   r   rq   rq   k   sJ    GGEJ(O w1";A#%
 F.r   rq   c            
           e Zd ZdZdZdZ ej                  e      j                  dd      Z	de	 dZ
dd	d
dddddddddddidddddiddgZed d       Zed        Zd Zy)!r}   zglomex:embedzGlomex embedded videosz4//player.glomex.com/integration/1/iframe-player.htmlz/1/z/[^/]/zhttps?:z$\?([^#]+&)?playlistId=(?P<id>[^#&]+)zvhttps://player.glomex.com/integration/1/iframe-player.html?integrationId=4059a013k56vb2yd&playlistId=v-cfa6lye0dkdd-sf 68f259b98cc01918ac34180142fce287zv-cfa6lye0dkdd-sfrG   iCyai 20211027z$md5:e741185fc309310ff5d0c789b437be66z$md5:35647293513a6c92363817a0fb0a7961)rO   re   rY   rX   rv   rT   rS   rw   zhttps://player.glomex.com/integration/1/iframe-player.html?origin=fullpage&integrationId=19syy24xjn1oqlpc&playlistId=rl-vcb49w1fb592p&playlistIndex=0rO   zrl-vcb49w1fb592pd   )r   ry   playlist_countzthttps://player.glomex.com/integration/1/iframe-player.html?playlistId=cl-bgqaata6aw8x&integrationId=19syy24xjn1oqlpczcl-bgqaata6aw8xr   )r   ry   playlist_mincountNc                     t         j                  j                  ||d      }| j                  d| j                   d| |      S )N)
playlistIdintegrationIdzhttps:?)urllibparse	urlencoder   _BASE_PLAYER_URL)r   r+   r6   r   query_strings        r   r~   zGlomexEmbedIE.build_player_url   sK    ||--"(/
  &&0D0D/EQ|n'UWabbr   c              #     K   d}d| d| j                    d}t        j                  ||      D ]B  }t        |j	                  d            }| j                  |      s/| j                  ||       D d| d}t        j                  ||      D ][  }t        |j	                  d            }|j                  d	      s/|j                  d
      sA| j                  |d
   |d	   |       ] d| d}t        j                  d|      D ]`  }|j	                  d      }t        j                  |dz  |      }	|	s0t        j                  |dz  |      }
|
sL| j                  |
|	|       b y w)Nz["\']z((?x)
            <iframe[^>]+?src=(?P<q>z&)(?P<url>
                (?:https?:)?z&\?(?:(?!(?P=q)).)+
            )(?P=q)r   zX(?x)
            <glomex-player [^>]+?>|
            <div[^>]* data-glomex-player=(?P<q>z)true(?P=q)[^>]*>r   zdata-integration-idzdata-playlist-idzN(?x)
            (?P<is_js>dataset\.)?%s\s*(?(is_js)=|:)\s*
            (?P<q>z!)(?P<id>(?:(?!(?P=q)).)+)(?P=q)\sz(?x)<script[^<]*>.+?</script>r   r   )_BASE_PLAYER_URL_RErefinditerr   groupsuitabler   r   r)   r~   search)r   r   webpagequot_reregexmobj	embed_urlattrsscriptr0   r1   s              r   _extract_embed_urlsz!GlomexEmbedIE._extract_embed_urls   s     $$+9 - 445 6 KKw/ 	>D$TZZ%67I||I&--i==	>
007y8IM KKw/ 	iD&tzz!}5Eyy./EII>P4Q**51C+DeLaFbdghh	i)<@ KK @'J 	MDZZ]FYYu'>GN!))EL$8&AK**;LL	Ms    AE-A E->E-BE-E-c                     | j                  |      \  }}| j                  |      }t        |      j                  dd g      d   }|st	        dd      | j                  |||      S )Nr   r   zNo integrationId in URLT)expected)r   r{   r
   r)   r   r?   )r*   r   r   r1   r6   s        r   r   zGlomexEmbedIE._real_extract   sg    44S9ZnnS)sm''$@C !:TJJ22;ZXXr   ri   )rj   rk   rl   r   r   r   r   escapereplacer   r   r   rn   r~   r   r   ro   r   r   r}   r}      s    G&GM#"))$45==eYO/00TUJ H1%#%A;
 g$
  F#
 %F4 c c  M  MDYr   r}   )r   urllib.parser   commonr   utilsr   r   r   r	   r
   r   r   r   r   rq   r}   ro   r   r   <module>r      sH    	  !	 	 	W
= W
t.| .6RYL RYr   