
    VGh                     J    d dl Z ddlmZ ddlmZmZmZmZmZ  G d de      Z	y)    N   )InfoExtractor   )float_or_noneint_or_nonetry_getunified_timestampurl_or_nonec            
       b    e Zd ZdZdddddddd	d
ddgZdZdZeedZd Zd Z	e
d        Zd Zy)BannedVideoIEz<https?://(?:www\.)?banned\.video/watch\?id=(?P<id>[0-f]{24})z6https://banned.video/watch?id=5e7a859644e02200c6ef5f11 14b6e81d41beaaee2215cd75c6ed56e45e7a859644e02200c6ef5f11mp4zBChina Discovers Origin of Corona Virus: Issues Emergency Statementz8re:^https?://(?:www\.)?assets\.infowarsmedia.com/images/z$md5:560d96f02abbebe6c6b78b47465f6b2820200324iz^)idexttitle	thumbnaildescriptionupload_date	timestamp)urlmd5	info_dictaQ  
query GetVideoAndComments($id: String!) {
    getVideo(id: $id) {
        streamUrl
        directUrl
        unlisted
        live
        tags {
            name
        }
        title
        summary
        playCount
        largeImage
        videoDuration
        channel {
            _id
            title
        }
        createdAt
    }
    getVideoComments(id: $id, limit: 999999, offset: 0) {
        _id
        content
        user {
            _id
            username
        }
        voteCount {
            positive
        }
        createdAt
        replyCount
    }
}a  
query GetCommentReplies($id: String!) {
    getCommentReplies(id: $id, limit: 999999, offset: 0) {
        _id
        content
        user {
            _id
            username
        }
        voteCount {
            positive
        }
        createdAt
        replyCount
    }
})GetVideoAndCommentsGetCommentRepliesc                     | j                  d||ddit        j                  d|i|| j                  |   d      j	                  d            j                  d      S )	Nz%https://api.infowarsmedia.com/graphqlzContent-Typezapplication/json; charset=utf-8r   )	variablesoperationNamequeryutf8)noteheadersdatar$   )_download_jsonjsondumps_GRAPHQL_QUERIESencodeget)selfvideo_idid_var	operationr"   s        e/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/bannedvideo.py	_call_apizBannedVideoIE._call_apiW   sk    ""3XD AJJ"F^!*..y9   vf~ #   #s6{	+    c              #     K   |E d {    |j                         D ]i  }|j                  d      }|j                  d      dkD  s)| j                  ||dd|       }|j                  d      D ]  }| j                  ||        k y 7 w)N_id
replyCountr   r   z Downloading replies for comment getCommentReplies)copyr*   r0   _parse_comment)r+   r,   commentscomment_datacomment
comment_id
reply_jsonreplys           r/   _get_commentszBannedVideoIE._get_commentsb   s     #((* 	AG U+J{{<(1,!^^j*=6zlCE
 (^^,?@ AE--eZ@@A	A 	s   BB
<BABc           
          | j                  d      | j                  d      t        | d       t        | d       t        | j                  d            |t        | d       dS )Nr3   contentc                     | d   d   S )Nuserusername xs    r/   <lambda>z.BannedVideoIE._parse_comment.<locals>.<lambda>r   s    ai
6K r1   c                     | d   d   S )NrB   r3   rD   rE   s    r/   rG   z.BannedVideoIE._parse_comment.<locals>.<lambda>s   s    659I r1   	createdAtc                     | d   d   S )N	voteCountpositiverD   rE   s    r/   rG   z.BannedVideoIE._parse_comment.<locals>.<lambda>v   s    !K.:T r1   )r   textauthor	author_idr   parent
like_count)r*   r   r	   )r9   rP   s     r/   r7   zBannedVideoIE._parse_commentm   sa     ""5) $$Y/l,KL /IJ*<+;+;K+HI!,0TU
 	
r1   c                    | j                  |      }| j                  ||dd      }|d   }|j                  d      }|j                  d      D cg c]  }| j                  |d       }}t	        |j                  d            rdd	|j                  d      d
dgng }|j                  d      r5|j                  | j                  |j                  d      |d
ddd             ||j                  d      d d |||j                  d      t        |d       t        |d       t        |j                  d            t	        |j                  d            t        |j                  d            t        |j                  d            |j                  d      D 	cg c]  }	|	j                  d       c}	| j                  |j                  d            || j                  |||j                  d            dS c c}w c c}	w )Nr   zDownloading video metadatagetVideolivegetVideoCommentsroot	directUrldirectr   r   )	format_idqualityr   r   	streamUrlm3u8_nativehlsT)entry_protocolm3u8_idrT   r   summaryc                     | d   d   S )Nchannelr   rD   rE   s    r/   rG   z-BannedVideoIE._real_extract.<locals>.<lambda>   s    Qy\'5J r1   c                     | d   d   S )Nrc   r3   rD   rE   s    r/   rG   z-BannedVideoIE._real_extract.<locals>.<lambda>   s    )U8K r1   	playCount
largeImagevideoDurationrI   tagsnameunlisted)is_unlisted)r   r   formatsis_liver   rc   
channel_id
view_countr   durationr   rh   availabilityr8   __post_extractor)	_match_idr0   r*   r7   r
   extend_extract_m3u8_formatsr   r   r   r	   _availabilityextract_comments)
r+   r   r,   
video_json
video_inform   r:   r8   rl   tags
             r/   _real_extractzBannedVideoIE._real_extracty   s   >>#&^^Hh8MOkl

+
..(HRWiHjkWD''8kk *..56	 ">>+.	
 
 =? 	 >>+&NN455{+Xu,e$ 6 H I
 ^^G,Sb1%>>)4z+JK!*.KL%jnn[&AB$Z^^L%AB%jnn_&EF*:>>++FG0:v0FGSWWV_G ..:>>*;U.V  $ 5 5h*..YkJl m
 	
 l2 Hs   G7G<N)__name__
__module____qualname__
_VALID_URL_TESTS_GRAPHQL_GETMETADATA_QUERY!_GRAPHQL_GETCOMMENTSREPLIES_QUERYr(   r0   r>   staticmethodr7   r{   rD   r1   r/   r   r      sx    PJG1,YTA%#
 F""H)%$  :>
	+	A 	
 	
"
r1   r   )
r&   commonr   utilsr   r   r   r	   r
   r   rD   r1   r/   <module>r      s#     ! N
M N
r1   