
    yf                     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   )try_getint_or_noneurl_or_nonefloat_or_noneunified_timestampc            
       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_idr   	operationr"   s        >/usr/lib/python3/dist-packages/yt_dlp/extractor/bannedvideo.py	_call_apizBannedVideoIE._call_apiW   sk    ""3XD AJJ"BZ!*..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*   r/   _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 )Nr2   contentc                     | d   d   S )Nuserusername xs    r.   <lambda>z.BannedVideoIE._parse_comment.<locals>.<lambda>r   s    ai
6K r0   c                     | d   d   S )NrA   r2   rC   rD   s    r.   rF   z.BannedVideoIE._parse_comment.<locals>.<lambda>s   s    659I r0   	createdAtc                     | d   d   S )N	voteCountpositiverC   rD   s    r.   rF   z.BannedVideoIE._parse_comment.<locals>.<lambda>v   s    !K.:T r0   )r   textauthor	author_idr   parent
like_count)r*   r   r
   )r8   rO   s     r.   r6   zBannedVideoIE._parse_commentm   sa     ""5) $$Y/l,KL /IJ*<+;+;K+HI!,0TU
 	
r0   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_idrS   r   summaryc                     | d   d   S )Nchannelr   rC   rD   s    r.   rF   z-BannedVideoIE._real_extract.<locals>.<lambda>   s    Qy\'5J r0   c                     | d   d   S )Nrb   r2   rC   rD   s    r.   rF   z-BannedVideoIE._real_extract.<locals>.<lambda>   s    )U8K r0   	playCount
largeImagevideoDurationrH   tagsnameunlisted)is_unlisted)r   r   formatsis_liver   rb   
channel_id
view_countr   durationr   rg   availabilityr7   __post_extractor)	_match_idr/   r*   r6   r   extend_extract_m3u8_formatsr   r   r	   r
   _availabilityextract_comments)
r+   r   r,   
video_json
video_inforl   r9   r7   rk   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(   r/   r=   staticmethodr6   rz   rC   r0   r.   r   r      sx    PJG1,YTA%#
 F""H)%$  :>
	+	A 	
 	
"
r0   r   )
r&   commonr   utilsr   r   r   r	   r
   r   rC   r0   r.   <module>r      s#     ! N
M N
r0   