
    Ğin                       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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m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mZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0  G d d	e          Z1 G d
 de1          Z2 G d de1          Z3 G d de1          Z4 G d de1          Z5 G d de1          Z6 G d de6          Z7 G d de6          Z8 G d de1          Z9 G d de9          Z: G d de9          Z; G d de9          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<          ZA G d* d+e          ZB G d, d-e          ZC G d. d/e          ZD G d0 d1eD          ZE G d2 d3eD          ZF G d4 d5e          ZG G d6 d7e          ZH G d8 d9e          ZI G d: d;eI          ZJ G d< d=eI          ZK G d> d?e          ZLdS )@    N   )InfoExtractorSearchInfoExtractor   )
Cryptodome)	HTTPError)ExtractorErrorGeoRestrictedErrorInAdvancePagedListOnDemandPagedListbool_or_nonedetermine_extfilter_dictfloat_or_noneformat_fieldget_element_by_classint_or_nonejoin_nonemptymake_archive_idmerge_dictsmimetype2extparse_countparse_qsparse_resolution	qualitiessmuggle_urlsrt_subtitles_timecodestr_or_nonetraverse_objunified_timestampunsmuggle_urlurl_or_noneurlencode_postdatavariadicc                       e Zd ZddiZ ej        d          ZdZi Ze	d             Z
d Zd Zd Zd	 ZddZd ZddZd Zd Zd Zd ZddZddZd
S )BilibiliBaseIERefererzhttps://www.bilibili.com/z-(\d+)\.m4s\?   c                 l    t          |                     d                              d                    S )Nhttps://api.bilibili.comSESSDATA)bool_get_cookiesget)selfs    ^C:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/bilibili.pyis_logged_inzBilibiliBaseIE.is_logged_in7   s-    D%%&@AAEEjQQRRR    c           	          t          t          |d                    t          d t          |dfdf          D             ddi}|r/|                     d| d|                                             d S d S )	N.qualityc                 2    g | ]}t          |d dd          S )new_descriptiondisplay_descr5   r   ).0fmts     r0   
<listcomp>z9BilibiliBaseIE._check_missing_formats.<locals>.<listcomp>=   s=     *X *X *X /KK*X *X *Xr2   support_formatsc                     |d         vS Nr5    )_vparsed_qualitiess     r0   <lambda>z7BilibiliBaseIE._check_missing_formats.<locals>.<lambda>@   s    )DT0T r2   delim, z
Format(s) zD are missing; you have to become a premium member to download them. )setr   r   	to_screen_login_hint)r/   	play_infoformatsmissing_formatsrC   s       @r0   _check_missing_formatsz%BilibiliBaseIE._check_missing_formats;   s    |G5EFFGG' *X *X#I!#T#T#T#T0V W W*X *X *X e `de e  	SNNR_ R R=A=M=M=O=OR RS S S S S	S 	Sr2   c                 ~    d t          |dd f          D             t          |ddddt          hf          t          |d          }|r                    |           d	 D             }|                     fd
t          |d          D                        |r                     ||           t          |dd dt
          hfdt          d          hfdt          hfdf          }|r|                    |d         d         t          t          |d                    dt          |          dk    r|ddni t          |dt          hfdt          hfdfdhfdt          d          hfd          t                              |                    d                                         |S )Nc                 >    i | ]}|d          t          |dd          S )r5   r7   r8   r9   )r:   rs     r0   
<dictcomp>z2BilibiliBaseIE.extract_formats.<locals>.<dictcomp>G   s;     
 
 
 iL,q*;^LL
 
 
r2   r=   c                     |d         S r?   r@   rA   rB   s     r0   rD   z0BilibiliBaseIE.extract_formats.<locals>.<lambda>I   s    aPYl r2   dash)Ndolbyaudio.)rT   flacrV   c                 t   g | ]}t          |d dd          t          t          |dd                    t          |dt          j        hf          dt	          |                    d          d	          t          |                    d
                    t          |                    d                    dS )baseUrlbase_urlurlmimeType	mime_typecodecsnone	bandwidth  scalesizeid)r[   extacodecvcodectbrfilesize	format_id)r   r   strlowerr   r.   r   r   )r:   rV   s     r0   r<   z2BilibiliBaseIE.extract_formats.<locals>.<listcomp>P   s          y*eDDUJ L LMM"58ci[*ABB ;!7!7tDDD#EIIf$5$566$UYYt__55
 
   r2   c              3   D  K   | ]}t          |d dd          t          t          |dd                    t          t          |dd                    t          |                    d                    t          |                    d                    |                    d	          rd
ndddd                    t          |                    d                              t          |                    d          d          t          |                    d                    t          |                    d                    t          |dj        j        hdfdt          hfd                              |                    d                    dV  dS )rY   rZ   r[   r\   r]   	frameRate
frame_ratewidthheightr^   r_   NDVHDR10)~   }   re   r`   ra   rb   rd   )rY   rZ   r   Fget_all)r[   rf   fpsrq   rr   rh   rg   dynamic_rangeri   rj   r5   rk   format)r   r   r   r   r.   _FORMAT_ID_REsearchr   )r:   videoaudiosformat_namesr/   s     r0   	<genexpr>z1BilibiliBaseIE.extract_formats.<locals>.<genexpr>Z   s      H H    y*eDDUJ L LMM e[,!O!OPP 7!3!344!%))H"5"566ii)) &0ffD#'g66::;uyyQU;W;WXX ;!7!7tDDD#EIIf$5$566"599T??33%/$2D2K1LaP}%u6 6 6 #&&uyy77
 
 H H H H H Hr2   )rT   r~   .durlc                 ,    t          |d                   S )Nr[   r"   rS   s     r0   rD   z0BilibiliBaseIE.extract_formats.<locals>.<lambda>o   s    +aPUhBWBW r2   r[   lengthra   rb   rd   )r[   durationrj   r   ).rj   )r[   rj   r   http_dash_segments)	fragmentsprotocolr5   c                 .                         |           S Nr.   )xr   s    r0   rD   z0BilibiliBaseIE.extract_formats.<locals>.<lambda>   s    ,:J:J1:M:M r2   
timelength)r5   rk   format_noter   )r   dictappendextendrM   r"   r   r   sumlenr   r   r.   )r/   rJ   
flac_audiorK   r   r   r   s   `    @@r0   extract_formatszBilibiliBaseIE.extract_formatsF   s   
 
!).?AZAZ-[\\
 
 

 i&/7CRVQW)XYY!)-FGG
 	&MM*%%%     	 H H H H H H  $I/EFF!H H H 	H 	H 	H$  	<''	7;;; V5W5WK=)!M$=$=$=#>?+/Z
 Z
 -  	
  	NN |E*Y8I J JKK  ^^a'' "+ 4   .0 y )K=9"+k]!;$-0M0M0M0M/N#O!-D0I0I0I/J K	+ +   #<#3#3IMM)4L4L#M#MNN    r2   c           	         t          j                     | j                            dd          | j        z   k     r| j        d         S |                     d|d          }d                    t          |dd	d
d hf                    g d}| j                            d                    fd|D                       d d         t          j                     d           | j        d         S )Ntsr   keyz,https://api.bilibili.com/x/web-interface/navzDownloading wbi signnote datawbi_img)img_urlsub_urlc                 j    |                      d          d                             d          d         S )N/r   .r   )
rpartition	partitionr   s    r0   rD   z-BilibiliBaseIE._get_wbi_key.<locals>.<lambda>   s*    q||C((+55c::1= r2   )@.   /      r   5                2   
      :      -   #      +      1   !   	   *               '      &   )      %   0            7   (   =         r   r   <   3   r(            6      8   ;      ?   9   >      $      "   ,   4   c              3   (   K   | ]}|         V  d S r   r@   )r:   ilookups     r0   r   z.BilibiliBaseIE._get_wbi_key.<locals>.<genexpr>   s'      @@6!9@@@@@@r2   r   )r   r   )time_wbi_key_cacher.   _WBI_KEY_CACHE_TIMEOUT_download_jsonjoinr   update)r/   video_idsession_datamixin_key_enc_tabr   s       @r0   _get_wbi_keyzBilibiliBaseIE._get_wbi_key   s   9;;,00q99D<WWWW&u--**:HKa + c c lI5==>5@ A A B B

 
 
 	""77@@@@.?@@@@@"E)++$
 $
 	 	 	 "5))r2   c                    t          t          j                              |d<   d t          |                                          D             }t          j                            |          }t          j        | | 	                    |           
                                                                          |d<   |S )Nwtsc                 x    i | ]7\  }}|d                      t          d t          |                              8S )r   c                 
    | dvS )Nz!'()*r@   )chars    r0   rD   z5BilibiliBaseIE._sign_wbi.<locals>.<dictcomp>.<lambda>   s    4w+> r2   )r   filterrl   )r:   krB   s      r0   rQ   z,BilibiliBaseIE._sign_wbi.<locals>.<dictcomp>   sN     
 
 
1 rwwv>>AGGHH
 
 
r2   w_rid)roundr   sorteditemsurllibparse	urlencodehashlibmd5r   encode	hexdigest)r/   paramsr   querys       r0   	_sign_wbizBilibiliBaseIE._sign_wbi   s    dikk**u
 
v||~~..
 
 
 &&v..!+&M0A0A(0K0K&M&M&T&T&V&VWWaaccwr2   Nc                    ||dd|pi }| j         r|                    dd            |                    d          x}r	d| d| }nd| }|                     d||                     ||          ||	          d
         S )Ni  )bvidcidfnvaltry_lookqnzDownloading video format z	 for cid z"Downloading video formats for cid z-https://api.bilibili.com/x/player/wbi/playurlr  headersr   r   )r1   popr.   r   r  )r/   r  r  r  r  r  r
  r   s           r0   _download_playinfoz!BilibiliBaseIE._download_playinfo   s    sTKKekrK 	)JJz4(((D!!!2 	>ArAACAADD===D"";T....d # L LLRT 	Tr2   c           
          d}t          |                    d          pg           D ]E\  }}||dz    dt          |d                    dt          |d                    d|d          d	z  }F|S )
Nr   bodyr   
from --> tocontent

)	enumerater.   r   )r/   	json_datasrt_dataidxlines        r0   json2srtzBilibiliBaseIE.json2srt   s    "9==#8#8#>B?? 	3 	3ICC!G 2 224<@@2 2G]^bcg^hGiGi2 2 O2 2 2 3HH r2   c           
         ddd| ddgi}|                      d||r||dn||dd	| | j        
          }t          |d          r,|                     d|                                  d           t          |dddd f          D ]a}|                    |d         g                               d|                     |                      |d         |                    d           b|S )Ndanmakuxmlzhttps://comment.bilibili.com/z.xmlrf   r[   (https://api.bilibili.com/x/player/wbi/v2aidr  r  r  zExtracting subtitle info r  r   r  )r   need_login_subtitlez-Subtitles are only available when logged in. T)	only_oncer   subtitle	subtitlesc                 "    |d         o|d         S )Nsubtitle_urllanr@   rS   s     r0   rD   z/BilibiliBaseIE._get_subtitles.<locals>.<lambda>   s    a>O>\TUV[T\ r2   r,  srtr+  rf   r   )r   _HEADERSr   report_warningrI   
setdefaultr   r  )r/   r   r  r#  r)  
video_infoss          r0   _get_subtitleszBilibiliBaseIE._get_subtitles   sf   @s@@@  
	 ((6.1U#c***QT7U7U2S22DM ) K K
 
$CDD 	fT@P@P@R@RTT`d   f f fj
K1\1\+^ _ _ 	 	A  52..55d&9&9!N:KX&V&VWW7 7     r2   c           
          |o$|o"|                      d|||ddd| j                  }t          |dddd	d
ddf          pd S )Nr!  r"  zExtracting chaptersF)r  r   fatalr  r   view_points.r  r  r  )title
start_timeend_time)r   r/  r   )r/   r#  r  chapterss       r0   _get_chapterszBilibiliBaseIE._get_chapters   s     L3 L4#6#663WZC[C[&eT] $7 $L $L Hv}c D
 D
 '    		r2   c           
   #      K   t          j        d          D ]X}t          |                     d| d| d|d| d          d          }|s d S t	          | j        |          D ]
}|E d {V  Yd S )	Nr   z'https://api.bilibili.com/x/v2/reply?pn=z&oid=z*&type=1&jsonp=jsonp&sort=2&_=1567227301685zExtracting comments from page F)r   r6  )r   replies)	itertoolscountr   r   map_get_all_children)r/   r#  r  r>  childrens        r0   _get_commentszBilibiliBaseIE._get_comments   s      ?1%% 		$ 		$C"##wcwwwwwDsDDE $ S S $	% %G
   6@@ $ $#########$		$ 		$r2   c              #   F  K   t          |d          t          |d          |                    d          t          |d          |                    d          |                    d          pddV  t          | j        t          |d	                    D ]
}|E d {V  d S )
N)memberunamerF  midrpidr  messagectimeparentroot)author	author_idre   text	timestamprN  )r>  .)r   r.   rA  rB  )r/   replyrC  s      r0   rB  z BilibiliBaseIE._get_all_children   s      "5*=>>%e->??))F## (>??7++ii))3V
 
 	
 	
 	
 D2LHX4Y4YZZ 	  	 H	  	 r2   c           
   #   &  K   |                      d|dd|id|i|                                           }t          |dddd	 f          D ]F}|                     |d
         t          t          |                    d                              V  Gd S )Nz/https://api.bilibili.com/pgc/web/season/sectionDownloading season info	season_idr'   )r   r  r  resultmain_sectionepisodesc                 <    t          |d                   o|d         S )N	share_urlre   r   rS   s     r0   rD   z:BilibiliBaseIE._get_episodes_from_season.<locals>.<lambda>   s    [;88DQtW r2   r\  re   )r   geo_verification_headersr   
url_resultBiliBiliBangumiIEr   r.   )r/   ss_idr[   season_infoentrys        r0   _get_episodes_from_seasonz(BilibiliBaseIE._get_episodes_from_season   s      ))=u*;2FGt'D'D'F'FG * I I
 "+.*DD0F G G 	g 	gE //%"46GUZU^U^_cUdUdIeIeffffff	g 	gr2   c                    |pi }|                      d|||dd           }|                    i                               t          |ddfddt          hfd	t
          hfd
fd                     |                             t          |ddt          hfddddddt
          hfd	t
          hfdt          hfdfdf                     |         |                    |         d	         i           <   t          |ddf          D ]?}|d         |vr3d	|d	         i||d         <   |                     ||||d         |           @|S )Nz,https://api.bilibili.com/x/stein/edgeinfo_v2)graph_versionedge_idr  zExtracting divisions from edge r  r   r   
story_listc                     |d         k    S )Nrf  r@   )rA   rB   rf  s     r0   rD   z/BilibiliBaseIE._get_divisions.<locals>.<lambda>	  s    AiL\cLc r2   r8  r  )r8  r  Frw   edges	questions.choicesre   option)rf  r  rR  )r8  rl  rf  )	cid_edges)r   r1  r   r   rl   r   _get_divisions)r/   r   re  rj  rf  rn  division_datachoices       `   r0   ro  zBilibiliBaseIE._get_divisions  s   O	++:H$1gxXX<7<< , > > 	"%%,,?c?c?c?c!C5)}-f f )   	  	  	  	gl=6u%c9c ;-0}-!C5)D D D
 D
 ;   	 	 	 DI>	U7^E2B77@"57Is*CDD 	l 	lFi --,16%=+AfY'(##HmUF9DUaj#kkkr2   c              #     K   t          |                     d|d||d|          dddt          hf          }|                     ||dd	|iid          }|                                D ]\  }}|                     |||d
di          }i || d| |                    d           dt          t          |	                                                                        d           | 
                    |          t          j        |d           d|                    dd           t          |                    d          d          |                     ||          dV  d S )Nr!  zExtracting graph versionr$  r  r  r   interactionre  r   r  r	  r  r  rA   r8   - F)ensure_asciir  descriptionr   r   ra   rb   )re   r8  rK   rx  r   r)  )r   r   r   ro  r   r  r.   nextitervaluesr   jsondumpsr   extract_subtitles)	r/   r   r  metainfor  re  rn  rj  rJ   s	            r0   _get_interactive_entriesz'BilibiliBaseIE._get_interactive_entries  s     $:H*8C2P2PZa   c c ]Ok]C	E E
 ''-!eS\ARTUVV	#//++ 
	 
	JC//#wWacdVe/ffI!))C))$LL11__d4;O;O6P6P6T6TU\6]6]__//	::"&*U"G"G"Gll8<<XegiKjKjll))--*E*ETRRR!33HcBB      
	 
	r2   NNr   )__name__
__module____qualname__r/  recompiler|   r   r   propertyr1   rM   r   r   r  r  r  r4  r<  rD  rB  rc  ro  r  r@   r2   r0   r&   r&   1   s:       67HBJ/00MNS S XS	S 	S 	S> > >@* * *2  T T T T     .  
$ 
$ 
$
  
  
 	g 	g 	g   8     r2   r&   c                      e Zd ZdZdddddddd	d
eeddeedgdddddddddddddeeeeddgdddidd d!d"d#d$d%d&d'dd(d)d*d	d+d,eed-ed.d/d0gd1igd2d3id4d5d6d'dd(d)d*d	d+d,eed-ed.d/d0gd1d7d8ddddd9dddd	d
eeeedgd:ddid;d<d=i d>d?d@ddAdBdCdDdEdFdGdHdIedJdKdLdMdNdOdPdQdRedSedTedUd	dVdWgddiddXdYdZdd[d\d]d^d_d`daeed	dbgdcd7dddedfddgdhdidjdkdldmeed	dngdcd7dodpdqdrdsdtduedvdweeeed	dxgdydzd{d|d}giiid~d&dddrddigddddddddddddeeeed	dgdd7dddddddedddeeed	dgddd&ddddddedddeeed	dgdigdddddddddddddddddddd7ddddddddddddddddddd7ddi d>dÓd@ddAdēdIedGdœdLdƓdEdǓdJdȓdCdɓdNdʓdRedSedTedUd	dd̓dVdgddiddМdddddԜdd֜dddddԜdd֜dddddԜdd֜ddddgZd ZdS )
BiliBiliIEzthttps?://(?:www\.)?bilibili\.com/(?:video/|festival/[^/?#]+\?(?:[^#]*&)?bvid=)(?P<prefix>[aAbB][vV])(?P<id>[^/?#&]+)z+https://www.bilibili.com/video/BV13x41117TLBV13x41117TLu(   阿滴英文｜英文歌分享#6 "Closermp4u   滴妹今天唱Closer給你聽! 有史以来，被推最多次也是最久的歌曲，其实歌词跟我原本想像差蛮多的，不过还是好听！ 微博@阿滴英文65880958u   阿滴英文 re:^https?://.*\.(jpg|jpeg|png)$g-P@20170301i*zXzbilibili 8903802_part1)re   r8  rf   rx  uploader_iduploader	thumbnailr   tagscomment_countupload_daterS  
like_count
view_count_old_archive_idsr[   	info_dictzold av URL versionz(http://www.bilibili.com/video/av1074402/BV11x411K7CNu   【金坷垃】金泡沫u	   菊子桑156160g(\Es@20140420iSSz$md5:ce18c2a2d2193f0df2917d270f2e5923zre:^https?://.*\.(jpg|jpeg)$zbilibili 1074402_part1)re   rf   r8  r  r  r   r  rS  rx  r  r  r  r  r  r  skip_downloadT)r   r[   r  r  	Anthologyz+https://www.bilibili.com/video/BV1bK411W797BV1bK411W797u/   物语中的人物是如何吐槽自己的OP的re   r8  r   r  BV1bK411W797_p1uR   物语中的人物是如何吐槽自己的OP的 p01 Staple Stable/战场原+羽川zcount:10ie^u   打牌还是打桩	15025998420200516z$md5:e3c401cf7bc363118d1783dd74068a68gjtV@zbilibili 498159642_part1)re   rf   r8  r  rS  r  r  r  r  r  r  r  rx  r   r  playlist_items2)r   r[   r  playlist_countplaylistr  zSpecific page of Anthologyz/https://www.bilibili.com/video/BV1bK411W797?p=1r   r[   r  z)https://www.bilibili.com/video/av8903802/z$md5:3b1b9e25b78da4ef87e9b548b88ee76are   rf   r8  r  rx  rS  r  r  r  r   r  r  r  r  r  r[   r  r  zvideo has chapterz,https://www.bilibili.com/video/BV1vL411G7N7/re   BV1vL411G7N7rf   r8  u.   如何为你的B站视频添加进度条分段rS  iRmar  20211018rx  z$md5:a9a3d6702b3a94518d419b2e9c320a6dr  r  u   爱喝咖啡的当麻r   g`"@r  1680903r;  zcount:6r  r  r  r  r  zbilibili 463665680_part1z video redirects to festival pagez+https://www.bilibili.com/video/BV1wP4y1P72hBV1wP4y1P72hu   牛虎年相交之际，一首传统民族打击乐《牛斗虎》祝大家新春快乐，虎年大吉！【bilibili音乐虎闹新春】ia20220204z$md5:8681a0d4d2c06b4ae27e59c8080a7fe6u   叨叨冯聊音乐g^In@	528182630zbilibili 893839363_part1)re   rf   r8  rS  r  rx  r  r   r  r  r  r  r  znewer festival videozIhttps://www.bilibili.com/festival/2023honkaiimpact3gala?bvid=BV1ay4y1d77fBV1ay4y1d77fu7   【崩坏3新春剧场】为特别的你送上祝福！i@cc20230121z$md5:58af66d15c6a0122dc30c8adfd828dd8u	   果蝇轰gS^@8469526zbilibili 778246196_part1zlegacy flv/mp4 videoz0https://www.bilibili.com/video/BV1ms411Q7vw/?p=4BV1ms411Q7vw_p4uX   [搞笑]【动画】云南方言快乐生产线出品 p04 新烧包谷之漫游桃花岛i߶V20160317u!   云南方言快乐生产线出品u   一笑颠天3916081zbilibili 4120229_part4)re   r8  rS  r  rx  r   r  r  r  r  r  r  r  r  extractor_argsbilibiliprefer_multi_flv32r   BV1ms411Q7vw_p4_0flvgʡx@)re   rf   r8  r   )r   r[   r  r  r  r  zlegacy mp4-only videoz+https://www.bilibili.com/video/BV1nx411u79KBV1nx411u79Ku9   【练习室】201603声乐练习《No Air》with VigoVanioY20171025u4   @ZERO-G伯远
声乐练习 《No Air》with Vigo VangjtT@u   伯远10584494zbilibili 15700301_part1)re   rf   r8  rS  r  rx  r   r  r  r  r  r  r  r  r  zinteractive/split-path videoz,https://www.bilibili.com/video/BV1af4y1H7ga/BV1af4y1H7gauI   【互动游戏】花了大半年时间做的自我介绍~请查收！！i>v/a20210901z$md5:01113e39ab06e28042d74ac356a08786u   钉宫妮妮Ninicoi  8881297zbilibili 292734508_part1)re   r8  rS  r  rx  r  r  r   r  r  r  r  r  r  r   BV1af4y1H7ga_400950101u\   【互动游戏】花了大半年时间做的自我介绍~请查收！！ - 听见猫猫叫~z$md5:db66ac7a2813a94b8291dbce990cc5b2g(\5'@re   rf   r8  rS  r  rx  r  r  r   r  r  r  r  r  r  )r   r[   r  r  r  z3redirect from bvid to bangumi link via redirect_urlz+https://www.bilibili.com/video/BV1TE411f7f1288525u@   李永乐老师 钱学森弹道和乘波体飞行器是什么？u   我和我的祖国4780u   幕后纪实28609r   u0   钱学森弹道和乘波体飞行器是什么？i   g@i|r]20191021zre:https?://.*\.(jpg|jpeg|png)$)re   r8  rf   series	series_idseasonrW  season_numberepisode
episode_idepisode_numberr   rS  r  r  z2redirect from aid to bangumi link via redirect_urlz0https://www.bilibili.com/video/av1148681621412031933368u   PV 引爆变革的起点goʑO@u   时光代理人5183u	   第三季r   105212u   引爆变革的起点iiZzh20250718)re   r8  rf   r   r  r  r  r  rW  r  r  r  rS  r  r  z)video has subtitles, which requires loginz+https://www.bilibili.com/video/BV12N4y1M7rhBV12N4y1M7rhz$md5:96e8bb42c2b432c0d4ce3434a61479c1z$md5:afde2b7ba9025c01d9e3dde10de221e4gxs@20220709u   小夫太渴iCb
1326814124r)  zcount:2zbilibili 898179753_part1listsubtitleszlogin required for subtitle)r   r[   r  r  skipz,https://www.bilibili.com/video/BV1jL41167ZG/BV1jL41167ZGu`   一场大火引发的离奇死亡！古典推理经典短篇集《不可能犯罪诊断书》！)re   r8  rf   zsupporter-only videor[   r  r  z,https://www.bilibili.com/video/BV1Ks411f7aQ/BV1Ks411f7aQu)   【BD1080P】狼与香辛料I【华盟】login requiredz,https://www.bilibili.com/video/BV1GJ411x7h7/BV1GJ411x7h7u4   【官方 MV】Never Gonna Give You Up - Rick Astleyzgeo-restrictedz)has - in the last path segment of the urlz<https://www.bilibili.com/festival/bh3-7th?bvid=BV1tr4y1f7p2&)r   r[   only_matchingc                                           |                              dd          \  }                                 }                     ||          \  }}                      |j                  s                     |j                  S ||d<                        d|dd           }|s                     d|d	i                               d
          rt          dd          ddi}|	                                }|dk    r	|z   |d<   n|dk    r|d<    
                    ddd                     |          |          }t          |dddt          hf          }	|	r5t                              |	          r                     |	t                    S t          d          t          |d          dk    r                                  t          |d          dk    rt          dd          d |v}
|
r	|d!         }n|d          }|d         |                    d"          c}|
 r3t           
                    d#d$d%d&d'|(          dt"          )          pg }t%          |          d*k    }t'          t)          |                              d+d g          d,                   }|r:|s8                               r"                     ||t.          fd-.          S |r%|pd*}|d/|d0d1t          ||d*z
  d2f          pd3 z  }|                    d          t1          d d4|pd*           }|rt          |d5|d*z
  d6f          n|                    d6          i }|
r/t          |d7d!d8t2          hfd9d:t&          hfd;fd<d=fd>d$?          }i t          |d@dAdBt2          hfd dCd:t&          hfdDd dEt          hfdF          |t          |dGdHt&          hfdIt&          hfdCdJt&          hfdKd$?           t1          |d dL           |rt5           |          gnd |d|idMt          |dN          }|rT  j                             |          fi t          |d dOt&          hf                                         dPS d } j        r0t                               dQ|dRd           dt>          hf          }|s                      |dSd*iT          } !                    |          |                    dU          rt          |dVdWdXt>          hf          pi }tE          d"dY|dZ[           d\ #                                 }st          d]| d          d^t          |d_d`tH          hf          v r %                    da| b           t          |dc          sFfddt          |defdftL          hf          D ]T}'                    t           !                                          |dg|iT                    fdh                     U (                    |           t          di           }|rt%          |          t%                    k     r )                    dj          sLdk*                    dl |D                       }t          dm           |r +                    dn| do           n&t           fdp          ptY          |dq r          gt          ds          rVi dt fdut[          dv         dw                   D             t]          |                    dx          dyz          d{S i t]          |                    dx          dyz           /                               0                                                             d|S )}Nre   prefixr  r'   window\.__INITIAL_STATE__\s*=initial statedefaultz\bwindow\._riskdata_\s*=risk	v_voucherz1You have exceeded the rate limit. Try again laterTexpectedplatformwebBVr  AVr#  z8https://api.bilibili.com/x/web-interface/wbi/view/detailzDownloading redirection URLz"Failed to download redirection URL)r   errnoter  r  r   Viewredirect_urlzUnable to extract initial state)errortrueCodemilziThis video may be deleted or geo-restricted. You might want to try a VPN or a proxy server (with --proxy)	videoData	videoInfor8  z*https://api.bilibili.com/x/player/pagelistFjsonp)r  r  zExtracting videos in anthology)r6  r  r   r  expected_typer   pc                      d d| d          S )Nhttps://www.bilibili.com/video/z?p=pager@   )rb  r   s    r0   rD   z*BiliBiliIE._real_extract.<locals>.<lambda>  s    %cx%c%cTYZ`Ta%c%c r2   )iegetterz p02d partr   z%s_partpagesr  )r  upNameupMidvideoStatuslikesectionEpisodesc                     |d         k    S )Nr  r@   rA   rB   r   s     r0   rD   z*BiliBiliIE._real_extract.<locals>.<lambda>  s    ai8>S r2   cover)r  r  r  r  rw   )upDatanamer  rI  stat)r  .tag_namepic)r  r  r  r  r  descpubdate)	viewCount)r  viewrT  )rx  rS  r  r  z_p%d)re   r  r8  http_headers)rightsis_stein_gater   )r   __post_extractorzwindow\.__playinfo__\s*=z	play infor	  ru  is_upower_exclusiveelecFullInfo	show_info
high_level	sub_titleu   ，)	from_dictrE   z. z This is a supporter-only video: u   试看accept_description.zDThis is a supporter-only video, only the preview will be extracted: )r   rT   c                 (    | t          d          v S )Nr4   r9   )r   rK   s    r0   rD   z*BiliBiliIE._real_extract.<locals>.<lambda>  s    qL:J$K$KK r2   accept_qualityc                      |           S r   r@   rA   rB   has_qns     r0   rD   z*BiliBiliIE._real_extract.<locals>.<lambda>  s    RXRXYZR[R[m r2   r
  c                 (     |d                    S r?   r@   r$  s     r0   rD   z*BiliBiliIE._real_extract.<locals>.<lambda>  s    VVAiL%9%9!9 r2   c                     |d         S Nr   r@   rS   s     r0   rD   z*BiliBiliIE._real_extract.<locals>.<lambda>  s
    Q{^ r2   r  rF   c              3   r   K   | ]2}|                     d            d|                     d           dV  3dS )r    (rk   )Nr   )r:   fs     r0   r   z+BiliBiliIE._real_extract.<locals>.<genexpr>  sd       -_ -_MN155//HH1553E3EHHH-_ -_ -_ -_ -_ -_r2   c                 .    |                     d           S r(  r   rS   s     r0   rD   z*BiliBiliIE._real_extract.<locals>.<lambda>  s    QUU;EWEWAW r2   z$Dropping incompatible flv format(s) zZ since mp4 is available. To extract flv, pass --extractor-args "bilibili:prefer_multi_flv"c                 h    |d         t                              d          d                   k    S )Nr5   r  r   )int_configuration_arg)rA   rB   r/   s     r0   rD   z*BiliBiliIE._real_extract.<locals>.<lambda>"  s-    a	lc$BYBYZlBmBmnoBp>q>q.q r2   c                     | d         S r?   r@   r   s    r0   rD   z*BiliBiliIE._real_extract.<locals>.<lambda>#  s
    9 r2   )r   )r   r   multi_videoc           
         g | ]|\  }}d           d| d         d         i |dd                              d          ig|dk    r                              nd|dk    r                              ndd}S )re   rA   r8  r  rk   r   N)re   r8  r  rK   r)  r  )r.   r~  extract_comments)	r:   r  fragmentr#  r  rK   r  r/   r   s	      r0   r<   z,BiliBiliIE._real_extract.<locals>.<listcomp>+  s     
K 
K 
K $c8 &d^33c33%g.$,^$<!"!#WQZ^^K%@%@! !   KNQR((!7!7#!F!F!FX\FIQhh(=(=c(B(B(BTX
 
 
K 
K 
Kr2   r   r   r   ra   rb   )_typeentriesr   )rK   r   r;  r)  r  )1_match_valid_urlgroupr]  _download_webpage_handler[   r^  _search_jsonr.   r	   upperr   r  r   r"   r_  suitableraise_login_requiredlistr   r   r   _yes_playlistplaylist_from_matchesr  r   r   r   playlist_resultr  r4  r1   r   r  r   r   rI   rl   r0  r/  r   rM   r0  r   rH   maxr  r   r<  r~  )r/   r[   r  r  webpageurlhinitial_stater  detailnew_urlis_festival
video_datar8  page_list_jsonis_anthologypart_idold_video_idfestival_infois_interactiverJ   r  msgr
  flv_formatsdropped_fmtsr#  r  rK   r%  r  r   s   `                        @@@@@@r0   _real_extractzBiliBiliIE._real_extract  s
   0055;;D(KK&//1155c8W5UU$$TX.. 	-??48,,, 	))*JGUdfnx|)}} 	D  !<gvxac ddhhituu i$%Xcghhhh'E\\^^F~~ & 1f4'e((JH2<`nnUH55w ) H HF #6FFN[M+Z[[G C,55g>> Cw0ABBB !BCCC'<==EE%%''''<==EE OY]_ _ _ _ "6 	4&{3JJ&{3J$V,jnnW.E.E% */ (l<hHw#G#G5w   H H $/( /( /( /
 -/ 	 >**Q.hsmm//dV<<R@AA 	e 	eD,>,>x,R,R 	e--%Jcccc . e e e  	dlGc'ccc^gPQkSYEZ([([(a_acccEnnU###C/GA/G/GHHIPkl:1e'DEEEV`VdVdejVkVk 	(3 +W{mD,f{mD/1S1S1S1SU\]	9 9
   M
=. (%+?*FF[MJ1)5;-@+ +  
 
 :%'+7>N"('K=!A	( (
   
 D|GT6BBDDIU _|!D!D E E[_&,%
 
 
* &j2MNN 	='4'--hXw-WW= =[c=%mk:P[}5]^^!%!6!6s!;!;= = = = =
 	 	"$!!"=wU]gk!ll$ " "I  	g//#wWacdVe/ffI&&y11>>/00 	'%mnkS_bfag5hiiomoJ"7K:UZ[[[ss_c_o_o_q_qssC ^$%M%M%MX\]]]]<	4H#PSu3UVVVV##`[^``% $ ' ' ' Iv.. 	HKKKKF"9/?A[A[A[A[^a]b.cdd < <|(()@)@3X_hlnpgq)@)r)rss9999 ;  ; < < < < ''	7;;;&w0K0KLLK Hs;//#g,,>>../ABB H#'99 -_ -_R]-_ -_ -_ $_ $_L*74W4WXXG# a`< ` ` `a a a +!q!q!q!q  H k/E/EFFFG 
 !122 	&
K 
K 
K 
K 
K 
K 
K 
K 
K (1K1H'I'I
K 
K 
K *)--*E*ETRRR   "

%immL&A&ANNN**344//#>> $ 5 5c : :
 
 
 	
r2   N)	r  r  r  
_VALID_URLr?  r/  float_TESTSrT  r@   r2   r0   r  r  2  s        IJ = ? J%&< %#!9 :
 
 ( %9 /##%#A 8!9 :
 
" #D)) , < F
 
 'm"'@0*!!$)!E"%?$@ 
 & $S)7 : -@#i#<,& %A!; <
 
 * ; ?%A#%&< !9 :
 
$ T
' . $=
.
5
 E
 	

 :
 A
 D
 /
 
 9
 	
 S
 #
 #
 <
  !; <!
$ #D)+ . 3<  a#%A,&<!; <
 
 & 'Z N#%A# $<!; <
 
 & 'A#o#%>&$ <!9 :
 
  $j3Ev2N%OP)s#	 
 + < (< P#%R % <!: ;
 
 * /= `#%A,$ <!; <
 
  .w')E0"(!$!!@%?$@ 
 )' 'P F<W*$ I"! #%;
 
 * EA/'!!.##%;
 
 * <<
.
5
 ;
 D	

 A
 
 :
 
 
 <
 S
 #
 #
 <
 
  !; <!
$ #D)-- 0 > w
 

 '  > @
 

 !  > K
 

 !  <M o
[Fz
n
 n
 n
 n
 n
r2   r  c                       e Zd Z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d d!dd"d#d$d%d&d'd!d&d(d)d*d+ddd,d-d.d/d0dd"d#d$d%d&d1d0d2d3d4d5d6dddgZd7 Zd8S )9r_  z;https?://(?:www\.)?bilibili\.com/bangumi/play/ep(?P<id>\d+)z.https://www.bilibili.com/bangumi/play/ep21495/21495r  u   悠久之翼774	   第二季1182r   u   forever／efr   u   12 forever／efgl)3@i(N20111104r  re   rf   r  r  r  rW  r  r  r  r  r8  r   rS  r  r  r  znew playurlSSRData schemez.https://www.bilibili.com/bangumi/play/ep678060678060u   去你家吃饭好吗619842542u6   吴老二：你家大公鸡养不熟，能煮熟吗…r   uI   一只小九九丫 吴老二：你家大公鸡养不熟，能煮熟吗…gp@i/$c20220916r  z.https://www.bilibili.com/bangumi/play/ep267851267851   鬼灭之刃4358u	   立志篇26801r   u   残酷u   1 残酷g/$E@i ͨ\20190406zGeo-restrictedr  z,a making-of which falls outside main sectionz.https://www.bilibili.com/bangumi/play/ep345120345120u   炭治郎篇r   u   #1 炭治郎篇gt@i䛉_20201016c                    |                      |          |                                 }|                     ||          }d|v rt          d          d|v r|                     d           ||d<   |                     d|dd	d 
          p|                     dddd|          }|                    d          }d|v r|d         }d|v r|d         }||                    d          }d|v r|d         }t          |dd ddt          ht          f          }|dk    }t          |dt          hf          pi }|                     |          }	|	s6|r|                                  n|sd|v sd|v r|                     d           t          |dt          d hf          r*|                     d|                                             |                     dd d!i|          d         }
t!          fd"t#          t          |
d#d$t          hf          d%          D             d%i f          \  }|
                    d&          o6t!          fd't#          t          |
d(                    D             d)          \  }}|                    d*          }|	d+t          |
d,d-t$          hfd,d.t&          hfd/t(          hfd0          t          |d1t$          hfd2t*          hfd3hfd4t*          hfd5 hd6          t'          |          t'                    |t-          |                    d7          d89          |                     |                    d:          |;          |                     |          d|id<S )=Nr  u$   您所在的地区无法观看本片zThis video is restrictedu-   正在观看预览，大会员免费看全片z&This video is for premium members onlyr'   zplayurlSSRData\s*=zembedded page infor  )end_patternr  z2https://api.bilibili.com/pgc/player/web/v2/playurlzExtracting episodei/  )r  ep_idrs  coderawr   rX  pluginsc                     |d         dk    S )Nr  AreaLimitPanelr@   rS   s     r0   rD   z1BiliBiliBangumiIE._real_extract.<locals>.<lambda>  s    AfI1A$A r2   configis_blocki]r2  u   成为大会员抢先看u   开通大会员观看))
play_checkplay_detailplay_video_typec                 
    | dv S )N)PLAY_PREVIEWpreviewr@   r   s    r0   rD   z1BiliBiliBangumiIE._real_extract.<locals>.<lambda>  s    1 ;; r2   z\Only preview format is available, you have to become a premium member to access full video. z,https://api.bilibili.com/pgc/view/web/seasonzGet episode detailsrl  c              3   r   K   | ]1\  }}t          |                    d                     k    +||fV  2dS )re   N)r   r.   )r:   r  epr  s      r0   r   z2BiliBiliBangumiIE._real_extract.<locals>.<genexpr>  sT       -8 -8!#r266$<<((J66 "I6666-8 -8r2   )rZ  )section.rZ  .r   rW  c              3      K   | ]:\  }}|                     d           k    |dz   |                     d          fV  ;dS )rW  r   season_titleNr   )r:   r  erW  s      r0   r   z2BiliBiliBangumiIE._real_extract.<locals>.<genexpr>  s_       :
 :
17auu[!!Y.. 1WaeeN++,....:
 :
r2   )seasons.r  r#  )re   rK   r  series_titler  square_cover)r  r  r  
long_titler8  c                     | pS r   r@   )r   r  s    r0   rD   z1BiliBiliBangumiIE._real_extract.<locals>.<lambda>  s    aFY> r2   pub_timec                 ,    | ot          ddd|           S )Nr8  r  r  rE   r  r   rB   s    r0   rD   z1BiliBiliBangumiIE._real_extract.<locals>.<lambda>  s    A$f-UXde*f*f*f r2   )r  r  rS  r8  r   ra   rb   r  r#  )r  r  rW  r  r   r)  r  r  )	_match_idr]  _download_webpager
   r>  r;  r   r.   r   r,   anyr   r   raise_geo_restrictedr0  rI   ry  r  rl   r   r"   r   r   r~  r4  )r/   r[   r  rD  rJ   status_codegeo_blockedpremium_onlyr2  rK   bangumi_infoepisode_infor  r~  r#  r  r  rW  s                  @@@r0   rT  zBiliBiliBangumiIE._real_extract  s   ^^C((
//11((j'(JJ1W<<$%?@@@<GG%%&NOOO 	 %w0Dj $  0 0 ! ""Dj$ej,Q,Q # ! !	 	  mmF++I!%(IY!&)I#--//Ky  !(+I"9AA8ZZ^Y_ad/f g g"f,!)lTF-CDDJ
&&z22 	T T))++++ T!;w!F!FJaelJlJl))*RSSS	 %
 ;;<$> ? ? 	c bMQM]M]M_M_b bc c c **:JH]J' + : ::BD (, -8 -8 -8 -8%.|I3QUPVW0Y 0YZ[&] &]-8 -8 -8 ;<R(B (B$
 !$$[11	&/ 'D :
 :
 :
 :
;D\+;<<<> <>:
 :
 :
 	5 5#| u%% 
 
 <#^cU;&k]C,{m<* *  
 <(3%0#*[M<Y<Y<Y<Y;Z"[(;-8ffg	* *  
 %!,//$Y//*%jnn\&B&B$OOO//
L<L<LU<S<SY\/]] $ 5 5c : :&,+
 
 
 	
r2   Nr  r  r  rU  rW  rT  r@   r2   r0   r_  r_  C  s\       OJ @$!%! & #%<
 
 ( ,?-! O" `#%<
 
 * @$! " #%<
 
" !' * ??$! %" & #%<
 
 wOFba
 a
 a
 a
 a
r2   r_  c                   n    e Zd Z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igddidgZd  Zd!S )"BiliBiliBangumiMediaIEz<https?://(?:www\.)?bilibili\.com/bangumi/media/md(?P<id>\d+)z1https://www.bilibili.com/bangumi/media/md2409789124097891zCAROLE & TUESDAYz$md5:42417ad33d1eaa1c93bfd2dd1626b829re   r8  rx  r   r[   r  playlist_mincountz.https://www.bilibili.com/bangumi/media/md1565/1565u   攻壳机动队 S.A.C. 2nd GIGz$md5:46cac00bafd645b97f4d6df616fc576dr   r  68540r  u   攻壳机动队1077r[  r   u   再启动 REEMBODYr   u   1 再启动 REEMBODYgSח@iT20150227r  r^  r  r  r[   r  r  r  r  c                 0   |                      |          }|                     ||          }|                     d|d|          }|d         d         } | j        |                     ||          |fi t          |ddt          hfdt          hfdf          S )Nr  rF  	mediaInforW  r8  evaluater8  rx  )r  r  r;  rB  rc  r   rl   )r/   r[   media_idrD  rF  r`  s         r0   rT  z$BiliBiliBangumiMediaIE._real_extract#  s    >>#&&((h77)),gR Rk*;7#t#**5#66 =;!C5) *SE29 9 +    	r2   Nr  r@   r2   r0   r  r    s        PJB'A
 

    @5A
 

 +#%#!"/%"#/$')@ 
 & $S)7 $FL    r2   r  c                   n    e Zd Z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igddidgZd ZdS ) BiliBiliBangumiSeasonIEz?(?x)https?://(?:www\.)?bilibili\.com/bangumi/play/ss(?P<id>\d+)z-https://www.bilibili.com/bangumi/play/ss26801rf  rd  z$md5:e2cc9848b6f69be6db79fc2a82d9661br  r   r  z,https://www.bilibili.com/bangumi/play/ss22512251u   玲音z$md5:1fd40e3df4c08d4d9d89a6a34844bdc4r   r  50188r  1526TVr   WEIRDz1 WEIRDgs@i`P20120725r  r^  r  r  r  c                    |                      |          }|                     ||          }t          |                     d|d|          dddt          hfdt          hfdfd	          } | j        |                     ||          |fi |S )
Nz-<script[^>]+type="application/ld\+json"[^>]*>infoitemListElement.r  rx  r  Frw   )r  r  r   r;  rl   rB  rc  )r/   r[   r`  rD  r  s        r0   rT  z%BiliBiliBangumiSeasonIE._real_extract[  s    s##((e44NPWY_afgg 3% -u5& &     $t#D$B$B5#$N$NPUbbYabbbr2   Nr  r@   r2   r0   r  r  3  s        SJ>#A
 

    >A
 

 "##!""%"#"$')@ 
 & $S)7 $FL
c 
c 
c 
c 
cr2   r  c                       e Zd Zd Zd ZdS )BilibiliCheeseBaseIEc                 H   t          |dfdfd          }|d         |d         }}t          |d          dk    rt          d	d
          t          |d          s|                     d           |                     d||ddd| j        d          d         }t                    t                    |                     |          t                                          t          j	        d dt          |dt          hfd hdt          hfdt          hfdt          hfdt          hfdt          hfdt          hfd          t          |d d!t          hfd d"t
          hfd#          |                     ||$          |                     |          | j        d%S )&NrZ  c                 6    |d         t                    k    S )Nre   )r/  )rA   rB   rl  s     r0   rD   z7BilibiliCheeseBaseIE._extract_episode.<locals>.<lambda>k  s    QtWE

%: r2   Frw   r#  r  	ep_statusr  z)This course episode is not yet available.Tr  playablez8You need to purchase the course to download this episodez0https://api.bilibili.com/pugv/player/web/playurlr   r   )avidr  rl  r  fourkzDownloading playinfor  r   z'https://www.bilibili.com/cheese/play/ep)re   r  rK   extractor_key	extractorwebpage_urlr8  c                 ,    | ot          ddd|           S )Nindexr8  rv  r  r  r  s    r0   rD   z7BilibiliCheeseBaseIE._extract_episode.<locals>.<lambda>  s    A$c-PUab*c*c*c r2   r(  r   r  r  release_dateplay)r  r8  	alt_titler   r  r  rS  r  up_inforG  rI  )r  r  r  )r)  r  r  )r   r	   r>  r   r/  r   r   BilibiliCheeseIEie_keyIE_NAMErl   r   r"   r~  r4  )r/   ra  rl  r  r#  r  rJ   s     `    r0   _extract_episodez%BilibiliCheeseBaseIE._extract_episodei  s   #K::::2<EJL L L&U(;Sk22b88 !LW[\\\\L*55 	b%%&`aaa''>sURRSTTM(> ( @ @ AGH	 e$$%e,,++I66-4466)1LULL
 
 <#cU+ccd(3%0'+7#*[M":%}5,{m<%}5	* 	* 	 	
" ;&#7 )5;-@) )  #
* //s/DD $ 5 5c : : M/
 
 
 	
r2   c                 V    |                      d| d| || j        d          d         S )Nz.https://api.bilibili.com/pugv/view/web/season?=rV  )r  r   r   )r   r/  )r/   	query_keyr   s      r0   _download_season_infoz*BilibiliCheeseBaseIE._download_season_info  sI    ""SYSSSSU]M(A # C CCIK 	Kr2   N)r  r  r  r  r  r@   r2   r0   r  r  h  s8        '
 '
 '
RK K K K Kr2   r  c                   B    e Zd ZdZdddddddd	dd
ddddeddgZd ZdS )r  z:https?://(?:www\.)?bilibili\.com/cheese/play/ep(?P<id>\d+)z-https://www.bilibili.com/cheese/play/ep229832229832r     1 - 课程先导片   视频课 · 3分41秒	   马督工	316568752   课程先导片r      e20230924r  re   rf   r8  r  r  r  r  r  r  r   rS  r  r  r  r  c                     |                      |          }|                     |                     d|          |          S )Nrl  )r  r  r  )r/   r[   rl  s      r0   rT  zBilibiliCheeseIE._real_extract  s:    s##$$T%?%?%O%OQVWWWr2   N)r  r  r  rU  r/  rW  rT  r@   r2   r0   r  r    su        NJ>*5#&("#%<
 
  F(X X X X Xr2   r  c                   r    e Zd ZdZdddddddd	d
ddddddddddedigddidddddddddgZd Zd ZdS )BilibiliCheeseSeasonIEz:https?://(?:www\.)?bilibili\.com/cheese/play/ss(?P<id>\d+)z+https://www.bilibili.com/cheese/play/ss59185918uB   【限时五折】新闻系学不到：马督工教你做自媒体u?   帮普通人建立世界模型，降低人与人的沟通门槛r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  1r[   r  r  r  r   zpaid video in listr[   r  r  r  c              #   h   K   t          |dd df          D ]}|                     ||          V  d S )NrZ  c                     |d         S )Nepisode_can_viewr@   rS   s     r0   rD   z<BilibiliCheeseSeasonIE._get_cheese_entries.<locals>.<lambda>  s    K]I^ r2   re   )r   r  )r/   ra  rl  s      r0   _get_cheese_entriesz*BilibiliCheeseSeasonIE._get_cheese_entries  sT      !+
<^<^`d/eff 	< 	<E''U;;;;;;	< 	<r2   c           
          |                      |          }|                     d|          } | j        |                     |          |fi t	          |dt
          hfdt
          hfd          S )NrW  r8  r(  r  )r  r  rB  r  r   rl   )r/   r[   rW  ra  s       r0   rT  z$BilibiliCheeseSeasonIE._real_extract  s    NN3''	00iHH#t#$$[119 ;!C5) *SE2) )    	r2   N)r  r  r  rU  r/  rW  r  rT  r@   r2   r0   r  r    s        NJ<Y\
 
 .9'*,&"#')@! 
 $ $S)3 6 =Y\
 

 $	 	5#FJ< < <	 	 	 	 	r2   r  c                       e Zd Zd ZdS )BilibiliSpaceBaseIEc                      d           |          }t          fd|d         |d                   }||fS )Nr   c                 4     | r |           n          S r   r@   )r  
fetch_page
first_pageget_entriess    r0   rD   z7BilibiliSpaceBaseIE._extract_playlist.<locals>.<lambda>  s"    s$JJJsOOO
KK r2   
page_count	page_size)r   )r/   r  get_metadatar  metadata
paged_listr  s    ` `  @r0   _extract_playlistz%BilibiliSpaceBaseIE._extract_playlist  s^    Z]]
<
++'KKKKKK\"H[$9; ;
 ##r2   N)r  r  r  r  r@   r2   r0   r  r    s#        $ $ $ $ $r2   r  c                   f    e Zd ZdZdddidddddid	dd
ddidddddddeeed	igddidgZd ZdS )BilibiliSpaceVideoIEzShttps?://space\.bilibili\.com/(?P<id>\d+)(?P<video>(?:/upload)?/video)?/?(?:[?#]|$)z(https://space.bilibili.com/3985676/videore   3985676   r  z*https://space.bilibili.com/313580179/video	313580179\   z(https://space.bilibili.com/3669403/video3669403r  r  3669403_3958082u   合集·直播回放r   u
   月路Yuel)	r6  re   r8  rx  r  r  rS  r  r  r  7r  c                                                                         dd          \  }|s                     d            fd}d } fd}                     |||          \  }}                     |          S )Nre   r~   z{A channel URL was given. Only the channel's videos will be downloaded. To download audios, add a "/upload/audio" to the URLc                 N   dt          t                    d          pddd| dz   ddd	d
t          j        d                    t          j        t          j        t          j	        dd                              
                                          d d                                         t          j        d                    t          j        t          j        t          j	        dd                              
                                          d d                                         dd}	                     d                    |          d|  di          }nN# t          $ rA}t          |j        t"                    r!|j        j        dk    rt          dd           d }~ww xY w|d         }|dk    rt          dd          |dk    rt          dd          |dk    r*t          d | d!|                    d"          pd#           |d$         S )%Nr   )orderr   r  truer  r   r(   r   i z[]r   @   )r   r      z0{"ds":[],"wh":[6093,6631,31],"of":[430,760,380]})keywordrI  r  order_avoidedr  pnpstidweb_locationdm_img_list
dm_img_strdm_cover_img_strdm_img_interz/https://api.bilibili.com/x/space/wbi/arc/searchzDownloading space page r'   r%  i  z>Request is blocked by server (412), please wait and try later.Tr  rm  ioz>Request is blocked by server (401), please wait and try later.iz#Request is rejected by server (352)zRequest failed (z): rL  zUnknown errorr   )r   r   base64	b64encoder   randomrl  string	printablerandintr   decoder   r  r	   
isinstancecauser   statusr.   )page_idxr  responser  r  playlist_idr/   r[   s        r0   r  z6BilibiliSpaceVideoIE._real_extract.<locals>.fetch_page   sk   "%hsmm\BBOi!'!l '#$.GGFN6+;v~bRT?U?UVVVWW^^``b bbecebeggmgmgogo$*$4GGFN6+;v~bRU?V?VWWWXX__aa%c %ccfdfcf%hhnhnhphp R E$	..E{..<<=8==	SVGW / Y Y "   agy11 iagn6K6K(Xcgi i i i	
 #6*Kd""$T_ce e e e$$$%JUYZZZZ!!$%t%t%tU^H_H_Hrcr%t%tuuuF##s   73E+ +
F65<F11F6c                 n    | d         d         }| d         d         }t          j        ||z            |dS )Nr  r   r@  r  r  )mathceil)	page_datar  entry_counts      r0   r  z8BilibiliSpaceVideoIE._real_extract.<locals>.get_metadataG  sD    !&)$/I#F+G4K"ii(?@@&  r2   c           	   3   f  K   t          | dddt          hf          D ]}t          |d          dk    rO                    d|d          d|d	         d
          dt          |d          d|d	         d
                    V  e                    d|d          t          |d                   V  d S )Nr?  vlist.)meta	attribute   https://space.bilibili.com/rI  z/lists/r  re   z?type=seasonrA   r  r  )r   r   r^  BilibiliCollectionListIEr  r  rb  r/   s     r0   r  z7BilibiliSpaceVideoIE._real_extract.<locals>.get_entriesO  s      %i&'31OPP x x'<==DD//leElll5QW=Y]K^lll0U5\2Y2YE&MRVDW2Y2Y[ [ [ [ [ [ //*[ERXM*[*[]ginouivwwwwwwx xr2   )r8  r9  rH   r  rB  )	r/   r[   is_video_urlr  r  r  rA   r  r  s	   ``      @r0   rT  z"BilibiliSpaceVideoIE._real_extract  s    $($9$9#$>$>$D$DT7$S$S!\ 	SNN R S S S%	$ %	$ %	$ %	$ %	$ %	$ %	$N	 	 		x 	x 	x 	x 	x ..z<UU:##J<<<r2   Nr  r  r  rU  r/  rl   rW  rT  r@   r2   r0   r  r    s        gJ9)
 !  <+
    :)
 #'/!(( " 
 

  $S)'  FD@= @= @= @= @=r2   r  c                   *    e Zd ZdZdddiddgZd ZdS )	BilibiliSpaceAudioIEz;https?://space\.bilibili\.com/(?P<id>\d+)/(?:upload/)?audioz1https://space.bilibili.com/313580179/upload/audiore   r  r   r  c                                            |           fd}d } fd}                     |||          \  }}                     |          S )Nc                 Z                         dd|  | dz   dddd          d         S )	Nz;https://api.bilibili.com/audio/music-service/web/song/upperDownloading page r   r(   r  )uidr  r   r  r  r   r  r   r   )r  r  r/   s    r0   r  z6BilibiliSpaceAudioIE._real_extract.<locals>.fetch_pagej  sW    &&M{333)ARRS^eff ' h h iop pr2   c                 $    | d         | d         dS )N	pageCountpageSizer  r@   )r  s    r0   r  z8BilibiliSpaceAudioIE._real_extract.<locals>.get_metadatap  s!    '4&z2  r2   c              3      K   |                      d          pg D ]/}                    d|d          t          |d                   V  0d S )Nr   !https://www.bilibili.com/audio/aure   )r.   r^  BilibiliAudioIEr!  s     r0   r  z7BilibiliSpaceAudioIE._real_extract.<locals>.get_entriesv  sj      "v..4" w woo&W%PT+&W&WYhjoptjuvvvvvvw wr2   )r  r  rB  )r/   r[   r  r  r  rA   r  r  s   `      @r0   rT  z"BilibiliSpaceAudioIE._real_extractg  s    nnS))	p 	p 	p 	p 	p 	p	 	 		w 	w 	w 	w 	w
 ..z<UU:##J<<<r2   Nr  r@   r2   r0   r%  r%  ]  sK        OJB+
   F= = = = =r2   r%  c                   ,     e Zd ZddZd Z fdZ xZS )BilibiliSpaceListBaseIEr  c              #      K   t          |g t          |t          t          t          t
          f          d|t          hR           D ]#}|                     d| t          |          V  $d S )N.r  )r   r$   rl   bytesr   rG   r^  r  )r/   r  	bvid_keys
ending_keyr  s        r0   _get_entriesz$BilibiliSpaceListBaseIE._get_entries  s       ,shy3tUXBY.Z.Z,s\_,sak,snqmr,s,stt 	^ 	^D//"JD"J"JJX\]]]]]]	^ 	^r2   c                 j    |                      d| |d          }|                     d|dd          S )Nr  Fr6  u)   (?s)<title\b[^>]*>([^<]+)的个人空间-r  )r  _search_regex)r/   r)  r  rD  s       r0   _get_uploaderz%BilibiliSpaceListBaseIE._get_uploader  sG    (()Ls)L)Lkaf(gg!!"NPWYckp!qqqr2   c                     t                                          |||          \  }}|                    dd            |                    dd            ||fS )Nr  r  )superr  r  )r/   r  r  r  r  	page_list	__class__s         r0   r  z)BilibiliSpaceListBaseIE._extract_playlist  sW    #gg77
LR]^^)\4((([$'''""r2   )r  )r  r  r  r8  r<  r  __classcell__r@  s   @r0   r3  r3    sb        ^ ^ ^ ^r r r# # # # # # # # #r2   r3  c            
       l     e Zd ZddgZddddddeed	d
ddddddddgZe fd            Zd Z	 xZ
S )r   zWhttps?://space\.bilibili\.com/(?P<mid>\d+)/channel/collectiondetail/?\?sid=(?P<sid>\d+)z=https?://space\.bilibili\.com/(?P<mid>\d+)/lists/(?P<sid>\d+)z<https://space.bilibili.com/2142762/lists/3662502?type=season2142762_3662502u)   合集·《黑神话悟空》流程解说u   黑神话悟空 相关节目u   老戴在此2142762zThttps://archive.biliimg.com/bfs/archive/22302e17dc849dd4533606d71bc89df162c3a9bf.jpg)re   r8  rx  r  r  rS  r  r  r   r  z0https://space.bilibili.com/2142762/lists/3662502Tr[   r  zEhttps://space.bilibili.com/2142762/channel/collectiondetail?sid=57445c                 ~    t                               |          rdn t                                          |          S )NF)BilibiliSeriesListIEr=  r>  )clsr[   r@  s     r0   r=  z!BilibiliCollectionListIE.suitable  s3    ,55c::Uuu@P@PQT@U@UUr2   c                     	                                                     dd          \  	 d	  	fd} fd} fd}                     |||          \  }}  j        |fi |S )NrI  sidrA   c                 ^                         dd|  di| dz   dd          d         S )	NzBhttps://api.bilibili.com/x/polymer/web-space/seasons_archives_listr(  r'   r   r(   )rI  rW  page_numr  r   r  r  r   r+  r  rI  r  r/   rK  r[   s    r0   r  z:BilibiliCollectionListIE._real_extract.<locals>.fetch_page  s]    &&T"@h"@"@9VYJZ!A\^__ ' a a bhi ir2   c                     | d         d         }| d         d         }t          j        ||z            |                              dt          | ddt          hfddt          hfddt
          hfdd	t          hfdd
t          hfd          S )Nr  r  totalr  r  r  r  r  rx  rI  ptimer  )r8  rx  r  rS  r  )r  r  r<  r   rl   r   r   r"   )r  r  r  rI  r  r/   s      r0   r  z<BilibiliCollectionListIE._real_extract.<locals>.get_metadata  s    !&)+6I#F+G4K"ii(?@@& ..sK@@  y$fse4$*MC5#A$*EK=#A"('K=!A"('K=!A+ +  	 r2   c                 0                         | d          S Narchivesr8  r  r/   s    r0   r  z;BilibiliCollectionListIE._real_extract.<locals>.get_entries      $$Y
;;;r2   )r8  r9  r  rB  )
r/   r[   r  r  r  r  r  rI  r  rK  s
   ``     @@@r0   rT  z&BilibiliCollectionListIE._real_extract  s    ((--33E5AASnnsnn	i 	i 	i 	i 	i 	i 	i 	i 	i	 	 	 	 	 	 	 	< 	< 	< 	< 	<  $55j,P[\\*#t#JHHxHHHr2   )r  r  r  rU  r/  rl   rW  classmethodr=  rT  rA  rB  s   @r0   r   r     s        bHJ
 N#@9&$o	
 	
    B  W !F* V V V V [VI I I I I I Ir2   r   c                   F    e Zd ZddgZdddddddd	eed
	dddddgZd ZdS )rH  zUhttps?://space\.bilibili\.com/(?P<mid>\d+)/channel/seriesdetail/?\?\bsid=(?P<sid>\d+)zahttps?://space\.bilibili\.com/(?P<mid>\d+)/lists/(?P<sid>\d+)/?\?(?:[^#]+&)?type=series(?:[&#]|$)z>https://space.bilibili.com/1958703906/lists/547718?type=series1958703906_547718   直播回放
   靡烟miya
1958703906=a20211127)	re   r8  rx  r  r  rS  r  modified_timestampmodified_date  r  zMhttps://space.bilibili.com/1958703906/channel/seriesdetail?sid=547718&ctype=0TrF  c                    	
                                                     dd          \  
 d
 t                               d
 d          ddd	t          hfddd
t          hfdddt
          hfdddt          hfdddt          hfd          	 
fd}	 fd} fd}                     |||          \  }}  j        |fi |S )NrI  rK  rA   z3https://api.bilibili.com/x/series/series?series_id=Fr:  r   r  r  rx  rM  mtime)r8  rx  r  rS  rb  c                 ^                         dd|  di| dz   dd          d         S )	Nz*https://api.bilibili.com/x/series/archivesr(  r'   r   r(   )rI  r  r  r   rN  r   r+  rO  s    r0   r  z6BilibiliSeriesListIE._real_extract.<locals>.fetch_page  s\    &&<"@h"@"@9VYJZ!8a<rRR ' T T U[\ \r2   c                     | d         d         }| d         d         }t          j        ||z            |                              dS )Nr  rd   rQ  rR  )r  r  r<  )r  r  r  rI  r  playlist_metar/   s      r0   r  z8BilibiliSeriesListIE._real_extract.<locals>.get_metadata  sb    !&)&1I#F+G4K"ii(?@@& ..sK@@   	 r2   c                 0                         | d          S rU  rW  rX  s    r0   r  z7BilibiliSeriesListIE._real_extract.<locals>.get_entries  rY  r2   )	r8  r9  r   r   rl   r   r   r  rB  )r/   r[   r  r  r  r  r  rI  r  ri  rK  s   ``     @@@@r0   rT  z"BilibiliSeriesListIE._real_extract  sy   ((--33E5AASnnsnn$T%8%8G#GG\a &9 &
 &
 ffse4"FMC5A"FEK=A &'K=A#)67[M"J
 
 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\	 	 	 	 	 	 	 		< 	< 	< 	< 	<  $55j,P[\\*#t#JHHxHHHr2   Nr#  r@   r2   r0   rH  rH    s        `lJ
 P%#)$'#%"% 

 

 !  _ F&!I !I !I !I !Ir2   rH  c                   H    e Zd ZdZdddddddd	eed
eeddddddgZd ZdS )BilibiliFavoritesListIEzlhttps?://(?:space\.bilibili\.com/\d+/favlist/?\?fid=|(?:www\.)?bilibili\.com/medialist/detail/ml)(?P<id>\d+)zDhttps://space.bilibili.com/84912/favlist?fid=1103407912&ftype=create
1103407912   【V2】（旧）r      晓月春日84912_20201109Sre:http://i\d\.hdslb\.com/bfs/archive/14b83c62aa8871b79083df1e9ab4fbc699ad16fe\.jpg)re   r8  rx  r  r  rS  r  rb  rc  r  r  r  r   r  z6https://www.bilibili.com/medialist/detail/ml1103407912TrF  c                    |                      |          }|                     d| d|d          }|d         dk    r|                     d           |                     |                     d	| |d
          d          } | j        ||fi t          |dddt          hfdt          hfddt          hfddt          hfdt          hfdt          hfdt          hfddt          hfddt          hfd	f          S )Nz9https://api.bilibili.com/x/v3/fav/resource/list?media_id=z&pn=1&ps=20zDownloading favlist metadatar   rm  r  zAThis is a private favorites list. You need to log in as its ownerrQ  z8https://api.bilibili.com/x/v3/fav/resource/ids?media_id=zDownload favlist entriesr   r  r8  intror<  r  rI  rM  rf  r  cnt_infor  thumb_up)	r8  rx  r  r  rS  rb  r  r  r  )
r  r   r>  r8  rB  r   rl   r   r   r"   )r/   r[   fid	list_infor7  s        r0   rT  z%BilibiliFavoritesListIE._real_extract"  sY   nnS!!''XXXX4 ( 6 6	 V$$%%*m%nnn##D$7$7LsLL0 %8 %2 %239; ; $t#GS 
 
LVU[u%#cU+ &3%0#U[M:!K=1#*[M":!K=1%v}=%zK=A
^
 
^
 
M 
5 
5 
 
 
	r2   Nr#  r@   r2   r0   rl  rl  
  s         AJU(&"#%"% o
 
  ! $ H #F,    r2   rl  c                   .    e Zd ZdZdddddddgZd	 Zd
S )BilibiliWatchlaterIEz7https?://(?:www\.)?bilibili\.com/watchlater/?(?:[?#]|$)z*https://www.bilibili.com/watchlater/#/listzre:\d+   稍后再看r  r   r  r  c                 <   t          |                     |                              d          dd          }|                     d|          }|d         dk    r|                     d           |                     |d	          }|                     ||d
          S )N
DedeUserIDvalue
watchlaterz<https://api.bilibili.com/x/v2/history/toview/web?jsonp=jsonprm  iz0You need to login to access your watchlater listru  )r   r?  r}  r  )getattrr-   r.   r   r>  r8  rB  )r/   r[   list_idwatchlater_infor7  s        r0   rT  z"BilibiliWatchlaterIE._real_extractH  s    $++C0044\BBG\ZZ--JGU U6"d**%%*\%]]]##O5EFF##G~#NNNr2   Nr  r@   r2   r0   r|  r|  <  sY        KJ;#
 
    FO O O O Or2   r|  c                       e Zd ZdZdddddddd	d
ddddddddddddeeeedgdddi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+eed,d-d.dd/dd0id-d1dgZd2 Zd3 Z	d4S )5BilibiliPlaylistIEzDhttps?://(?:www\.)?bilibili\.com/(?:medialist/play|list)/(?P<id>\w+)z3https://www.bilibili.com/list/1958703906?sid=5477185_547718r]  r^  r_  r`  ra  )re   r8  r  r  rS  r  rd  r  zShttps://www.bilibili.com/list/1958703906?sid=547718&oid=687146339&bvid=BV1DU4y1r7tzBV1DU4y1r7tzr  uB   【直播回放】8.20晚9:30 3d发布喵 2022年8月20日21点场20220820r   i
cr  g%s@zbilibili 687146339_part1r  
noplaylistTr  zbhttps://www.bilibili.com/medialist/play/1958703906?business=space_series&business_id=547718&desc=1re   zredirect urlr  z*https://www.bilibili.com/list/ml11034079123_1103407912rn  ro  rp  rq  rr  rs  )re   r8  r  r  rS  r  r  r   z4https://www.bilibili.com/medialist/play/ml1103407912z(https://www.bilibili.com/list/watchlaterzre:2_\d+r}  )re   r8  r  r  r   r  z2https://www.bilibili.com/medialist/play/watchlaterr  zredirect url & login requiredc           
   #   "  K   t          j        d          D ]w}|                     d||d|d          d|           d         }|                     |dd	
          E d {V  t	          |d          |d<   |                    dd          s d S xd S )Nr   z5https://api.bilibili.com/x/v2/medialist/resource/listzgetting playlist biz_idz page rg  r   
media_listbv_id)r7  )r  r  re   oidhas_moreF)r?  r@  r   r8  r   r.   )r/   r  r  rM  r  s        r0   _extract_medialistz%BilibiliPlaylistIE._extract_medialist  s      !** 	 	H++Gu+`uX+`+`V^+`+` ,   I ((LW(UUUUUUUUU'	3KLLE%L==U33 	 	r2   c                 V   |                      |          }t          t          |          d          }|                     ||          s|                     d| t
                    S |                     ||          }|                     d|d|          }t          |dt          d t          f          }|r|d         dk    r|
                    d	          }|d
k    r|dk    r|                     d           n3|dk    r|                     d           n|dk    rt          dd          t          d| d|
                    d                     dddt          |ddt          hfddt          hfdt          hfdt          hfdt          ht          ht           j        hfd          }d|d          d |d!          it          |d"d#t           hfd$d%t           hfd$d&t          hfd't          ht$          fd(t&          hfd)f          }	 | j        |                     ||          fi |	S )*N)r  r   r  r  r  )r  	listErrorc                     |d         S )Nrm  r@   rS   s     r0   rD   z2BilibiliPlaylistIE._real_extract.<locals>.<lambda>  s    WXY_W` r2   rm     r  ipr  z4You need to login to access your watchlater playlistr  z:This is a private playlist. You need to login as its owneri+  zPlaylist is no longer availableTr  zCould not access playlist: r  rL  r   F)r   with_currentr  typere   r  	sortFiledr  )r  r  r  
sort_fieldr  rA   r  mediaListInfor8  r<  r  rI  rM  r  )r8  r  r  rS  r  )r  r   r   r@  r^  r  r  r;  allr  r.   r>  r	   r   r   r   rl   rm   r   r"   rB  r  )
r/   r[   r  r  rD  rF  r  
error_coder  r  s
             r0   rT  z BilibiliPlaylistIE._real_extract  s   ..%%HSMM;77!!'400 	Y??#KT#K#KZXXX((g66))*JGUdfmnn]-CSJ`J`be,fgg 	dU6]c)):..JT!!g&=&=))*`aaaat##))*fggggu$$$%FQUVVVV !bz!b!bEIIV_L`L`!b!bccc !

 

 =#Vk];%tk];}-*[M:,+L+ +  

 U6]66U8_66	
=?!C5)$fse4 '>%}f=%}5= = +  	
 $t#D$;$;E7$K$KXXxXXXr2   N)
r  r  r  rU  r?  r/  rl   rW  r  rT  r@   r2   r0   r  r  R  s       XJD#$'#%
 
 !  e Y%#'$<  !; <
 
"  &' * t*
 !  < (&"#%o
 
    F.
    :#	
 
  
 
 DL)/	 GHFT	 	 	)Y )Y )Y )Y )Yr2   r  c                   F    e Zd ZdZdZdZdddddddid	gZd
 Zd Zd Z	dS )BilibiliCategoryIEzBilibili category extractori@B z7https?://(?:www\.)?bilibili\.com/v/[a-zA-Z]+\/[a-zA-Z]+z&https://www.bilibili.com/v/kichiku/madzkichiku: madr  r   playlistend)r[   r  r  r  c           	   #     K   |                      ||||dd| d|           }t          |dt                    }|st          d|           |D ]:}|                     d                    |d	                   d
|d	                   V  ;d S )N
Search_keyr  Extracting results from page z of rg  )r   rV  r  z'Failed to retrieve video list for page z!https://www.bilibili.com/video/{}r  BiliBili)r   r   r?  r	   r^  r{   )r/   api_url	num_pagesr  rM  parsed_json
video_listr~   s           r0   _fetch_pagezBilibiliCategoryIE._fetch_page  s      ))Uh"G"GJJJyJJ * L L "+/CSWXXX
 	W !U8!U!UVVV 	f 	fE//3::5=II:W\]cWdf f f f f f	f 	fr2   c           	         dddddddi}||vr4t          d| d	t          |                                                     |||         vr:t          d
| dt          ||                                                              ||         |         }d|z  }|                     |||dd          }t	          |dt
                    }t          |                    d                    t          |                    d                    }
}	|	|
st          d          t          j	        |	|
z            }t          t          j        | j        |||          |
          S )Nkichikur   ru   r         )madmanual_vocaloidguidetheatrecoursezThe category z( isn't supported. Supported categories: zThe subcategory z= isn't supported for this category. Supported subcategories: zPhttps://api.bilibili.com/x/web-interface/newlist?rid=%d&type=1&ps=20&jsonp=jsonpr  r  r  )r   r  r  r@  rd   z-Failed to calculate either page count or size)r	   r?  keysr   r   r   r   r.   r  r  r   	functoolspartialr  )r/   categorysubcategoryr  rid_map	rid_valuer  	page_jsonr  r@  rd   r  s               r0   _entrieszBilibiliCategoryIE._entries  s    #& 
 7"" iiiSWX_XdXdXfXfSgSgiik k kgh///  O;  O  Onrsz  |D  tE  tJ  tJ  tL  tL  oM  oM  O  OP P PH%k2	dgpp''UZ]>^>^'__	 ,<DQQQ	!)--"8"899;y}}U[G\G\;];]t== !PQQQIedl++	 !2gy%"9 "9:>@ @ 	@r2   c                     t           j                            |          j                            d          dd         \  }}| d| }|                     |                     |||          ||          S )Nr   r   r   : )r   r   urlparsepathsplitrB  r  )r/   r[   r  r  r  s        r0   rT  z BilibiliCategoryIE._real_extract  ss     & 5 5c : : ? E Ec J J1Q3 O+,,{,,##DMM(K$O$OQVX]^^^r2   N)
r  r  r  r  _MAX_RESULTSrU  rW  r  r  rT  r@   r2   r0   r  r    s        +GLKJ7 #
 
  2

 
 
Ff f f@ @ @@_ _ _ _ _r2   r  c                   ^    e Zd ZdZdZdZddddddd	d
ddddedddeeeddgdigdgZd Z	dS )BiliBiliSearchIEzBilibili video searchi 
bilisearchuX   bilisearch3:靡烟 出道一年，我怎么还在等你单推的女人睡觉后开播啊r   uL   靡烟 出道一年，我怎么还在等你单推的女人睡觉后开播啊r  r  BV1n44y1Q7scr  um   “出道一年，我怎么还在等你单推的女人睡觉后开播啊？”【一分钟了解靡烟miya】ic20221201z$md5:43343c0973defff527b5a4b403b4abf9r^  gDl^@r_  r  zbilibili 988222410_part1r  )r[   r  r  r  c              #     K   |                      d                              d          s+|                     ddt          j                     d           t          j        d          D ]~}|                     d|d| |||dd	dd
dd	dd
          d                             d          }|s d S |D ]4}|                     |d         dt          |d                             V  5d S )Nr*   buvid3z.bilibili.cominfocr   z4https://api.bilibili.com/x/web-interface/search/typer  r   r   r  r~   )
r  r  r  contextr   tids_2__refresh__search_typetids	highlightr*  r   rX  arcurlr  r#  )
r-   r.   _set_cookieuuiduuid4r?  r@  r   r^  rl   )r/   r  rM  videosr~   s        r0   _search_resultsz BiliBiliSearchIE._search_results9  s?       !;<<@@JJ 	P_h4:<<8N8N8NOOO!** 	V 	VH((F?X??"'$$! ! #)#*!"H H )    3x==    V VooeHoz3uU|CTCTUUUUUUV#	V 	Vr2   N)
r  r  r  IE_DESCr  _SEARCH_KEYr?  r/  rW  r  r@   r2   r0   r  r    s        %GLKi`c
 

 $ I')E(#+!$!!@%?$@ 
   F8V V V V Vr2   r  c                       e Zd ZddZdS )BilibiliAudioBaseIENc                 P    |sd|i}|                      d|z   ||          d         S )NrK  z3https://www.bilibili.com/audio/music-service-c/web/r  r   r+  )r/   r  rK  r  s       r0   	_call_apizBilibiliAudioBaseIE._call_apiR  sE     	!CLE""ADHu #  $& 	&r2   r   )r  r  r  r  r@   r2   r0   r  r  Q  s(        & & & & & &r2   r  c                   J    e Zd ZdZddddddedd	d
ddigiddddeddZd ZdS )r1  z4https?://(?:www\.)?bilibili\.com/audio/au(?P<id>\d+)z(https://www.bilibili.com/audio/au1003142 fec4987014ec94ef9e666d4d158ad03b1003142m4au   【tsukimi】YELLOW / 神山羊tsukimiu   YELLOW的mp3版！   originrf   lrczre:^https?://.+\.jpgiE]20190803u   十六夜tsukimiつきみぐ)re   rf   r8  artistr  rx  r   r)  r  rS  r  r  r  )r[   r   r  c                 ~   |                      |          }|                     d|          }|d         d         t          |                    d                    ddg}|D ]-}|                    di                               d|i           .|                     d	|          }|d
         }|                    d          pi }d }	|                    d          }
|
rdd|
igi}	||||                    d          t          |                    d                    |                    d          t          |                    d                    |	|                    d          t          |                    d                    |                    d          t          |                    d                    dS )Nr[   cdnsr   rd   r_   )r[   rj   rh   r  r'   z	song/infor8  	statisticlyricr  rP  commentrv  r   r  passtimerG  r  )re   r8  rK   r  r  rx  r   r)  r  rS  r  r  )r  r  r   r.   r1  r   )r/   r[   au_id	play_datarK   a_formatsongr8  r  r)  r  s              r0   rT  zBilibiliAudioIE._real_extractt  s   s##NN5%00	V$Q'#IMM&$9$9::
 
    	 	H33::3<     ~~k511WHH[))/R		!! 	5 I hhx(((y)A)ABB88G,,#DHHZ$8$899"'**$TXXj%9%9::))%immF&;&;<<
 
 	
r2   N)r  r  r  rU  r/  _TESTrT  r@   r2   r0   r1  r1  Z  s        HJ916 /5 
 1#%6#
 
 E0)
 )
 )
 )
 )
r2   r1  c                   ,    e Zd ZdZdddddddZd	 Zd
S )BilibiliAudioAlbumIEz4https?://(?:www\.)?bilibili\.com/audio/am(?P<id>\d+)z&https://www.bilibili.com/audio/am1062410624u   新曲推荐u,   每天11:00更新，为你推送最新音乐r  r   )r[   r  r  c                 F   |                      |          }|                     d||ddd          d         }g }|D ]k}t          |                    d                    }|s'|                    |                     d|z   t                                          |                     l|rd|                     d|          pi }|                    d	          }|r5|D ]}	||	d
<   |                     ||||                    d                    S |                     ||          S )Nzsong/of-menur   d   )rK  r  r   r   re   r0  z	menu/infor8  albumrv  )	r  r  r   r.   r   r^  r1  r  rB  )
r/   r[   am_idsongsr7  r  rK  
album_dataalbum_titlerb  s
             r0   rT  z"BilibiliAudioAlbumIE._real_extract  s]   s##E5#E#EG GGMO  	0 	0Ddhhtnn--C NN4??3c9&&((#/ / 0 0 0 0  	JU;;ArJ$..11K J$ 1 1E%0E'NN++UK1H1HJ J J ##GU333r2   Nr  r  r  rU  r  rT  r@   r2   r0   r  r    sO        HJ7#I
 

  E4 4 4 4 4r2   r  c                   "    e Zd ZdZdddZd ZdS )BiliBiliPlayerIEzAhttps?://player\.bilibili\.com/player\.html\?.*?\baid=(?P<id>\d+)zHhttp://player.bilibili.com/player.html?aid=92494333&cid=157926707&page=1TrF  c                     |                      |          }|                     d| dt                                          |          S )Nzhttp://www.bilibili.tv/video/avr   )r  r   )r  r^  r  r  )r/   r[   r   s      r0   rT  zBiliBiliPlayerIE._real_extract  sM    >>#&&9h999  ""X  7 7 	7r2   Nr  r@   r2   r0   r  r    s:        UJY E
7 7 7 7 7r2   r  c                       e Zd ZdZdi ddddddd	ed
dgdddddddddededddddddededgZd Zd S )!BiliBiliDynamicIEzFhttps?://(?:t\.bilibili\.com|(?:www\.)?bilibili\.com/opus)/(?P<id>\d+)z)https://t.bilibili.com/998134289197432852re   BV1TAmBYVEJrrf   r  r  
1192648858r  r  zbilibili 113457567568273_part1r  zLhttp://i2.hdslb.com/bfs/archive/50091efd965d9f13ff6814f7ad374f90ab21e77d.jpgr   gCl	@r  20241110r  u   何同学工作室r  r  r8  u>   美国小朋友就玩这个？！何同学工作室11月开箱rx  up   本期产品信息：
机器狗
气味模拟器
Cloudboom Strike LS
无弦吉他
蓝牙磁带音箱
神奇画板rS  i 0gr  r;  r  c                 h   |                      |          }|                     d|d|iddi          }t          |dddd	d
ddt          ht          | j        hf
          }|r.|                     |          r*||                      |          k    rt          dd          |                     |          S )Nz8https://api.bilibili.com/x/polymer/web-dynamic/v1/detailre   z
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36rs  r   item)Norigmodulesmodule_dynamic))major)archivepgc)
additional)reservecommonjump_urlzNo valid video URL foundTr  )	r  r   r   r"   r  _proto_relative_urlr=  r	   r^  )r/   r[   post_id	post_data	video_urls        r0   rT  zBiliBiliDynamicIE._real_extract  s    ..%%''F/  P, (  	
 !FNI7GRsT-E,F-H I I	  	LT]]955 	L'T^^T]E^E^:^:^ !;dKKKKy)))r2   N)r  r  r  rU  r/  r?  rW  rT  r@   r2   r0   r  r    s       ZJ:
.
5
 <
 S	

 !A B
 g
 
 :
 ,
 #
 #
 U
   T
 
 D
  !
  F,* * * * *r2   r  c                   R    e Zd ZdZdZddiZd Zd Zdddd	Zdddd
Z	d Z
d ZdS )BiliIntlBaseIEz$https://api.bilibili.tv/intl/gatewaybiliintlr'   zhttps://www.bilibili.tv/c                 D    | j         | j        |z   g|R i |} |j        d          r|d         dv r|                                  n|d         dk    r|                                  n |j        d          rIt          |d                   |d         k    r*|                    dd           d| j         d|d          }n|                    dd          }|                    d	          rt          |          |                     |            |j        d
          S )Nrm  )i$ i% i^ i! rL  r   Unable to download JSON metadatar   said: r6  r   )	r   _API_URLr.   r>  r  rl   r  r	   r0  )r/   endpointargskwargsr|  errmsgs         r0   r  zBiliIntlBaseIE._call_api  sd   "t"4=8#;MdMMMfMM48F 	0F|===))++++f))))++++48I&& W3tF|+<+<Y+O+O &

96X Y Y  D  D]a]i  D  Drv  xA  sB  D  DFF#ZZ	3UVVF::g&& 0(000''///txr2   c           
      |    d                     d t          t          |dd f                    D                       S )Nr  c           	   3      K   | ]C\  }}|d z    dt          |d                    dt          |d                    d|d          V  DdS )r   r  r  r  r  r  N)r   )r:   r   r  s      r0   r   z*BiliIntlBaseIE.json2srt.<locals>.<genexpr>  s       P P4 1uzz.tF|<<zzCYZ^_cZdCeCezzimnwixzzP P P P P Pr2   r  c                 2    |d         o|d         o|d         S )Nr  r  r  r@   )rA   ls     r0   rD   z)BiliIntlBaseIE.json2srt.<locals>.<lambda>  s    Qy\%Kai%KAdG r2   )r   r  r   )r/   r|  s     r0   r  zBiliIntlBaseIE.json2srt  sg    {{ P P$\$KK9M &N &N O OP P P P P 	Pr2   Nrl  r#  c                
   |                      d|p|dddt          dd||d                    pi }i }t                      }t          |d	d
t          hf          D ]&}t          |ddt
          hf          D ]}||v r|                    |           t          |          }|                    d          pd}	|dk    r-|	                    |	g           
                    d|d           v|dk    rt|                     ||p|ddt          |dd           d|	 dd          }
|
r?|	                    |	g           
                    d|                     |
          d           |                     d|p|           
(|S )Nz/web/v2/subtitleFzDownloading subtitles listz!Unable to download subtitles listr  en_US)r  s_localer  r#  )r6  r   r  r  )r)  video_subtitle.)Nassr-  r[   lang_keyenr*  r   r|  zDownloading subtitleslangz for %sr*  r+  zUnable to download subtitles)r6  r   r  r-  r.  zUnexpected subtitle extension)r  r   rG   r   r   r"   addr   r.   r1  r   r   r   r  r0  )r/   rl  r#  sub_jsonr)  fetched_urlssubr[   sub_extsub_langsub_datas              r0   r4  zBiliIntlBaseIE._get_subtitles  s   >>E-7Z!##	    "     	 	uu+JCRVQW*XYY 	W 	WC#C*>})UVV W W,&&  %%%',,77:..6$e##((266==$"? ?     &&#22U\ch\#vy5Y5Yhh]ehhh >  3  @  @H
   !,,Xr::AA#($(MM($;$;C C   
 ''(GRUVVVV1W4 r2   c                t   |                      d|p|ddt          d||d                    }|d         }g }|                    d          pg D ]}|                    d	          pi }|                    d
          pi }|                    d          sF|                    |d         d|                    d          |                    d          |                    d          |                    d          d|                    d          |                    d          d	           |                    d          pg D ]s}|                    d          s|                    |d         d|                    d          |                    d          d|                    d          d           t|S )Nz/web/playurlzDownloading video formatsz Unable to download video formatsr  )r  rl  r#  )r   r  r  playurlr~   video_resourcestream_infor[   r  
desc_wordsrq   rr   r`   r_   r^   rd   )	r[   rf   r   rq   rr   vbrrg   rh   rj   audio_resource)r[   rf   abrrg   rh   rj   )r  r   r.   r   )	r/   rl  r#  
video_jsonrK   vid	video_resr2  auds	            r0   _get_formatszBiliIntlBaseIE._get_formatsD  s   ^^ELS/J6k!K K ? ? $  
  	*
>>'**0b 	 	C 0117RI//52J=='' NN ')~~l;;"w//#--11 }}[11 #--11%MM&11
 
 
 
 
 
 >>"2339r 
	 
	C775>> NN5zww{++''(++ GGFOO      r2   c                 `   |                     d          p|                     d          |                     d          |                     d          t          |                     d                    t          |                     d|                     d          pddd 	                    d
S )Ntitle_displayr8  r  r  formatted_pub_datez^E(\d+)(?:$| - )r   zepisode numberr  )r8  rx  r  rS  r  )r.   r    r   r;  )r/   rJ  s     r0   _parse_video_metadataz$BiliIntlBaseIE._parse_video_metadatal  s    ^^O44O
w8O8O%>>&11#00*:>>:N+O+OPP)$*<*<#Z^^O%D%D%JL\fj += +l +l m m
 
 	
r2   c                    t           j        st          dd          |                     dd dd          d         }t           j                            |d	                   }t           j                            |                              |d
         |z                                             }|                     dd t          |t          j        |                              d          dddd          dd          }|                    d          rF|                    d          r"t          d| j         d|d          d          t          d          d S )Nz'pycryptodomex not found. Please installTr  zEhttps://passport.bilibili.tv/x/intl/passport-login/web/key?lang=en-USzDownloading login keyzUnable to download login key)r   r  r   r   hashzPhttps://passport.bilibili.tv/x/intl/passport-login/web/login/password?lang=en-USasciir  r'  )usernamepasswordkeep_mer(  	isTrustedz
Logging inzUnable to log in)r   r   r  rm  rL  zUnable to log in: r  )r   RSAr	   r   	importKey
PKCS1_v1_5newencryptr   r#   r  r  r  r.   r  )r/   rI  rJ  key_data
public_keypassword_hash
login_posts          r0   _perform_loginzBiliIntlBaseIE._perform_loginv  s   ~ 	[ !JUYZZZZ&&SUY(2P ' R RRXZ  ^--huo>>
"-11*==EExPVGWZbGbFjFjFlFlmm((^`d#$",];;BB7KK!##% %   "+= ) ? ?
 >>&!! 	9~~i(( 9$%f$,%f%fzZcOd%f%fquvvvv$%7888		9 	9r2   )r  r  r  r  _NETRC_MACHINEr/  r  r  r4  rA  rE  rV  r@   r2   r0   r  r    s        5HN56H     $P P P '+ ' ' ' ' 'R %)d & & & & &P
 
 
9 9 9 9 9r2   r  c                   v   e Zd ZdZdddddddd	d
dddddddddddddg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d#
dd$d%dd&dd'd(d)d*d+d,dd-d.d/d0d1d2d3edd4ddd4d5ddd6d7ddgd8d9d:id;d<d=dd>d?d@dAedBdCd9d:id;dDdEddFdGdHdIdJdKdLdM	ddNd:dOdPd:dOdQd:dOdRd:dOg
ZedYdT            ZdU ZdZdVZ	dW Z
dX ZdSS )[
BiliIntlIEzzhttps?://(?:www\.)?bili(?:bili\.tv|intl\.com)/(?:[a-zA-Z]{2}/)?(play/(?P<season_id>\d+)/(?P<ep_id>\d+)|video/(?P<aid>\d+))z,https://www.bilibili.tv/en/play/34613/341736341736r  zE2 - The First Night.re:^https://pic\.bstarstatic\.com/ogv/.+\.png$r   20201009z	Episode 2i,_$md5:297b5a17155eb645e14a14b385ab547er   gsh|S@z<Untitled Chapter 1>r9  r:  r8  gx&%d@Introg@g'1@Outro)
re   rf   r8  r  r  r  r  rS  rx  r;  r  z0https://www.bilibili.tv/en/play/1033760/1100500611005006z	E3 - Who?r   z$md5:e1a775e71a35c43f141484715470ad09z	Episode 320211219i|Sag      V@g     c@g     T@gq=
#@)
re   rf   r8  r  r  rx  r  r  rS  r;  z0https://www.bilibili.tv/en/play/1005144/1013179010131790z$E140 - Two Heartbeats: Kabuto's Trap   )re   rf   r8  r  r  zZAccording to the copyright owner's request, you may only watch the video after you log in.r  z,https://www.bilibili.tv/en/play/34580/340317340317i_20201030r   zE5 - My Own Steelz$md5:2b17ab10aebb33e3c2a54da9e8e487e2z.re:https?://pic\.bstarstatic\.com/ogv/.+\.png$z	Episode 5g     N@g     `@g     (@g     @)re   rf   rS  r  r  r8  rx  r  r  r  r;  getcommentsTr  z+https://www.bilibili.tv/en/video/2045730385
2045730385z$md5:693b6f3967fb4e7e7764ea817857c33aijc20221108zUThat Time I Got Reincarnated as a Slime: Scarlet Bond - Official Trailer 3| AnimeStanzRre:https://pic\.bstarstatic\.(?:com|net)/ugc/f6c363659efd2eabe5683fbb906b1582\.jpg)re   rf   rx  rS  r  r8  r  r  z0https://www.bilibili.tv/en/play/1048837/1124648911246489zE1 - Operation 'Strix' <Owl>$md5:b4434eb1a9a97ad2bccb779514b89f17ipQbzLhttps://pic.bstarstatic.com/ogv/62cb1de23ada17fb70fbe7bdd6ff29c29da02a64.pngz	Episode 1r   20220409)	re   rf   r8  rx  rS  r  r  r  r  z-https://www.biliintl.com/en/play/34613/341736rF  z'https://bilibili.tv/en/video/2019955076z(https://www.bilibili.tv/video/2019955076z+https://www.bilibili.tv/EN/video/2019955076Nc                      |rd| d|  S d|  S )Nz https://www.bilibili.tv/en/play/r   z!https://www.bilibili.tv/en/video/r@   )r   r  s     r0   	_make_urlzBiliIntlIE._make_url!	  s/     	MLiLL(LLL=8===r2   c           	         t          |i           \  }}|                    d          r|S |                     |          }|                     d|di           p|                     |ddd           }t          |dd	d
t                    pi }|r;|s9|                     d| d          }t          |dddfdft          d          }t          | 	                    |          t          d|          p|                     d|          t          d|          p|                     d|          d|                     |i                     S )Nr8  z&window\.__INITIAL_(?:DATA|STATE)__\s*=zpreload stater  __initialStateF)r6  traverse)OgvVideoepDetail)UgcVideor  )ugcr  r  $/web/v2/ogv/play/episodes?season_id=&platform=websections.rZ  c                 6    t          |d                   k    S )Nr  )rl   r  s     r0   rD   z4BiliIntlIE._extract_video_metadata.<locals>.<lambda>8	  s    #ao:N:NRZ:Z r2   )r  rx   zbstar-meta__titlezog:titlezbstar-meta__desczog:descriptionr  )r!   r.   r  r;  _search_nuxt_datar   r   r  r   rE  r   _html_search_meta_search_json_ld)	r/   r[   r   rW  smuggled_datarD  initial_datarJ  season_jsons	     `      r0   _extract_video_metadataz"BiliIntlIE._extract_video_metadata'	  s   *333]W%% 	!  ((h77 GRackuwxx g%%gx9IQVae%ff 	 "24MOaquw w w }z| 	  	2Z 	2..)hPY)h)h)hjrssK%kC-Z-Z-Z-Z4!52 2 2J
 &&z22-'2 2 a595K5KJX_5`5`3& 1  1  f484J4JK[]d4e4e	5 5
 ##GXr#BBD D 	Dr2   c              #   P  K   |                      d|d| d| dd||d          }t          |d          D ]}t          |d	          t          |d
          t          |d          t          |d          |                    d          t          |                    d                    |                    d          t	          |                    d                    dV  t          |d          s1|                     ||d         d         d         |          E d {V  d S d S )Nz(https://api.bilibili.tv/reply/web/detailzDownloading reply comment of rv  r  r   )r  r   rO  ry  r*  r   r>  .rF  r  rH  rF  facerK  rJ  r  rN  
ctime_text)rP  rQ  author_thumbnailrR  re   r  rN  rS  r   cursoris_endr   r  ry  )r   r   r.   r   r    _get_comments_reply)r/   root_idnext_id
display_idcomment_api_raw_datar>  s         r0   r  zBiliIntlIE._get_comments_replyD	  s     #226
FFFWFF!	   3     $$8:RSS 
	 
	G&w0BCC)'3DEE$0:L$M$M$W.DEEkk&)))'++l*C*CDD!++h//.w{{</H/HII	 	 	 	 	 	 02NOO 	U//-f5h?GU U U U U U U U U U U	U 	Ur2   c              #     K   t          j        d          D ]K}|                     d|d|dz    d|d||rdnddd	          }t          |d
          D ]}t          |d          t          |d          t          |d          t          |d          |                    d          t          |                    d                    t          |                    d                    t          t          |d                    dV  |                    d          r0|                     |                    d          |          E d {V  t          |d          r d S Md S )Nr   z&https://api.bilibili.tv/reply/web/rootzDownloading comment page r   r  r   r   )r  r  r   r  r  	sort_typer*  r  r  rH  r  rK  rJ  r  r  )rF  r  )rP  rQ  r  rR  re   r  rS  author_is_uploaderr@  )r  r  )	r?  r@  r   r   r.   r   r    r,   r  )r/   r   rl  r   r  r>  s         r0   rD  zBiliIntlIE._get_comments_	  s     ## 	 	A#'#6#68(8Q88 %#!&-AAA!"  $7 
$ 
$  ((<>VWW b b*74FGG!-g7H!I!I(4W>P(Q(Q(2HII!++f--"-gkk,.G.G"H"H!27;;|3L3L!M!M*.|GEW/X/X*Y*Y	 	 	 	 	 ;;w'' b#77F8K8KX`7aaaaaaaaa02NOO 7	 	r2   c                    |                      |                              ddd          \  }}}|p|}d }|r|                     d| d|d          pi }|                    d          r|t	          t          |d	          d
          t	          t          |d          d
          ddt	          t          |d          d
          t	          t          |d          d
          ddg}d|i|                     |||          |                     ||          |                     ||          || 	                    ||          | j
        dS )NrW  rl  r#  z$/web/v2/ogv/play/episode?episode_id=rw  Fr:  r  )r  opening_start_timera   )r  opening_end_timer_  r^  )r  ending_start_time)r  ending_end_timer`  re   r%  )rK   r)  r;  r  r  )r8  r9  r  r.   r   r   r  rA  r~  r4  r/  )r/   r[   rW  rl  r#  r   r;  intro_ending_jsons           r0   rT  zBiliIntlIE._real_extract~	  s    $ 5 5c : : @ @gW\ ] ]	5#<C 	 $KuKKK !/ !' !' !-*,  !$$V,,  #0=NPn0o0oqu"v"v -l;LNj.k.kmq r r$ 
 #0=NPm0n0npt"u"u -l;LNi.j.jlp q q$ 	 (
**3)DD
 ((u#(>>//e/EE  $ 5 5h F F M
 
 
 	
r2   r   )r   N)r  r  r  rU  r/  rW  staticmethodrn  r  r  rD  rT  r@   r2   r0   rY  rY    s        OJ >+J%"#A"/ 
 %#  
 '$  
 
 : B JA"%# / 
 #!  
 %$  
 
 : B<J!
 
 n  >#%(AJ"  / 
 #!  
 %"  
 
4 4
9 B =A#%l n	
 	
 4
 $ B5A#g"%

 

  ? 
 9  :  = SMF^ > > > \>
D D D:U U U U6  >
 
 
 
 
r2   rY  c            	       t    e Zd ZdZdZdddddg dd	ed
ddidddddg dded
ddddddddgZd Zd ZdS )BiliIntlSeriesIEzbiliIntl:serieszehttps?://(?:www\.)?bili(?:bili\.tv|intl\.com)/(?:[a-zA-Z]{2}/)?(?:play|media)/(?P<id>\d+)/?(?:[?#]|$)z%https://www.bilibili.tv/en/play/34613r   34613zTONIKAWA: Over the Moon For Your]  )zSlice of lifeComedyRomancer[  )re   r8  rx  
categoriesr  r  r  T)r[   r  r  r  z(https://www.bilibili.tv/en/media/10488371048837u   SPY×FAMILYrk  )	AdventureActionr  z.re:^https://pic\.bstarstatic\.com/ogv/.+\.jpg$r   r  z&https://www.biliintl.com/en/play/34613rF  z&https://www.biliintl.com/EN/play/34613c           	   #   L  K   |                      d| d|          }t          |dt                    D ]o}t          |d                   }|                     t          t                              ||          |                     |                    t          |          V  pd S )Nrv  rw  )rx  .rZ  .r  r  )	r  r   r   rl   r^  r   rY  rn  rE  )r/   r  series_jsonr  r  s        r0   r  zBiliIntlSeriesIE._entries	  s      nn%dI%d%d%dfopp#K1Scghhh 	' 	'GW\233J//+$$Z;;**733# # :' ' ' ' ' '	' 	'r2   c                    |                      |          }|                     d| d|                              d          pi }|                     |                     |          ||                    d          |                    d          t          |dt                    t          |                    d                    t          |                    d	                    
          S )Nz'/web/v2/ogv/play/season_info?season_id=rw  r  r8  rx  )styles.r8  r  horizontal_coverr  )r  r  r  )	r  r  r.   rB  r  r   r   r"   r   )r/   r[   r  series_infos       r0   rT  zBiliIntlSeriesIE._real_extract	  s    NN3''	nnNiNNNPY[ [[^[^_g[h[holn 	##MM)$$i1I1I;??[hKiKi#K1IYdeee!+//2D"E"EFFS^_j_n_nou_v_vSwSw $ y y 	yr2   N)	r  r  r  r  rU  r/  rW  r  rT  r@   r2   r0   r  r  	  s        GyJ66A@@@J
 
 T
  :"A;;;J
 
    8  8 9FB' ' 'y y y y yr2   r  c            	           e Zd ZdZdddddddd	d
dddddddgZddddddddddddddddddddddZ e e ee                              Z	d Z
d  Zd! Zd"S )#
BiliLiveIEz3https?://live\.bilibili\.com/(?:blanc/)?(?P<id>\d+)zhttps://live.bilibili.com/19633989u   周六杂谈回，其他时候随机游戏。 | 
录播：@下播型泛式录播组。 | 
直播通知群（全员禁言）：666906670，902092584，59971⑧481 （功能一样，别多加）r  u-   太空狼人杀联动，不被爆杀就算赢zYhttps://i0.hdslb.com/bfs/live/new_room_cover/e607bc1529057ef4b332e1026e62cf46984c314d.jpgiQ@eb)re   rx  rf   r8  r  rS  znot liver  zwhttps://live.bilibili.com/196?broadcast_type=0&is_room_feed=1?spm_id_from=333.999.space_home.strengthen_live_card.clickTrF  z#https://live.bilibili.com/blanc/196lowu   流畅)rk   r   high_resu   高清ultra_high_resu   超清blue_rayu   蓝光sourceu   原画4KrU   u   杜比)P         i  i'  i N  i0u  c                     |                      d| ||          }|                    d          dk    r$t          |                    d          pd          |                    d          pi S )Nzhttps://api.live.bilibili.com/r  rm  r   rL  r  r   )r   r.   r	   )r/   r  room_idr  
api_results        r0   r  zBiliLiveIE._call_api	  su    (()P$)P)PRYaf(gg
>>&!!Q&& 	!:!:!`>`aaa~~f%%++r2   c              #   V  K   |                     d          pg D ]}|                     d          |k    r|d         D ]i}|d          |d          |d          |                     d          |                     d          |                     |          d	| j        |         V  jd S )
Ncodec
current_qnurl_infohostrZ   extraformat_name
codec_name)r[   rf   rh   r5   )r.   _quality_FORMATS)r/   r
  r;   r  r  s        r0   _parse_formatszBiliLiveIE._parse_formats	  s      WWW%%+ 
	 
	Eyy&&",,!*-  &v.Vj0AV8GCTVV77=11#ii55#}}R00	 
 mB'    
	 
	r2   c                 8   |                      |          }|                     d|d|i          }|                    d          dk    rt          dd          g }| j        D ]`}|                     d|||d	d
dddd	d          }t          |d          pg D ]+}|                    |                     ||                     ,a||                    d          |                    d          |                    d          |                    d          |dd|idS )Nzroom/v1/Room/get_infore   live_statusr   zStreamer is not liveTr  z'xlive/web-room/v2/index/getRoomPlayInfoz0,1z0,20r  )r  r
  r  r{   mask
no_playurlr  r   )playurl_infor6  stream.r{   .r8  rx  
user_cover	live_timer'   )re   r8  rx  r  rS  rK   is_liver  )r  r  r.   r	   r  r   r   r  )r/   r[   r  	room_datarK   r
  stream_datar;   s           r0   rT  zBiliLiveIE._real_extract
  sW   ..%%NN#:GdG_UU	==''1,, !7$GGGG- 	= 	=B..)RT["!!!	^ 	^ 	 	K $K1jkkqoq = =t222s;;<<<<= ]]7++$==77"|44$553
 
 	
r2   N)r  r  r  rU  rW  r  r  r   r?  r  r  r  rT  r@   r2   r0   r  r  	  s#       GJ / `Dt#
 
   I  5 F(  99%h??+HEE%h??%h??!$77$X>> H |IIdd8nn5566H, , ,   
  
  
  
  
r2   r  )Mr  r  r   r?  r|  r  r	  r  r
  r   urllib.parser   r  r  r   r   dependenciesr   networking.exceptionsr   utilsr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r&   r  r_  r  r  r  r  r  r  r  r%  r3  r   rH  rl  r|  r  r  r  r  r1  r  r  r  r  rY  r  r  r@   r2   r0   <module>r     sI                				        6 6 6 6 6 6 6 6 % % % % % % - - - - - -                                                           @~ ~ ~ ~ ~] ~ ~ ~BN
 N
 N
 N
 N
 N
 N
 N
bu
 u
 u
 u
 u
 u
 u
 u
p5 5 5 5 5^ 5 5 5p2c 2c 2c 2c 2cn 2c 2c 2cj-K -K -K -K -K> -K -K -K`X X X X X+ X X X64 4 4 4 41 4 4 4n	$ 	$ 	$ 	$ 	$. 	$ 	$ 	$d= d= d= d= d=. d= d= d=N= = = = =. = = =D# # # # #1 # # # <I <I <I <I <I6 <I <I <I~9I 9I 9I 9I 9I2 9I 9I 9Ix/ / / / /5 / / /dO O O O O2 O O O,@Y @Y @Y @Y @Y0 @Y @Y @YFA_ A_ A_ A_ A_ A_ A_ A_H5V 5V 5V 5V 5V* 5V 5V 5Vp& & & & &- & & &C
 C
 C
 C
 C
) C
 C
 C
L$4 $4 $4 $4 $4. $4 $4 $4N7 7 7 7 7} 7 7 7&* &* &* &* &* &* &* &*RO9 O9 O9 O9 O9] O9 O9 O9dL
 L
 L
 L
 L
 L
 L
 L
^4y 4y 4y 4y 4y~ 4y 4y 4ynU
 U
 U
 U
 U
 U
 U
 U
 U
 U
r2   