
    VGh5                         d dl Z d dlZd dlZd dlZd dlZd dlZddlmZ ddl	m
Z
 ddl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 G d de      Z G d de      Z G d de      Zy)    N   )InfoExtractor)SlidesLiveIE   )ExtractorErrorInAdvancePagedListint_or_noneremove_starttraverse_objupdate_url_queryurl_or_nonec                   z    e Zd ZddddZddj	                   eej                  e             dZdZ	d	 Z
d
 Zd Zy)VideoKenBaseIEictscncfneurips)zvideos.icts.res.inzvideos.cncf.iozvideos.neurips.cczhttps?://(?P<host>|z)/   c                 L    | j                  d| d|dddi      }|d   |d   fS )	N-https://analytics.videoken.com/api/videolake/z/detailsz'Downloading organization ID and API keyAcceptapplication/json)noteheadersidapikey)_download_json)selforgvideo_iddetailss       b/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/videoken.py_get_org_id_and_api_keyz&VideoKenBaseIE._get_org_id_and_api_key   sJ    %%;C5I8:,E & 
 t}gh///    c                     |s|sy |rd|v rdt        |d       }t        |      r9t        ||dt        j                  j                  |      j                   d      S |S )Nzembed/sign-inzhttps://slideslive.com/embed/slideslive-zhttps://)embed_parent_urlembed_container_origin)r
   r   r   urllibparseurlparsehostname)r   	video_urlr    referers       r"   _create_slideslive_urlz%VideoKenBaseIE._create_slideslive_url'   so    o:7X}8]7^_Iw#I$+,4V\\5J5J75S5\5\4]*^0   r$   c              #   \  K   t        |d      D ]  }t        |dd      }|sd }t        |dd      dk(  r|}d}n[t        |dd	t        
      }|s@t        j                  j	                  |      j
                  dk(  rt        }| j                  |||      }| j                  |||        y w)N))videosresults.
youtube_idvideoidtypesourceyoutubeYoutube	embed_urlembeddableurl)expected_typezslideslive.com)	r   r   r)   r*   r+   r,   r   r/   
url_result)r   r1   urlvideor    ie_keyr-   s          r"   _extract_videoszVideoKenBaseIE._extract_videos3   s     !&*FG 	?E#E<CHFE684	A$	"(_\gh	 \\**95>>BRR)F $ ; ;IxQT UI//)VX>>	?s   B*B,N)__name__
__module____qualname___ORGANIZATIONSjoinmapreescape_BASE_URL_RE
_PAGE_SIZEr#   r/   r@    r$   r"   r   r      sL    $ &N
 )#bii2P)Q(RRTULJ0
?r$   r   c                      e Zd Zej                  dz   Zdddddddd	d
dddidgddi 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,ed-ed.d/d0d1gg d2d3d4d5ddidgdd6i dd7dddd8dd9dd:dd;dd<d d:d!d=d"d>d$d?d(d@d*d+dAd/dBdCdDd0d,eeedEgg d2dFdGdHddidIdJd0dKdLd0dKdMd0dKgZdN ZyO)P
VideoKenIEz4(?:(?:topic|category)/[^/#?]+/)?video/(?P<id>[\w-]+)z3https://videos.neurips.cc/video/slideslive-3892281538922815mp4zVEfficient Processing of Deep Neural Network: from Algorithms to Hardware Architecturesi(6a20210906re:^https?://.*\.(?:jpg|png)z	count:330z	count:329r   exttitle	timestampupload_date	thumbnail
thumbnailschaptersskip_downloadm3u8$Failed to download VideoKen API JSON)r=   	info_dictparamsexpected_warningszLhttps://videos.neurips.cc/topic/machine%20learning/video/slideslive-38923348r   2Xa_dt78rJErS   
display_id38923348rT   zMachine EducationdescriptionzDWatch full version of this video at https://slideslive.com/38923348.channelzSlidesLive Videos - G2
channel_idUCOExahQQ588Da8Nft_Ltb9wchannel_urlz8https://www.youtube.com/channel/UCOExahQQ588Da8Nft_Ltb9wuploaderuploader_iduploader_urlz7http://www.youtube.com/channel/UCOExahQQ588Da8Nft_Ltb9wdurationi	  rU   i~`rV   20200131	age_limitr   channel_follower_count
view_countunlistednot_liveTzPeople & Blogszre:^https?://.*\.(?:jpg|webp)zcount:78zcount:77)availabilitylive_statusplayable_in_embed
categoriestagsrW   rX   rY   zDhttps://videos.icts.res.in/topic/random%20variable/video/zysIsojYdvczysIsojYdvczVSmall-worlds, complex networks and random graphs (Lecture 3)  by Remco van der Hofstadz$md5:87433069d79719eeadc1962cc2ace00bz-International Centre for Theoretical ScienceszUCO3xnVTHzB7l-nc8mABUJIQz8https://www.youtube.com/channel/UCO3xnVTHzB7l-nc8mABUJIQ	ICTStalksz%http://www.youtube.com/user/ICTStalksi,  20191004rs   rr   publicrt   zScience & Technologyzcount:42zcount:20)
like_countro   ru   rv   rW   rX   rY   r=   r]   r^   z5https://videos.cncf.io/category/478/video/IL4nxbmUIX8)r=   only_matchingz9https://videos.cncf.io/topic/kubernetes/video/YAM2d7yTrrIz,https://videos.icts.res.in/video/d7HuP_abpKUc           	         | j                  |      j                  dd      \  }}| j                  | j                  |   |      \  }}| j	                  d|||dddiddd	
      }|rt        | j                  d|gi|            S |j                  d      r(| j                  | j                  d ||      t        |      S t        j                  d|      r| j                  |d|      S t        d      )Nhostr   z4https://analytics.videoken.com/api/videoinfo_private)r4   org_idr   r   zDownloading VideoKen API JSONr\   F)queryr   r   errnotefatalr1   r&   z^[\w-]{11}$r8   z/Unable to extract without VideoKen API response)_match_valid_urlgroupr#   rD   r   nextr@   
startswithr<   r/   r   rG   matchr   )r   r=   r,   r    r   _r!   s          r"   _real_extractzVideoKenIE._real_extract   s	   !2237==fdK(001D1DX1NPXY	%%BH# U !"45<[:% & I ,,h	-BCHII  /??++D(C@,PXZ ZXXnh/??8YAA !RSSr$   N)	rA   rB   rC   r   rI   
_VALID_URLint_TESTSr   rK   r$   r"   rM   rM   F   s   ,,/ffJ Em#%8%#	
 V
 EE!& ^
-
5
 *
 (	

 a
 /
 4
 U
 0
 5
 U
 
 
 :
 
  %c!
" ##
$ '%!%+,9$"3
8 V
 EEC"H V
-
5
 m
 A	

 F
 4
 U
 G
 ;
 C
 
 :
 
 :
 H
   !
" %c#
$ 129$"1
6 V
; B G K >s\F|Tr$   rM   c            
       :    e Zd ZdZdddddddd	d
dddidgZd Zy)VideoKenPlayerIEz;https?://player\.videoken\.com/embed/slideslive-(?P<id>\d+)z5https://player.videoken.com/embed/slideslive-3896843438968434rO   z-Deep Learning with Label Differential Privacyi|a20220128rQ   zcount:30zcount:29rR   rZ   r[   r|   c                 t    | j                  |      }| j                  | j                  d ||      t        |      S )N)	_match_idr<   r/   r   )r   r=   r    s      r"   r   zVideoKenPlayerIE._real_extract   s9    >>#&''h<lHV 	Vr$   N)rA   rB   rC   r   r   r   rK   r$   r"   r   r      sE    OJFD#%8$"	
 V
 F"Vr$   r   c                   D    e Zd Zej                  dz   ZddddddgZd Zy	)
VideoKenPlaylistIEz&(?:category/\d+/)?playlist/(?P<id>\d+)z5https://videos.icts.res.in/category/1822/playlist/381u   381zCosmology - The Next Decader   rT   r=   playlist_mincountr]   c                 .   | j                  |      j                  dd      \  }}| j                  | j                  |   |      \  }}| j	                  d| d| d|ddid	      }| j                  | j                  ||      ||j                  d
            S )Nr   r   z#https://analytics.videoken.com/api/z/playlistitems//r   r   zDownloading API JSON)r   r   rT   )r   r   r#   rD   r   playlist_resultr@   get)r   r=   r,   playlist_idr   r   r1   s          r"   r   z VideoKenPlaylistIE._real_extract   s     $ 5 5c : @ @ N+001D1DX1NP[\	$$1&UVW(,>!?F\ % ^ ##D$8$8$E{TZT^T^_fTghhr$   N)rA   rB   rC   r   rI   r   r   r   rK   r$   r"   r   r      s6    ,,/XXJF 2
 Fir$   r   c                   r    e Zd Zej                  dz   Zdddddddd	d
dddddddddgZddZd Zd Z	y)VideoKenCategoryIEz category/(?P<id>\d+)/?(?:$|[?#])z)https://videos.icts.res.in/category/1822/  1822Programsr   r   z'https://videos.neurips.cc/category/350/"   350zNeurIPS 2018z$https://videos.cncf.io/category/479/iH  479z"KubeCon + CloudNativeCon Europe'19Nc           
      n    | j                  d| d|d|r|nd| ||| j                  dddi      xs i S )	Nr   z/category_videosFzDownloading category page )category_idpage_numberlengthr   r   )r   r   r   r   r   rJ   )r   r   r   pager   s        r"   _get_category_pagez%VideoKenCategoryIE._get_category_page  sb    "";F8CSTVadd2LTF0S*#// !"45 # 7 = ;=	=r$   c              #   p   K   | j                  |||dz         }| j                  ||      E d {    y 7 wNr   )r   r@   )r   r   r   r=   r   r1   s         r"   _entrieszVideoKenCategoryIE._entries  s4     ((fdQhG''444s   ,646c           
         | j                  |      j                  dd      \  }}| j                  | j                  |   |      \  }}| j	                  ||d      }|d   }t        j                  t        |d         | j                  z        }| j                  t        t        j                  | j                  |||      || j                        ||      S )Nr   r   zDownloading category infor   category_namerecordsTotal)r   r   r#   rD   r   mathceilr   rJ   r   r   	functoolspartialr   )	r   r=   r,   r   r   r   category_infocategorytotal_pagess	            r"   r   z VideoKenCategoryIE._real_extract  s     $ 5 5c : @ @ N+001D1DX1NP[\	//VJe/f 1iiM.$A BT__ TU##$6dmm[&#F%*+6B 	Br$   r   N)
rA   rB   rC   r   rI   r   r   r   r   r   rK   r$   r"   r   r      sp    ,,/RRJ: 
 9#
 6 :
F.=5Br$   r   c                   r    e Zd Zej                  dz   Zdddddddd	d
dddddddddgZddZd Zd Z	y)VideoKenTopicIEz!topic/(?P<id>[^/#?]+)/?(?:$|[?#])z3https://videos.neurips.cc/topic/machine%20learning/r   machine_learningzmachine learningr   r   z7https://videos.icts.res.in/topic/gravitational%20waves/M   gravitational_waveszgravitational wavesz(https://videos.cncf.io/topic/prometheus/   
prometheusNc                 t    | j                  d|d|| j                  ||dd|dd|d
dd	i|r|nd
|       xs i S )Nz,https://es.videoken.com/api/v1.0/get_resultsFupload_descalltrue )
orgidsizer   r   sortfiltertokenis_topicr   searchidr   r   zDownloading topic page )r   r   r   r   r   )r   topicr   	search_idapi_keyr   r   s          r"   _get_topic_pagezVideoKenTopicIE._get_topic_page3  sr    "":E% "%W !"45%<TF#C # E K IK	Kr$   c              #   t   K   | j                  |||||dz         }| j                  ||      E d {    y 7 wr   )r   r@   )r   r   r   r   r   r=   r   r1   s           r"   r   zVideoKenTopicIE._entriesC  s9     %%eVYPQR''444s   .868c                 n   | j                  |      j                  dd      \  }}t        j                  j	                  |      }|j                  dd      }| j                  | j                  |   |      \  }}t        j                  d| dt        t        j                                dj                               j                         }t        | j                  ||||d      d	         }| j!                  t#        t%        j&                  | j(                  |||||      || j*                        ||      S )
Nr   r    r   :z
:transientzDownloading topic infor   total_no_of_pages)r   r   r)   r*   unquotereplacer#   rD   base64	b64encoder   timeencodedecoder	   r   r   r   r   r   r   rJ   )	r   r=   r,   topic_idr   r   r   r   r   s	            r"   r   zVideoKenTopicIE._real_extractG  s    !2237==fdK($$X.==c*66t7J7J87TV[\$$qqTYY[1A0B*%M%T%T%VW^^`	!$"6"669g4L #7 #NNa#c d##$6dmmUFIwPST%*+3U< 	<r$   r   )
rA   rB   rC   r   rI   r   r   r   r   r   rK   r$   r"   r   r     sq    ,,/SSJD $'
 I'*
 : !
F.K 5
<r$   r   )r   r   r   rG   r   urllib.parser)   commonr   
slidesliver   utilsr   r   r	   r
   r   r   r   r   rM   r   r   r   r   rK   r$   r"   <module>r      s       	   ! $  .?] .?brT rTjV~ V2i i(/B /Bd7<n 7<r$   