o
    i#                     @   s   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 ddlmZmZ G dd deZG d	d
 d
eZdS )    N   )InfoExtractor   )determine_extfilter_dictfloat_or_noneint_or_none
orderedSetstr_or_nonetry_geturl_or_none)subs_list_to_dicttraverse_objc                   @   s   e Zd ZdZdZdZdddddd	d
dddidddddddddddiddddddddddddddd 	ddidd!d"dd#ddd$d%d&d'd(d)
ddidgZd*d+ Zd,S )-GloboIEzC(?:globo:|https?://[^/?#]+?\.globo\.com/(?:[^/?#]+/))(?P<id>\d{7,})globoa9  
    query getVideoView($videoId: ID!) {
        video(id: $videoId) {
            duration
            description
            relatedEpisodeNumber
            relatedSeasonNumber
            headline
            title {
                originProgramId
                headline
            }
        }
    }
    z&https://globoplay.globo.com/v/3607726/3607726mp4u7   Mercedes-Benz GLA passa por teste de colisão na EuropagVY@z
G1 ao vivo4209)idexttitledurationuploaderuploader_idskip_downloadT)url	info_dictparamsz%http://globoplay.globo.com/v/4581987/4581987uO   Acidentes de trânsito estão entre as maiores causas de queda de energia em SPgB`"?a@zBom Dia Brasil810zglobo:3607726r   only_matchingzglobo:80139078013907u   Capítulo de 14/08/1989z	Episode 1r   Tieta11895gJ+T@zcount:1)	r   r   r   episodeepisode_numberr   r   r   	subtitleszglobo:1282414612824146zAcordo de damaszRensga Hits!20481g"@zSeason 2r   )
r   r   r   r%   r&   r   r   r   seasonseason_numberc                 C   s  |  |}| jd|dtd|i| jdddddd	d
d d }g }| jd|d| ddittd|ddt  dddidt| 	ddd dd

 d}t|ddthfr_| | |d d  }t|d! d"krz| j|d! |d#d$\}}n| j|d! |d%d&d'\}}| jt|d(d)d*d!d+d!thfittd,d-hf|d. d/|it|d0thfd1td2d3hfd4d0thfd4d5thfd6thfd7thfd8||d9S ):Nz&https://cloud-jarvis.globo.com/graphqlgetVideoViewvideoId)operationName	variablesqueryzapplication/jsonwebdesktopz	2024.12-5)zcontent-typezx-platform-idzx-device-idzx-client-version)r0   headersdatavideoz1https://playback.video.globo.com/v4/video-sessionzDownloading resource info for zContent-Typemirakulo_8k_hdrmaxwidevine	streaminglow_latencyTz-03:00zhttps://globo.comc                 S   s   d| d j  S )NzBearer GLBID)value)x r>   J/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/globo.py<lambda>   s    z'GloboIE._real_extract.<locals>.<lambda>r   )
player_typevideo_idqualitycontent_protectionvsidconsumptioncapabilitiestzAuthorizationversion)r3   r4   resourcedrm_protection_enabledsourcesr   r   mpddash)mpd_idr   hls)m3u8_idtext.)captionsubtitlesrtzpt-BR)lang)targetr   headliner   i  )scaler   originProgramIdrelatedEpisodeNumberrelatedSeasonNumber)r   r   r   r   r&   r+   )formatsr'   )	_match_id_download_jsonjsondumps_VIDEO_VIEWr   uuiduuid4r   _get_cookiesencoder   bool
report_drmr   "_extract_mpd_formats_and_subtitles#_extract_m3u8_formats_and_subtitles_merge_subtitlesr   allr   strr   r
   r   )selfr   rB   infor^   r5   main_sourcer'   r>   r>   r?   _real_extractg   s   






zGloboIE._real_extractN)__name__
__module____qualname__
_VALID_URL_NETRC_MACHINErc   _TESTSrr   r>   r>   r>   r?   r      sx    		Br   c                       s   e Zd ZdZg d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	gZe fddZdd  Z  Z	S )!GloboArticleIEzNhttps?://(?!globoplay).+?\.globo\.com/(?:[^/?#]+/)*(?P<id>[^/?#.]+)(?:\.html)?)z"\bdata-video-id=["\'](\d{7,})["\']z*\bdata-player-videosids=["\'](\d{7,})["\']z \bvideosIDs\s*:\s*["\']?(\d{7,})z\bdata-id=["\'](\d{7,})["\']z <div[^>]+\bid=["\'](\d{7,})["\']z+<bs-player[^>]+\bvideoid=["\'](\d{8,})["\']z|http://g1.globo.com/jornal-nacional/noticia/2014/09/novidade-na-fiscalizacao-de-bagagem-pela-receita-provoca-discussoes.htmlzCnovidade-na-fiscalizacao-de-bagagem-pela-receita-provoca-discussoesuF   Novidade na fiscalização de bagagem pela Receita provoca discussõesz$md5:c3c4b4d4c30c32fce460040b1ac46b12)r   r   descriptionr   )r   r   playlist_countzmhttp://g1.globo.com/pr/parana/noticia/2016/09/mpf-denuncia-lula-marisa-e-mais-seis-na-operacao-lava-jato.htmlz:mpf-denuncia-lula-marisa-e-mais-seis-na-operacao-lava-jatou@   Lula era o 'comandante máximo' do esquema da Lava Jato, diz MPFz$md5:8aa7cc8beda4dc71cc8553e00b77c54c   zjhttp://gq.globo.com/Prazeres/Poder/noticia/2015/10/all-o-desafio-assista-ao-segundo-capitulo-da-serie.htmlTr    zhttp://gshow.globo.com/programas/tv-xuxa/O-Programa/noticia/2014/01/xuxa-e-junno-namoram-muuuito-em-luau-de-zeze-di-camargo-e-luciano.htmlzWhttp://oglobo.globo.com/rio/a-amizade-entre-um-entregador-de-farmacia-um-piano-19946271zrhttps://ge.globo.com/video/ta-na-area-como-foi-assistir-ao-jogo-do-palmeiras-que-a-globo-nao-passou-10287094.ghtmlzQta-na-area-como-foi-assistir-ao-jogo-do-palmeiras-que-a-globo-nao-passou-10287094uL   Tá na Área: como foi assistir ao jogo do Palmeiras que a Globo não passouz$md5:2d089d036c4c9675117d3a56f8c61739zZhttps://redeglobo.globo.com/rpc/meuparana/noticia/a-producao-de-chocolates-no-parana.ghtmlz"a-producao-de-chocolates-no-paranau%   A produção de chocolates no Paranáz$md5:f2e3daf00ffd1dc0e9a8a6c7cfb0a89er   c                    s   t |rdS t |S )NF)r   suitablesuper)clsr   	__class__r>   r?   r}      s   zGloboArticleIE.suitablec           	         sx     |} ||}g } jD ]}|t|| q fddt|D } | } 	d|} 
||||S )Nc                    s"   g | ]}  d | t qS )zglobo:)
url_resultr   ie_key).0rB   ro   r>   r?   
<listcomp>   s    z0GloboArticleIE._real_extract.<locals>.<listcomp>rz   )r_   _download_webpage_VIDEOID_REGEXESextendrefindallr	   _og_search_titlestrip_html_search_metaplaylist_result)	ro   r   
display_idwebpage	video_idsvideo_regexentriesr   rz   r>   r   r?   rr      s   


zGloboArticleIE._real_extract)
rs   rt   ru   rv   r   rx   classmethodr}   rr   __classcell__r>   r>   r   r?   ry      sX    
			+ry   )ra   r   rd   commonr   utilsr   r   r   r   r	   r
   r   r   utils.traversalr   r   r   ry   r>   r>   r>   r?   <module>   s    (
 