
    i=                     z    S SK r SSKJr  SSKJrJrJr  SSKJr   " S S\5      r	 " S	 S
\	5      r
 " S S\	5      rg)    N   )InfoExtractor   )int_or_noneparse_iso8601url_or_none)traverse_objc                       \ rS rSrS rSrg)FrontoBaseIE   c                 F    [        U R                  U5      SSSS 1405      $ )NauthorizationfrAccessTokenvaluec                     U (       a  SU  3$ S $ )NzBearer  )tokens    E/app/mltbenv/lib/python3.13/site-packages/yt_dlp/extractor/frontro.py<lambda>0FrontoBaseIE._get_auth_headers.<locals>.<lambda>   s    \aQVPWGXGkgkGk    )r	   _get_cookies)selfurls     r   _get_auth_headersFrontoBaseIE._get_auth_headers	   s1    D--c2ow9k8lm5
  	r   r   N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s    r   r   c                       \ rS rSrSrS rSrg)FrontroVideoBaseIE   Nc                    U R                  U5      nU R                  SU[        R                  " SU R                  US.SS.5      R                  5       SS0U R                  U5      ES9S	   S
   n[        US5      (       d  U R                  5         U R                  US   U5      u  pEUUUS.[        US[        14S[        14S[        14S[        14S[        14S[        14S[        14S[        14S[        14S.	5      E$ )Nhttps://api.frontrow.cc/queryVideo)	channelIDvideoIDa"  query Video($channelID: ID!, $videoID: ID!) {
                    video(ChannelID: $channelID, VideoID: $videoID) {
                        ... on Video {title description updatedAt thumbnail createdAt duration likeCount comments views url hasAccess}
                    }
                }operationName	variablesquerycontent-typeapplication/json)dataheadersr0   video	hasAccessr   )idformats	subtitlestitledescription	thumbnail	createdAt	updatedAtduration	likeCountcommentsviews)	r7   r8   r9   	timestampmodified_timestampr<   
like_countcomment_count
view_count)	_match_id_download_jsonjsondumps_CHANNEL_IDencoder   r	   raise_login_required#_extract_m3u8_formats_and_subtitlesstrr   r   r   )r   r   video_idmetadatar5   r6   s         r   _real_extract FrontroVideoBaseIE._real_extract   sF   >>#&&&+XDJJ!(+/+;+;QH = vx 2"((-" '     Hk22%%'!EEhuoW_` "
 8!C5) -u5)K=9)M?;'2]O&D'+7*[M:",{m!<&6
& 
	
 	
r   r   )r   r   r   r    rI   rP   r!   r   r   r   r#   r#      s    K$
r   r#   c                   &    \ rS rSrSrSrSrS rSrg)FrontroGroupBaseIE9   Nc                    U R                  U5      nU R                  SUS[        R                  " SU R                  SUS.SS.5      R                  5       SS	0U R                  U5      ES
9S   S   n/ n[        USSSSSSS[        145       H<  nUR                  U R                  U R                  U-  U R                  U5      5        M>     SUUS.[        US[        14S[        14S[        14S.5      E$ )Nr&   zDownloading playlist metadataPaginatedStaticPageContaineri  )r(   firstpageContainerIDag  query PaginatedStaticPageContainer($channelID: ID!, $pageContainerID: ID!) {
                              pageContainer(ChannelID: $channelID, PageContainerID: $pageContainerID) {
                                ... on StaticPageContainer { id title updatedAt createdAt itemRefs {edges {node {
                                        id contentItem { ... on ItemVideo { videoItem: item {
                                            id
                                        }}}
                                    }}}
                                }
                              }
                            }r*   r.   r/   )noter0   r1   r0   pageContaineritemRefsedges.nodecontentItem	videoItemr4   playlist)_typer4   entriesr7   r:   r;   )r7   r@   rA   )rE   rF   rG   rH   rI   rJ   r   r	   rM   append
url_result_VIDEO_URL_TMPL_VIDEO_EXTRACTORr   )r   r   group_idrO   rb   rN   s         r   rP    FrontroGroupBaseIE._real_extract>   sA   >>#&&&+X<[!?+/+;+;c^fg	!  vx 2"((-" ' $ %$ '%(( $Xfm[$QTPU0W 
H NN4??$$x/1F1FR S
  	
 8!C5))M?;'2]O&D& 		
 		
r   r   )	r   r   r   r    rI   rf   re   rP   r!   r   r   r   rS   rS   9   s    KO'
r   rS   )rG   commonr   utilsr   r   r   utils.traversalr	   r   r#   rS   r   r   r   <module>rl      s9     ! ; ; *= '
 '
T,
 ,
r   