
    V|hn                    l   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
rS SKrSSKJrJr  SSKJr  SSKJr  SSKJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0   " S S	\5      r1 " S
 S\15      r2 " S S\15      r3 " S S\15      r4 " S S\15      r5 " S S\15      r6 " S S\65      r7 " S S\65      r8 " S S\15      r9 " S S\95      r: " S S\95      r; " S S\95      r< " S  S!\<5      r= " S" S#\<5      r> " S$ S%\<5      r? " S& S'\<5      r@ " S( S)\<5      rA " S* S+\5      rB " S, S-\5      rC " S. S/\5      rD " S0 S1\D5      rE " S2 S3\D5      rF " S4 S5\5      rG " S6 S7\5      rH " S8 S9\5      rI " S: S;\I5      rJ " S< S=\I5      rK " S> S?\5      rLg)@    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                       \ rS rSrSS0r\R                  " S5      rSr0 r	\
S 5       rS rS rS	 rS
 rSS jrS rSS jrS rS rS rS rSS jrSS jrSrg)BilibiliBaseIE1   Refererzhttps://www.bilibili.com/z-(\d+)\.m4s\?   c                 T    [        U R                  S5      R                  S5      5      $ )Nhttps://api.bilibili.comSESSDATA)bool_get_cookiesget)selfs    S/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/bilibili.pyis_logged_inBilibiliBaseIE.is_logged_in7   s$    D%%&@AEEjQRR    c                   ^ [        [        US5      5      m[        [        USU4S j45       Vs/ s H  n[        USSS5      PM     snSS06nU(       a&  U R                  S	U S
U R	                  5        35        g g s  snf )N.qualitysupport_formatsc                    > US   T;  $ Nr7    )_vparsed_qualitiess     r1   <lambda>7BilibiliBaseIE._check_missing_formats.<locals>.<lambda>@   s    )DT0Tr4   new_descriptiondisplay_descr7   delim, z
Format(s) zD are missing; you have to become a premium member to download them. )setr   r   	to_screen_login_hint)r0   	play_infoformatsfmtmissing_formatsr>   s        @r1   _check_missing_formats%BilibiliBaseIE._check_missing_formats;   s    |G5EFG'#I!#T0V W*XW /KW*X e `de NN_- .==A=M=M=O<PRS 	*Xs   A=c                 F  ^ ^^ [        USS 45       Vs0 s H  nUS   [        USS5      _M     snm[        USSSS	[        145      m[        US
5      nU(       a  TR                  U5        T Vs/ s H  n[        USSS5      [        [        USS5      5      [        US[        R
                  145      S[        UR                  S5      SS9[        UR                  S5      5      [        UR                  S5      5      S.PM     nnUR                  UUU 4S j[        US5       5       5        U(       a  T R                  X5        [        USS S[        14S[        SS914S[        14S.45      nU(       a  UR                  US   S   [        [        US5      5      S .[        U5      S!:  a  US"S#.O0 E[        US[        14S[        14SU4S$ j14S%[        SS914S&.5      E[        TR                  UR                  S5      5      5      E5        U$ s  snf s  snf )'Nr8   c                     US   $ r:   r;   r<   r=   s     r1   r?   0BilibiliBaseIE.extract_formats.<locals>.<lambda>I   s	    aPYlr4   r7   rA   rB   dash)Ndolbyaudio.)rR   flacrT   baseUrlbase_urlurlmimeType	mime_typecodecsnone	bandwidth  scalesizeid)rX   extacodecvcodectbrfilesize	format_idc              3     >#    U  GHJ  n[        US SS5      [        [        USS5      5      [        [        USS5      5      [        UR	                  S5      5      [        UR	                  S5      5      UR	                  S	5      T(       a  S
OSSSS.R	                  [        UR	                  S5      5      5      [        UR	                  S5      SS9[        UR	                  S5      5      [        UR	                  S5      5      [        USTR
                  R                  1S4S[        14SS9TR	                  UR	                  S5      5      S.v   GMM     g7f)rV   rW   rX   rY   rZ   	frameRate
frame_ratewidthheightr[   r\   NDVHDR10)~   }   rb   r]   r^   r_   ra   )rV   rW   r   Fget_all)rX   rc   fpsrl   rm   re   rd   dynamic_rangerf   rg   r7   rh   format)r   r   r   r   r/   _FORMAT_ID_REsearchr   ).0videoaudiosformat_namesr0   s     r1   	<genexpr>1BilibiliBaseIE.extract_formats.<locals>.<genexpr>Z   s#     H  Ge  y*eDUJ LM e[,!OP 7!34!%))H"56ii) &fD#'g6::;uyyQU;WX ;!7tD#EIIf$56"599T?3%/$2D2D2K2K1LaP}%u6 #&&uyy7
  Gs   EE)rR   rz   .durlc                     [        US   5      $ )NrX   r"   rP   s     r1   r?   rQ   o   s    +aPUhBWr4   length)rX   durationrg   r   ).rg   )rX   rg   r   http_dash_segments)	fragmentsprotocolc                 &   > TR                  U 5      $ Nr/   )xr|   s    r1   r?   rQ      s    ,:J:J1:Mr4   
timelength)r7   rh   format_noter   )r   dictappendr   strlowerr   r/   r   r   extendrL   r"   sumlenr   )	r0   rH   r
flac_audiorT   rI   r   r{   r|   s	   `      @@r1   extract_formatsBilibiliBaseIE.extract_formatsF   s\    ").?AZ-[\
\ iL,q*;^LL\

 i&/7CRVQW)XY!)-FG
MM*%  e  y*eDUJ LM"58cii[*AB ;!7tD#EIIf$56$UYYt_5
  	  	 H  $I/EF!H 	H$ ''	; V5WK=)!M$=#>?+/Z
 - 	
 NN |E*Y8I JK ^a' "+ 4 .0 y )K=9"+k]!;$-0M/N#O!-D0I/J K	+  #<#3#3IMM)4L#MN  {
s   H1BHc           	        ^ [         R                   " 5       U R                  R                  SS5      U R                  -   :  a  U R                  S   $ U R	                  SUSS9nSR                  [        USS	S
S 145      5      m/ SQnU R                  R                  SR                  U4S jU 5       5      S S [         R                   " 5       S.5        U R                  S   $ )Ntsr   keyz,https://api.bilibili.com/x/web-interface/navzDownloading wbi signnote datawbi_img)img_urlsub_urlc                 N    U R                  S5      S   R                  S5      S   $ )N/r   .r   )
rpartition	partitionr   s    r1   r?   -BilibiliBaseIE._get_wbi_key.<locals>.<lambda>   s"    q||C(+55c:1=r4   )@.   /      r   5                2   
      :      -   #      +      r'   !   	   *               '      &   )      %   0            7   (   =         r   r   <   3   r)            6      8   ;      ?   9   >      $      "   ,   4   c              3   .   >#    U  H
  nTU   v   M     g 7fr   r;   )ry   ilookups     r1   r}   .BilibiliBaseIE._get_wbi_key.<locals>.<genexpr>   s     @.?6!9.?s   r   )r   r   )time_wbi_key_cacher/   _WBI_KEY_CACHE_TIMEOUT_download_jsonjoinr   update)r0   video_idsession_datamixin_key_enc_tabr   s       @r1   _get_wbi_keyBilibiliBaseIE._get_wbi_key   s    99;,,00q9D<W<WWW&&u--**:HKa + c lI5=>5@ A B

 	""77@.?@@"E))+$
 	 ""5))r4   c                    [        [        R                  " 5       5      US'   [        UR                  5       5       VVs0 s H+  u  p4USR	                  [        S [        U5      5      5      _M-     nnn[        R                  R                  U5      n[        R                  " U U R                  U5       3R                  5       5      R                  5       US'   U$ s  snnf )Nwtsr   c                     U S;  $ )Nz!'()*r;   )chars    r1   r?   *BilibiliBaseIE._sign_wbi.<locals>.<lambda>   s	    4w+>r4   w_rid)roundr   sorteditemsr   filterr   urllibparse	urlencodehashlibmd5r   encode	hexdigest)r0   paramsr   kr=   querys         r1   	_sign_wbiBilibiliBaseIE._sign_wbi   s    diik*u v||~.
. rwwv>AGHH. 	 
 &&v.!++0A0A(0K/L&M&T&T&VWaacw
s   2CNc                     XSS.U=(       d    0 EnU R                   (       a  UR                  SS 5        UR                  S5      =n(       a	  SU SU 3nOSU 3nU R                  SUU R	                  XQ5      X7S	9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   )r2   popr/   r   r  )r0   r
  r  r  r  r  r  r   s           r1   _download_playinfo!BilibiliBaseIE._download_playinfo   s    TKekrKJJz4(D!!2!.rd)C5AD7u=D"";T... # LLRT 	Tr4   c           
          Sn[        UR                  S5      =(       d    / 5       H3  u  p4X#S-    S[        US   5       S[        US   5       SUS    S	3-  nM5     U$ )
Nr   bodyr   
from --> tocontent

)	enumerater/   r   )r0   	json_datasrt_dataidxlines        r1   json2srtBilibiliBaseIE.json2srt   sw    "9==#8#>B?IC!G9B24<@AG]^bcg^hGiFjjl O,D2 3H @ r4   c           
         SSSU S3S./0nU R                  SUU(       a  X2S.OXS.S	U 3U R                  S
9n[        US5      (       a!  U R                  SU R	                  5        3SS9  [        USSSS 45       HL  nUR                  US   / 5      R                  SU R                  U R                  US   U5      5      S.5        MN     U$ )Ndanmakuxmlzhttps://comment.bilibili.com/z.xmlrc   rX   (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                 $    US   =(       a    US   $ )Nsubtitle_urllanr;   rP   s     r1   r?   /BilibiliBaseIE._get_subtitles.<locals>.<lambda>   s    a>O>\TUV[T\>\r4   r2  srtr1  rc   r   )r   _HEADERSr   report_warningrG   
setdefaultr   r!  )r0   r   r  r)  r/  
video_infoss          r1   _get_subtitlesBilibiliBaseIE._get_subtitles   s
   6se4@ 
	 ((6.1#*7U,SE2DMM ) K
 
$CDD?@P@P@R?ST`d   fj
K1\+^ _A  52.55d&9&9!N:KX&VW7 _ r4   c           
          U=(       a)    U=(       a     U R                  SXUS.SSU R                  S9n[        USSSS	S
SS.45      =(       d    S $ )Nr'  r(  zExtracting chaptersF)r  r   fatalr  r   view_points.r  r  r  )title
start_timeend_time)r   r6  r   )r0   r)  r  chapterss       r1   _get_chaptersBilibiliBaseIE._get_chapters   ss     L3 L4#6#66WZC[&eT]] $7 $L Hv}c D
 '   		r4   c           
   #      #    [         R                  " S5       HY  n[        U R                  SU SU S3USU 3SS9S5      nU(       d    g [	        U R
                  U5       H  nU S h  vN   M     M[     g  N7f)	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   r>  )r   replies)	itertoolscountr   r   map_get_all_children)r0   r)  r  rG  childrens        r1   _get_commentsBilibiliBaseIE._get_comments   s     ??1%C"##=cU%uLvw >seDE $ S $	%G
  6 6@### A & $s   A'A9)A7*A9c              #   0  #    [        US5      [        US5      UR                  S5      [        US5      UR                  S5      UR                  S5      =(       d    SS.v   [        U R                  [        US	5      5       H  nU S h  vN   M     g  N	7f)
N)memberunamerP  midrpidr  messagectimeparentroot)author	author_idrb   text	timestamprX  )rG  .)r   r/   rJ  rK  )r0   replyrL  s      r1   rK   BilibiliBaseIE._get_all_children   s     "5*=>%e->?))F# (>?7+ii)3V
 	
 D22LHX4YZH [s   BB
B
Bc           
   #      #    U R                  SUSSU0SU0U R                  5       ES9n[        USSSS	 45       H7  nU R                  US
   [        [        UR                  S5      5      5      v   M9     g 7f)Nz/https://api.bilibili.com/pgc/web/season/sectionDownloading season info	season_idr(   )r   r  r  resultmain_sectionepisodesc                 6    [        US   5      =(       a    US   $ )N	share_urlrb   r   rP   s     r1   r?   :BilibiliBaseIE._get_episodes_from_season.<locals>.<lambda>   s    [;8DQtWDr4   rg  rb   )r   geo_verification_headersr   
url_resultBiliBiliBangumiIEr   r/   )r0   ss_idrX   season_infoentrys        r1   _get_episodes_from_season(BilibiliBaseIE._get_episodes_from_season   s     ))=u*;2FGt'D'D'FG * I
 "+.*D0F GE //%"46GUZU^U^_cUdIeffGs   A5A7c                 &  ^ U=(       d    0 nU R                  SUUTUS.ST 3S9nUR                  T0 5      R                  [        USSU4S jS[        14S	[
        14S
.4SS95        UT   R                  [        USS[        14SSSSSS[
        14S	[
        14S[        14S.4S.45      5        UT   UR                  UT   S	   0 5      T'   [        UTSS45       H.  nUS   U;  d  M  S	US	   0X7S   '   U R                  XX7S   US9  M0     U$ )Nz,https://api.bilibili.com/x/stein/edgeinfo_v2)graph_versionedge_idr
  zExtracting divisions from edge r  r   r   
story_listc                    > US   T:H  $ )Nrs  r;   )r<   r=   rs  s     r1   r?   /BilibiliBaseIE._get_divisions.<locals>.<lambda>	  s    AiL\cLcr4   r@  r  )r@  r  Frr   edges	questions.choicesrb   option)rs  r  r\  )r@  rz  rs  )	cid_edges)r   r8  r   r   r   r   _get_divisions)r0   r   rr  rx  rs  r|  division_datachoices       `   r1   r}  BilibiliBaseIE._get_divisions  s{   O	++:H$1gxX27)< , > 	"%,,?c!C5)}-f ) 	  	gl=6u%c9c ;-0}-!C5)D D
 ;  	 DI>	U7^E2B7@"57Is*CDFi -,16%=+AY'(##HU9DUaj#k E r4   c              #   J  #    [        U R                  SUSXS.US9SSS[        145      nU R                  XSS	U00S5      nUR	                  5        H  u  p'U R                  XUS
S0S9n0 UEU SU 3UR                  S5       S[        [        UR                  5       5      5      R                  S5       3U R                  U5      [        R                  " USS9 SUR                  SS5       3[        UR                  S5      SS9U R                  X5      S.Ev   M     g 7f)Nr'  zExtracting graph versionr*  r  r  r   interactionrr  r   r  r  r  r  r<   r@   - F)ensure_asciir  descriptionr   r   r^   r_   )rb   r@  rI   r  r   r/  )r   r   r   r}  r   r  r/   nextitervaluesr   jsondumpsr   extract_subtitles)	r0   r   r  metainfor  rr  r|  rx  rH   s	            r1   _get_interactive_entries'BilibiliBaseIE._get_interactive_entries  sF    $:H*82PZa   c ]Ok]C	E
 ''!eS\ARTUV	#//+JC//wWacdVe/fI!
!C5)$LL12#d4;O6P6T6TU\6]5^_//	:"&**U"G!H8<<XegiKjJkl))--*ETR!33HB  ,s   D!D#r;   NNr   )__name__
__module____qualname____firstlineno__r6  recompilerw   r   r   propertyr2   rL   r   r   r  r  r!  r;  rD  rM  rK  ro  r}  r  __static_attributes__r;   r4   r1   r&   r&   1   s    67HJJ/0MNS S	S>@*2T.
$
 	g8r4   r&   c                      \ rS rSrSrSSSSSSS	S
S\\SS\\S/S.S.SSSSSSSSSSS\\\\SS/S.SS0S .S!S"S#S$S%.S&S'S(SS)S*S+S
S,S-\\S.\S/S0S1/S2.0/S3S40S5.S6S7S(SS)S*S+S
S,S-\\S.\S/S0S1/S2.S8.S9SSSSS:SSS	S
S\\\\S/S;.SS0S<.S=S>0 S?S@_SAS_SBSC_SDSE_SFSG_SHSI_SJ\_SKSL_SMSN_SOSP_SQSR_SS\_ST\_SU\_SVS
_SWSX/_SS0S .SYSZS[SS\S]S^S_S`SaSb\\S
Sc/Sd.S8.SeSfSgSShSiSjSkSlSmSn\\S
So/Sd.S8.SpSqSrSsStSuSv\SwSx\\\\S
Sy/Sz.S{S|S}S~/000SS'SSSsSS.0/S.SSSSSSSSSSS\\\\S
S/S.S8.SSSSSSS\SSS\\\S
S/S.SS'SSSSSS\SSS\\\S
S/S.0/S.SSSSSSSSSSSSSSSSSS.S8.SSSSSSSSSSSSSSSSSS.S8.SS0 S?S_SAS_SBS_SJ\_SHS_SMS_SFS_SKS_SDS_SOS_SS\_ST\_SU\_SVS
_SS_SWS/_SS0SS.SSSSS.SS.SSSSS.SS.SSSSS.SS.SSSS./rS r	Sr
g)
BiliBiliIEi2  zthttps?://(?: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)rb   r@  rc   r  uploader_iduploader	thumbnailr   tagscomment_countupload_dater]  
like_count
view_count_old_archive_idsrX   	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)rb   rc   r@  r  r  r   r  r]  r  r  r  r  r  r  r  skip_downloadT)r   rX   r  r  	Anthologyz+https://www.bilibili.com/video/BV1bK411W797BV1bK411W797u/   物语中的人物是如何吐槽自己的OP的rb   r@  r   r  BV1bK411W797_p1uR   物语中的人物是如何吐槽自己的OP的 p01 Staple Stable/战场原+羽川zcount:10ie^u   打牌还是打桩	15025998420200516z$md5:e3c401cf7bc363118d1783dd74068a68gjtV@zbilibili 498159642_part1)rb   rc   r@  r  r]  r  r  r  r  r  r  r  r  r   r  playlist_items2)r   rX   r  playlist_countplaylistr  zSpecific page of Anthologyz/https://www.bilibili.com/video/BV1bK411W797?p=1r   rX   r  z)https://www.bilibili.com/video/av8903802/z$md5:3b1b9e25b78da4ef87e9b548b88ee76arb   rc   r@  r  r  r]  r  r  r  r   r  r  r  r  r  rX   r  r  zvideo has chapterz,https://www.bilibili.com/video/BV1vL411G7N7/rb   BV1vL411G7N7rc   r@  u.   如何为你的B站视频添加进度条分段r]  iRmar  20211018r  z$md5:a9a3d6702b3a94518d419b2e9c320a6dr  r  u   爱喝咖啡的当麻r   g`"@r  1680903rC  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)rb   rc   r@  r]  r  r  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)rb   r@  r]  r  r  r   r  r  r  r  r  r  r  r  extractor_argsbilibiliprefer_multi_flv32r   BV1ms411Q7vw_p4_0flvgʡx@)rb   rc   r@  r   )r   rX   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)rb   rc   r@  r]  r  r  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)rb   r@  r]  r  r  r  r  r   r  r  r  r  r  r  r   BV1af4y1H7ga_400950101u\   【互动游戏】花了大半年时间做的自我介绍~请查收！！ - 听见猫猫叫~z$md5:db66ac7a2813a94b8291dbce990cc5b2g(\5'@rb   rc   r@  r]  r  r  r  r  r   r  r  r  r  r  r  )r   rX   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)$)rb   r@  rc   series	series_idseasonrb  season_numberepisode
episode_idepisode_numberr   r]  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)rb   r@  rc   r   r  r  r  r  rb  r  r  r  r]  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   rX   r  r  skipz,https://www.bilibili.com/video/BV1jL41167ZG/BV1jL41167ZGu`   一场大火引发的离奇死亡！古典推理经典短篇集《不可能犯罪诊断书》！)rb   r@  rc   zsupporter-only videorX   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   rX   only_matchingc                   ^ ^^^  T R                  U5      R                  SS5      u  m nT R                  5       nT R                  UT US9u  pET R                  UR                  5      (       d  T R                  UR                  5      $ XS'   T R                  SUST S S9nU(       d  T R                  SUS	T 0 S9R                  S
5      (       a
  [        SSS9eSS0nUR                  5       nUS:X  a	  UT -   US'   OUS:X  a  T US'   T R                  ST SST R                  UT 5      US9n[        USSS[        145      n	U	(       a0  [        R                  U	5      (       a  T R                  U	[        5      $ [        S5      e[        US5      S:X  a  T R!                  5         [        US5      S:X  a
  [        SSS9eS U;  n
U
(       a  US!   nOUS    nUS   UR                  S"5      sm nU
(       + =(       a$    [        T R                  S#T S$T S%S&.S'US(9S["        S)9=(       d    / n[%        U5      S*:  n['        [)        U5      R                  S+S /5      S,   5      nU(       a9  U(       d2  T R+                  T T 5      (       a  T R-                  UT U[.        U 4S- jS.9$ U(       a.  U=(       d    S*nUS/US0 S1[        XS*-
  S245      =(       d    S3 3-  nUR                  S5      n[1        US S4U=(       d    S* 35      nU(       a  [        US5US*-
  S645      OUR                  S65      n0 nU
(       a'  [        US7S!S8[2        14S9S:[&        14S;U 4S< jS=4S>.S$S?9n0 [        US@SASB[2        14S SCS:[&        14SDS SE[        14SF.5      EUE[        USGSH[&        14SI[&        14SCSJ[&        14SK.S$S?9ET  [1        US SL5       3U(       a  [5        T U5      /OS USU0SM.En[        USN5      nU(       aI  T R6                  " T R9                  T UUUS940 UD[        US SO[&        145      T R;                  U5      SP.D6$ S nT R<                  (       a$  [        T R                  SQUSRT S S9S[>        145      nU(       d  T RA                  T UUSSS*0ST9nT RC                  U5      mUR                  SU5      (       a|  [        USVSWSX[>        145      =(       d    0 n[E        S"SYUSZS[9 S\T RG                  5        3nT(       d  [        S]U 3SS9eS^[        US_S`[H        145      ;   a  T RK                  SaU 3T Sb9  [        USc5      (       Gd  U4Sd jm[        USeU4Sf j[L        145       HC  nTRO                  [        T RC                  T RA                  T UUSgU0ST95      U4Sh j5      5        ME     T RQ                  UT5        [        TSi 5      nU(       a  [%        U5      [%        T5      :  a{  T RS                  Sj5      (       dB  SkRU                  Sl U 5       5      n[        TSm 5      mU(       a  T RW                  SnU So35        O#[        TU 4Sp j5      =(       d    [Y        USq Sr9/m[        TSs5      (       a  0 UESt[[        TSu   Sv   5       VVs/ s He  u  nnUS    SwU 3US"   USx   0 UESyTSu   R                  Sy5      0E/USu:X  a  T R]                  T U5      OS USu:X  a  T R;                  U5      OS Sz.PMg     snn[_        UR                  S{5      S|S}9S~.E$ 0 UET[_        UR                  S{5      S|S}9T Ra                  UU5      T R]                  T U5      T R;                  U5      S.E$ s  snnf )Nrb   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	videoInfor@  z*https://api.bilibili.com/x/player/pagelistFjsonp)r
  r	  zExtracting videos in anthology)r>  r  r   r  expected_typer   pc                    > ST SU S    3$ )Nhttps://www.bilibili.com/video/z?p=pager;   )rn  r   s    r1   r?   *BiliBiliIE._real_extract.<locals>.<lambda>  s    'FxjPSTYZ`TaSb%cr4   )iegetterz p02d partr   z%s_partpagesr  )r  upNameupMidvideoStatuslikesectionEpisodesc                    > US   T:H  $ )Nr
  r;   r<   r=   r   s     r1   r?   r    s    ai8>Sr4   cover)r  r  r  r  rr   )upDatanamer   rS  stat)r  .tag_namepic)r  r  r  r  r  descpubdate)	viewCount)r"  viewr^  )r  r]  r  r  z_p%d)rb   r  r@  http_headers)rightsis_stein_gater   )r   __post_extractorzwindow\.__playinfo__\s*=z	play infor  r  is_upower_exclusiveelecFullInfo	show_info
high_level	sub_titleu   ，)	from_dictrC   z. z This is a supporter-only video: u   试看accept_description.zDThis is a supporter-only video, only the preview will be extracted: )r   rR   c                 "   > U [        TS5      ;   $ )Nr6   )r   )r   rI   s    r1   r?   r    s    qL:J$KKr4   accept_qualityc                    > T" U5      (       + $ r   r;   r<   r=   has_qns     r1   r?   r    s    RXYZR[mr4   r  c                 $   > T" US   5      (       + $ r:   r;   r7  s     r1   r?   r    s    VAiL%9!9r4   c                     US   $ Nr   r;   rP   s     r1   r?   r    s    Q{^r4   r  rD   c              3   l   #    U  H*  oR                  S 5       SUR                  S5       S3v   M,     g7f)r    (rh   )Nr   )ry   fs     r1   r}   +BiliBiliIE._real_extract.<locals>.<genexpr>  s4      -_R]Q55/01553E2FaHR]s   24c                 .    UR                  S5      (       + $ r;  r   rP   s     r1   r?   r    s    QUU;EWAWr4   z$Dropping incompatible flv format(s) zZ since mp4 is available. To extract flv, pass --extractor-args "bilibili:prefer_multi_flv"c                 J   > US   [        TR                  S5      S   5      :H  $ )Nr7   r  r   )int_configuration_arg)r<   r=   r0   s     r1   r?   r  "  s%    a	lc$BYBYZlBmnoBp>q.qr4   c                     U S   $ r:   r;   r   s    r1   r?   r  #  s    9r4   )r   )r   r   multi_videor   r   r<   r)  rh   )rb   r@  r)  rI   r/  r,  r   r^   r_   )_typeentriesr   )rI   r   rC  r/  r,  )1_match_valid_urlgroupri  _download_webpage_handlerX   rj  _search_jsonr/   r	   upperr   r  r   r"   rk  suitableraise_login_requiredlistr   r   r   _yes_playlistplaylist_from_matchesr  r   r   r   playlist_resultr  extract_commentsr2   r   r  r   r   rG   r   r7  rC  r   rL   rD  r   rF   maxr  r  r   rD  )!r0   rX   r  r  webpageurlhinitial_stater  detailnew_urlis_festival
video_datar@  page_list_jsonis_anthologypart_idr)  old_video_idr  festival_infor  is_interactiverH   r0  msgr  flv_formatsdropped_fmtsr  fragmentrI   r8  r   s!   `                             @@@r1   _real_extractBiliBiliIE._real_extract  s   005;;D(K&//155c8W5U$$TXX..??488,, 	))*JGUdfnx|)}  !<gvxac dhhituu$%Xcghh'E\\^F~ & 1f4'e((JH2<`nnUH5w ) HF #6FFN[M+Z[G,55g>>w0ABB !BCC'<=E%%''<=E OY]_ _ "6&{3J&{3J$V,jnnW.E% */ (l<hHw#G5w   H $/( /
 -/ 	 >*Q.hsm//dV<R@AD,>,>x,R,R--%Jc . e e lGr'#a^PQkSYEZ([(a_a'bccEnnU##CA/GHIPl:1e'DEV`VdVdejVk(3 +W{mD,f{mD/1SU\]	9
 M
=. (%+?*FF[MJ1)5;-@+ 
 
 :%'+7>N"('K=!A	(
 
 J|GT6BCDIU|!D E[_&,%
* &j2MN''--hXw-W=[c=%mk:P[}5]^!%!6!6s!;= =
 	$!!"=wU]gk!l$ "I //#wWacdVe/fI&&y1>>/00%mnkS_bfag5hiomoJ"7K:UZ[\\^_c_o_o_q^rsC$'Gu%MX\]]<	4H#PSu3UVV##Z[^Z_`% $ ' Iv..KF"9/?A[^a]b.cd|(()@)@3X_hlnpgq)@)rs9 ; < e ''	7;&w0KLKs;/#g,>../ABB#'99 -_R]-_ $_L*74WXG#B<. Q` `a +!q H k/EFG 
 !122& (1K1H'I
K (Jmc8 &d^,AcU3%g.$,^$<!"!#WQZ^^K%@!   KNQR(!7!7#!FX\FIQh(=(=c(BTX
 (J
K *)--*ETR "

%immL&AN**34//#> $ 5 5c :
 	

Ks   <A,]
r;   N)r  r  r  r  
_VALID_URLrP  rC  float_TESTSrg  r  r;   r4   r1   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
r4   r  c                       \ rS rSrSrSSSSSSS	S
SSSSSSSSS.S.SSSSSSSSS
SSSSSSSSS.S .S!S"SS#S$S%S&S'S(S"S'S)S*S+S,SS.S-S..S/S0S1SS#S$S%S&S'S2S1S3S4S5S6S7SS.S ./rS8 rS9rg:);rk  iC  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  rb   rc   r  r  r  rb  r  r  r  r  r@  r   r]  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                   ^^^ U R                  U5      mU R                  5       nU R                  UTUS9nSU;   a  [        S5      eSU;   a  U R	                  S5        XS'   U R                  SUSTS	S S
9=(       d    U R                  STSSTS.US9nUR                  S5      nSU;   a  US   nSU;   a  US   nUc  UR                  S5      nSU;   a  US   n[        USS SS[        1[        45      nUS:H  n[        US[        145      =(       d    0 nU R                  U5      n	U	(       d<  U(       a  U R                  5         O$U(       d  SU;   d  SU;   a  U R	                  S5        [        US[        S 145      (       a"  U R                  SU R                  5        35        U R                  STS S!T0US9S   n
[!        U4S" j[#        [        U
S#S$[        145      S%5       5       S%0 45      u  mnU
R                  S&5      mT=(       a)    [!        U4S' j[#        [        U
S(5      5       5       S)5      u  pUR                  S*5      nTU	S+.[        U
S,S-[$        14S,S.[&        14S/[(        14S0.5      E[        US1[$        14S2[*        1U4S3 j14S4[*        14S5 1S6.5      ET['        U5      ['        T5      U[-        UR                  S75      S8S99U R/                  TUR                  S:5      US;9U R1                  U5      SU0S<.E$ )=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_idr  coderawr   rc  pluginsc                     US   S:H  $ )Nr!  AreaLimitPanelr;   rP   s     r1   r?   1BiliBiliBangumiIE._real_extract.<locals>.<lambda>  s    AfI1A$Ar4   configis_blocki]r9  u   成为大会员抢先看u   开通大会员观看))
play_checkplay_detailplay_video_typec                     U S;   $ )N)PLAY_PREVIEWpreviewr;   r   s    r1   r?   r    s
    1 ;;r4   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 detailsr  c              3   n   >#    U  H*  u  p[        UR                  S 5      5      T:X  d  M%  X4v   M,     g7f)rb   N)r   r/   )ry   r  epr  s      r1   r}   2BiliBiliBangumiIE._real_extract.<locals>.<genexpr>  s9      -8&]'#266$<(J6 SI &]s   $5
5)re  )section.re  .r   rb  c              3      >#    U  H4  u  pUR                  S 5      T:X  d  M  US-   UR                  S5      4v   M6     g7f)rb  r   season_titleNr   )ry   r  erb  s      r1   r}   r    sC      :
<>uu[!Y. -S1WaeeN+, <>s   ??)seasons.r  r)  )rb   rI   r  series_titler  square_cover)r  r  r  
long_titler@  c                    > U =(       d    T$ r   r;   )r   r  s    r1   r?   r    s    aFY>FYr4   pub_timec                 ,    U =(       a    [        SSSU S9$ )Nr@  r  r  rC   r2  r   r=   s    r1   r?   r    s    A$f-UXde*f$fr4   )r  r  r]  r@  r   r^   r_   r  r)  )r  r  rb  r  r   r/  r,  r)  )	_match_idri  _download_webpager
   rO  rL  r   r/   r   r-   anyr   r   raise_geo_restrictedr7  rG   r  r  r   r   r"   r   r   r  rT  )r0   rX   r  rV  rH   status_codegeo_blockedpremium_onlyr9  rI   bangumi_infoepisode_infor  r  r)  r  r  rb  s                  @@@r1   rg  BiliBiliBangumiIE._real_extract  s   ^^C(
//1((j'(J1W<$%?@@<G%%&NO 	 %w0Dj $  0 ! ""Dj$ej,Q # !	 	  mmF+I!%(IY!&)I#--/Ky !(+I"9A8ZZ^Y_ad/f g"f,!)lTF-CDJ
&&z2))+!;w!FJaelJl))*RS	 %
 ;<$> ? ? MMQM]M]M_L`bc **:JH]J' + ::BD (, -8%.|I3QUPVW0YZ[&]-8 ;<R(B$
 !$$[1	&/ 'D :
;D\+;<<>:
 	5# u% 
 <#^cU;&k]C,{m<* 
 <(3%0#*[M<Y;Z"[(;-8fg	* 
 %!,/$Y/*%jnn\&B$O//
L<L<LU<SY\/] $ 5 5c :&,+
 	
r4   r;   Nr  r  r  r  ri  rk  rg  r  r;   r4   r1   rk  rk  C  s   OJ @$!%! & #%<
( ,?-! O" `#%<
* @$! " #%<
" !'* ??$! %" & #%<
wOFba
r4   rk  c                   t    \ rS rSrSrSSSSS.SS	.S
SSSS.SSSSSSSSSSSSSSSSSS.0/SS0S ./rS! rS"rg#)$BiliBiliBangumiMediaIEi  z<https?://(?:www\.)?bilibili\.com/bangumi/media/md(?P<id>\d+)z1https://www.bilibili.com/bangumi/media/md2409789124097891zCAROLE & TUESDAYz$md5:42417ad33d1eaa1c93bfd2dd1626b829rb   r@  r  r   rX   r  playlist_mincountz.https://www.bilibili.com/bangumi/media/md1565/1565u   攻壳机动队 S.A.C. 2nd GIGz$md5:46cac00bafd645b97f4d6df616fc576dr   r  68540r  u   攻壳机动队1077ro  r   u   再启动 REEMBODYr   u   1 再启动 REEMBODYgSח@iT20150227r  rr  r  r  rX   r  r  r  r  c                     U R                  U5      nU R                  X5      nU R                  SUSU5      nUS   S   nU R                  " U R	                  XQ5      U40 [        USS[        14S[        14S.45      D6$ )Nr  rX  	mediaInforb  r@  evaluater@  r  )r  r  rL  rS  ro  r   r   )r0   rX   media_idrV  rX  rl  s         r1   rg  $BiliBiliBangumiMediaIE._real_extract#  s    >>#&((7)),gRk*;7##**56=;!C5) *SE29 +  	r4   r;   Nr  r;   r4   r1   r  r    s    PJB'A

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

 +#%#!"/%"#/$')@
 & $S)7$FLr4   r  c                   t    \ rS rSrSrSSSSS.SS	.S
SSSS.SSSSSSSSSSSSSSSSSS.0/SS0S./rS rS rg!)"BiliBiliBangumiSeasonIEi3  z?(?x)https?://(?:www\.)?bilibili\.com/bangumi/play/ss(?P<id>\d+)z-https://www.bilibili.com/bangumi/play/ss26801rz  rx  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  rr  r  r  r  c                     U R                  U5      nU R                  X5      n[        U R                  SUSU5      SSS[        14S[        14S.4SS	9nU R
                  " U R                  X!5      U40 UD6$ )
Nz-<script[^>]+type="application/ld\+json"[^>]*>infoitemListElement.r!  r  r  Frr   )r  r  r   rL  r   rS  ro  )r0   rX   rl  rV  r  s        r1   rg  %BiliBiliBangumiSeasonIE._real_extract[  s    s#((4NPWY_afg 3% -u5&   ##D$B$B5$NPUbYabbr4   r;   Nr  r;   r4   r1   r  r  3  s    SJ>#A

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

 "##!""%"#"$')@
 & $S)7$FL
cr4   r  c                        \ rS rSrS rS rSrg)BilibiliCheeseBaseIEih  c                   ^ [        USU4S j4SS9nUS   US   pT[        US5      S:X  a
  [        S	S
S9e[        US5      (       d  U R                  S5        U R                  STXETSSS.U R                  SS9S   n[        T5      [        T5      U R                  U5      [        R                  5       [        R                  ST 3S.[        US[        14S 1S[        14S[        14S[        14S[        14S[        14S[        14S.5      E[        US S![        14S S"[
        14S#.5      EU R                  TXTS$9U R                  U5      U R                  S%.E$ )&Nre  c                 &   > US   [        T5      :H  $ )Nrb   )rC  )r<   r=   r  s     r1   r?   7BilibiliCheeseBaseIE._extract_episode.<locals>.<lambda>k  s    QtWE
%:r4   Frr   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  r  r  fourkzDownloading playinfor  r   z'https://www.bilibili.com/cheese/play/ep)rb   r  rI   extractor_key	extractorwebpage_urlr@  c                 ,    U =(       a    [        SSSU S9$ )Nindexr@  r  r  r  r  s    r1   r?   r    s    A$c-PUab*c$cr4   r.  r   r  r  release_dateplay)r  r@  	alt_titler   r  r  r]  r  up_inforQ  rS  )r  r  r  )r/  r,  r)  )r   r	   rO  r   r6  r   r   BilibiliCheeseIEie_keyIE_NAMEr   r   r"   r  rT  )r0   rm  r  r  r)  r  rH   s     `    r1   _extract_episode%BilibiliCheeseBaseIE._extract_episodei  s   #K:2<EJL&U(;Sk2b8 !LW[\\L*55%%&`a''>URRSTMM(> ( @ AGH	 e$%e,++I6-446)11DUGL
 <#cU+cd(3%0'+7#*[M":%}5,{m<%}5	* 	
" ;&#7 )5;-@) #
* //s/D $ 5 5c : MM/
 	
r4   c                 L    U R                  SU SU 3UU R                  SS9S   $ )Nz.https://api.bilibili.com/pugv/view/web/season?=ra  )r  r   r   )r   r6  )r0   	query_keyr   s      r1   _download_season_info*BilibiliCheeseBaseIE._download_season_info  sB    ""<YKq
SU]MM(A # CCIK 	Kr4   r;   N)r  r  r  r  r  r  r  r;   r4   r1   r  r  h  s    '
RKr4   r  c                   H    \ rS rSrSrSSSSSSS	S
SSSSSS\S.S./rS rSrg)r  i  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  rb   rc   r@  r  r  r  r  r  r  r   r]  r  r  r  r  c                 h    U R                  U5      nU R                  U R                  SU5      U5      $ )Nr  )r  r  r  )r0   rX   r  s      r1   rg  BilibiliCheeseIE._real_extract  s1    s#$$T%?%?%OQVWWr4   r;   N)	r  r  r  r  ri  rC  rk  rg  r  r;   r4   r1   r  r    sK    NJ>*5#&("#%<
 F(Xr4   r  c                   x    \ rS rSrSrSSSSS.SS	S
SSSSSS	SSSSS\S.0/SS0S.SSSSS.SSS./rS rS rSr	g) BilibiliCheeseSeasonIEi  z: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rX   r  r  r  r   zpaid video in listrX   r  r  r  c              #   `   #    [        USS S45       H  nU R                  X5      v   M     g 7f)Nre  c                     US   $ )Nepisode_can_viewr;   rP   s     r1   r?   <BilibiliCheeseSeasonIE._get_cheese_entries.<locals>.<lambda>  s
    K]I^r4   rb   )r   r  )r0   rm  r  s      r1   _get_cheese_entries*BilibiliCheeseSeasonIE._get_cheese_entries  s1     !+
<^`d/efE'';; gs   ,.c           
          U R                  U5      nU R                  SU5      nU R                  " U R                  U5      U40 [	        US[
        14S[
        14S.5      D6$ )Nrb  r@  r.  r  )r  r  rS  r  r   r   )r0   rX   rb  rm  s       r1   rg  $BilibiliCheeseSeasonIE._real_extract  sm    NN3'	00iH##$$[19;!C5) *SE2)  	r4   r;   N)
r  r  r  r  ri  rC  rk  r  rg  r  r;   r4   r1   r  r    s    NJ<Y\
 .9'*,&"#')@!
 $ $S)36 =Y\

 $	5#FJ<	r4   r  c                       \ rS rSrS rSrg)BilibiliSpaceBaseIEi  c                 `   ^^^ T" S5      mU" T5      n[        UUU4S jUS   US   5      nXE4$ )Nr   c                 :   > T" U (       a  T" U 5      5      $ T5      $ r   r;   )r  
fetch_page
first_pageget_entriess    r1   r?   7BilibiliSpaceBaseIE._extract_playlist.<locals>.<lambda>  s    sJsOK
Kr4   
page_count	page_size)r   )r0   r  get_metadatar  metadata
paged_listr  s    ` `  @r1   _extract_playlist%BilibiliSpaceBaseIE._extract_playlist  s=    ]

+'K\"H[$9;
 ##r4   r;   N)r  r  r  r  r  r  r;   r4   r1   r  r    s    $r4   r  c                   l    \ rS rSrSrSSS0SS.SSS	0S
S.SSS0SSSSSSS\\\S.	0/SS0S./rS rSr	g)BilibiliSpaceVideoIEi  zShttps?://space\.bilibili\.com/(?P<id>\d+)(?P<video>(?:/upload)?/video)?/?(?:[?#]|$)z(https://space.bilibili.com/3985676/videorb   3985676   r  z*https://space.bilibili.com/313580179/video	313580179\   z(https://space.bilibili.com/3669403/video3669403r  r  3669403_3958082u   合集·直播回放r   u
   月路Yuel)	rG  rb   r@  r  r  r  r]  r  r  r  7r  c                    ^ ^^ T R                  T5      R                  SS5      u  mnU(       d  T R                  S5        UU U4S jnS nU 4S jnT R                  X4U5      u  pgT R	                  UT5      $ )Nrb   rz   z{A channel URL was given. Only the channel's videos will be downloaded. To download audios, add a "/upload/audio" to the URLc                   > ST[        [        T5      S5      =(       d    SSSU S-   SSS	S
[        R                  " SR	                  [
        R                  " [        R                  [
        R                  " SS5      S95      R                  5       5      S S R                  5       [        R                  " SR	                  [
        R                  " [        R                  [
        R                  " SS5      S95      R                  5       5      S S R                  5       SS.n TR                  STTR                  UT5      SU  3ST0S9nUS   nUS:X  a
  [        SSS9eUS:X  a
  [        SSS9eUS:w  a)  [        S U S!UR'                  S"5      =(       d    S# 35      eUS$   $ ! [         aI  n[        UR                   ["        5      (       a$  UR                   R$                  S:X  a
  [        SSS9ee S nAff = f)%Nr   )orderr   r&  truer  r   r)   r   i z[]r   @   )r  r      z0{"ds":[],"wh":[6093,6631,31],"of":[430,760,380]})keywordrS  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  r  ioz>Request is blocked by server (401), please wait and try later.iz#Request is rejected by server (352)zRequest failed (z): rV  zUnknown errorr   )r   r   base64	b64encoder   randomrz  string	printablerandintr  decoder   r  r	   
isinstancecauser   statusr/   )page_idxr  responser  r  playlist_idr0   rX   s        r1   r  6BilibiliSpaceVideoIE._real_extract.<locals>.fetch_page   s   "%hsm\BOi!'!l '#$..GGFNN6+;+;v~~bRT?UVW^^`bbeceggmgmgo$*$4$4GGFNN6+;+;v~~bRU?VWX__a%ccfdf%hhnhnhp RE$	..E{..<28*=	SVGW / Y #6*Kd"$T_ce e$$%JUYZZ!$'7}CU^H_HrcrGs%tuuF## " aggy11aggnn6K(Xcgi i	s   "(F# #
G6-AG11G6c                 X    U S   S   nU S   S   n[         R                  " X!-  5      US.$ )Nr  r"  rI  r  r	  )mathceil)	page_datar	  entry_counts      r1   r
  8BilibiliSpaceVideoIE._real_extract.<locals>.get_metadataG  s<    !&)$/I#F+G4K"ii(?@& r4   c           	   3     >#    [        U SSS[        145       Hn  n[        US5      S:X  a9  TR                  SUS    SUS	   S
    S3[        US    SUS	   S
    35      v   ML  TR                  SUS    3[        US   5      v   Mp     g 7f)NrP  vlist.)meta	attribute   https://space.bilibili.com/rS  z/lists/r@  rb   z?type=seasonr<   r  r
  )r   r   rj  BilibiliCollectionListIEr  r;  rn  r0   s     r1   r  7BilibiliSpaceVideoIE._real_extract.<locals>.get_entriesO  s     %i&'31OP'<=D//5eEl^75QW=Y]K^J__kl0U5\N!E&MRVDWCX2Y[ [ //,KERXM?*[]ginouivww Qs   B	B)rI  rJ  rF   r  rS  )	r0   rX   is_video_urlr  r
  r  r<   r  r5  s	   ``      @r1   rg  "BilibiliSpaceVideoIE._real_extract  su    $($9$9#$>$D$DT7$S!\NN R S%	$N		x ..zU##J<<r4   r;   N
r  r  r  r  ri  rC  r   rk  rg  r  r;   r4   r1   r  r    s    gJ9)
 ! <+
   :)
 #'/!(( " 

  $S)' FD@=r4   r  c                   0    \ rS rSrSrSSS0SS./rS rS	rg
)BilibiliSpaceAudioIEi]  z;https?://space\.bilibili\.com/(?P<id>\d+)/(?:upload/)?audioz1https://space.bilibili.com/313580179/upload/audiorb   r  r   r  c                    ^ ^ T R                  U5      mUU 4S jnS nU 4S jnT R                  X#U5      u  pVT R                  UT5      $ )Nc                 F   > TR                  STSU  3TU S-   SSSS.S9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   )r3  r5  r0   s    r1   r  6BilibiliSpaceAudioIE._real_extract.<locals>.fetch_pagej  sM    &&M{(
3)ARRS^ef ' h iop pr4   c                     U S   U S   S.$ )N	pageCountpageSizer8  r;   )r;  s    r1   r
  8BilibiliSpaceAudioIE._real_extract.<locals>.get_metadatap  s    '4&z2 r4   c              3      >#    U R                  S5      =(       d    /  H%  nTR                  SUS    3[        US   5      v   M'     g 7f)Nr   !https://www.bilibili.com/audio/aurb   )r/   rj  BilibiliAudioIErE  s     r1   r  7BilibiliSpaceAudioIE._real_extract.<locals>.get_entriesv  sI     "v.4"4oo(I%PT+&WYhjoptjuvv 5s   AA)r  r  rS  )r0   rX   r  r
  r  r<   r  r5  s   `      @r1   rg  "BilibiliSpaceAudioIE._real_extractg  sK    nnS)	p		w
 ..zU##J<<r4   r;   Nr  r;   r4   r1   rK  rK  ]  s*    OJB+
  F=r4   rK  c                   8   ^  \ rS rSrSS jrS rU 4S jrSrU =r$ )BilibiliSpaceListBaseIEi  c              #      #    [        U/ [        U[        [        [        [
        45      QSPUP[        1P75       H  nU R                  SU 3[        U5      v   M!     g 7f)N.r  )r   r$   r   bytesr   rE   rj  r  )r0   r;  	bvid_keys
ending_keyr
  s        r1   _get_entries$BilibiliSpaceListBaseIE._get_entries  s_      ,shy3tUXBY.Z,s\_,sak,snqmr,stD//$CD6"JJX\]] us   AAc                 N    U R                  SU 3USS9nU R                  SUSSS9$ )NrC  Fr>  u)   (?s)<title\b[^>]*>([^<]+)的个人空间-r  )r  _search_regex)r0   rO  r5  rV  s       r1   _get_uploader%BilibiliSpaceListBaseIE._get_uploader  s@    ((+Fse)Lkaf(g!!"NPWYckp!qqr4   c                 v   > [         TU ]  XU5      u  pEUR                  SS 5        UR                  SS 5        XE4$ )Nr  r	  )superr  r  )r0   r  r
  r  r  	page_list	__class__s         r1   r  )BilibiliSpaceListBaseIE._extract_playlist  s=    #g7
R]^\4([$'""r4   r;   )r
  )	r  r  r  r  rb  rg  r  r  __classcell__rl  s   @r1   r]  r]    s    ^r# #r4   r]  c            
       p   ^  \ rS rSrSS/rSSSSSS	\\S
S.SS.SSS.SSS./r\U 4S j5       r	S r
SrU =r$ )rD  i  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)rb   r@  r  r  r  r]  r  r  r   r  z0https://space.bilibili.com/2142762/lists/3662502TrX   r  zEhttps://space.bilibili.com/2142762/channel/collectiondetail?sid=57445c                 Z   > [         R                  U5      (       a  S$ [        TU ]  U5      $ )NF)BilibiliSeriesListIErN  rj  )clsrX   rl  s     r1   rN  !BilibiliCollectionListIE.suitable  s)    ,55c::uU@PQT@UUr4   c                    ^ ^^^^	 T R                  T5      R                  SS5      u  mm	T ST	 3mUUU U	U4S jnUUU 4S jnU 4S jnT R                  X#U5      u  pVT R                  " UT40 UD6$ )NrS  sidr<   c                 J   > TR                  STSU  3ST0TTU S-   SS.S9S   $ )	NzBhttps://api.bilibili.com/x/polymer/web-space/seasons_archives_listrN  r(   r   r)   )rS  rb  page_numr	  r   r  r  r   rQ  r3  rS  r5  r0   ry  rX   s    r1   r  :BilibiliCollectionListIE._real_extract.<locals>.fetch_page  sS    &&T$5hZ"@9VYJZ!A\^_ ' a bhi ir4   c                    > U S   S   nU S   S   n[         R                  " X!-  5      UTR                  TT5      S.[        U SS[        14SS[        14SS[
        14SS	[        14SS
[        14S.5      E$ )Nr  r	  totalr  r	  r  r@  r!  r  rS  ptimer  )r@  r  r  r]  r  )r9  r:  rg  r   r   r   r   r"   )r;  r	  r<  rS  r5  r0   s      r1   r
  <BilibiliCollectionListIE._real_extract.<locals>.get_metadata  s    !&)+6I#F+G4K"ii(?@& ..sK@ y$fse4$*MC5#A$*EK=#A"('K=!A"('K=!A+ 	 r4   c                 (   > TR                  U S5      $ Narchivesrb  r;  r0   s    r1   r  ;BilibiliCollectionListIE._real_extract.<locals>.get_entries      $$Y
;;r4   )rI  rJ  r  rS  )
r0   rX   r  r
  r  r  r  rS  r5  ry  s
   ``     @@@r1   rg  &BilibiliCollectionListIE._real_extract  sy    ((-33E5ASQsen	i 	i	 	<  $55jP[\##JHxHHr4   r;   )r  r  r  r  ri  rC  r   rk  classmethodrN  rg  r  rn  ro  s   @r1   rD  rD    s    bHJ
 N#@9&$o	
   B W!F* V VI Ir4   rD  c                   L    \ rS rSrSS/rSSSSSSS	S
\\S.	SS.SSS./rS rSr	g)ru  i  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)	rb   r@  r  r  r  r]  r  modified_timestampmodified_date  r  zMhttps://space.bilibili.com/1958703906/channel/seriesdetail?sid=547718&ctype=0Trs  c                   ^ ^^^^	^
 T R                  T5      R                  SS5      u  mm
T ST
 3m[        T R                  ST
 3TSS9SSS	[        14SSS
[        14SSS[
        14SSS[        14SSS[        14S.5      m	UUU U
U4S jnUUU	U 4S jnU 4S jnT R                  X#U5      u  pVT R                  " UT40 UD6$ )NrS  ry  r<   z3https://api.bilibili.com/x/series/series?series_id=Fre  r   r@  r!  r  rW  mtime)r@  r  r  r]  r  c                 J   > TR                  STSU  3ST0TTU S-   SS.S9S   $ )	Nz*https://api.bilibili.com/x/series/archivesrN  r(   r   r)   )rS  r  r!  r"  r|  r   rQ  r}  s    r1   r  6BilibiliSeriesListIE._real_extract.<locals>.fetch_page  sR    &&<$5hZ"@9VYJZ!8a<rR ' T U[\ \r4   c                    > U S   S   nU S   S   n[         R                  " X!-  5      UTR                  TT5      S.TE$ )Nr  ra   r  r  )r9  r:  rg  )r;  r	  r<  rS  r5  playlist_metar0   s      r1   r
  8BilibiliSeriesListIE._real_extract.<locals>.get_metadata  sW    !&)&1I#F+G4K"ii(?@& ..sK@  	 r4   c                 (   > TR                  U S5      $ r  r  r  s    r1   r  7BilibiliSeriesListIE._real_extract.<locals>.get_entries  r  r4   )	rI  rJ  r   r   r   r   r   r  rS  )r0   rX   r  r
  r  r  r  rS  r5  r  ry  s   ``     @@@@r1   rg  "BilibiliSeriesListIE._real_extract  s    ((-33E5ASQsen$T%8%8A#G\a &9 &
 ffse4"FMC5A"FEK=A &'K=A#)67[M"J
	\ 	\	 		<  $55jP[\##JHxHHr4   r;   NrI  r;   r4   r1   ru  ru    sZ    `lJ
 P%#)$'#%"% 

 ! _F&!Ir4   ru  c                   N    \ rS rSrSrSSSSSSS	S
\\S\\S.SS.SSS./rS rSr	g)BilibiliFavoritesListIEi
  zlhttps?://(?: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)rb   r@  r  r  r  r]  r  r  r  r  r  r  r   r  z6https://www.bilibili.com/medialist/detail/ml1103407912Trs  c                    U R                  U5      nU R                  SU S3USS9nUS   S:X  a  U R                  SS9  U R                  U R                  S	U 3US
S9S5      nU R                  " XB40 [        USSS[        14S[        14SS[        14SS[        14S[        14S[        14S[        14SS[        14SS[        14S.	45      D6$ )Nz9https://api.bilibili.com/x/v3/fav/resource/list?media_id=z&pn=1&ps=20zDownloading favlist metadatar   r  r  zAThis is a private favorites list. You need to log in as its ownerrc  z8https://api.bilibili.com/x/v3/fav/resource/ids?media_id=zDownload favlist entriesr   r  r@  introrM  r!  rS  rW  r  r  cnt_infor  thumb_up)	r@  r  r  r  r]  r  r  r  r  )
r  r   rO  rb  rS  r   r   r   r   r"   )r0   rX   fid	list_inforH  s        r1   rg  %BilibiliFavoritesListIE._real_extract"  s%   nnS!''GuKX4 ( 6	 V$%%*m%n##D$7$7FseL0 %8 %239; ##G 
LVU[u%#cU+ &3%0#U[M:!K=1#*[M":!K=1%v}=%zK=A
^
 
M 
5 
 
	r4   r;   NrI  r;   r4   r1   r  r  
  sZ     AJU(&"#%"% o
  !$ H#F,r4   r  c                   4    \ rS rSrSrSSSS.SSS	./rS
 rSrg)BilibiliWatchlaterIEi<  z7https?://(?:www\.)?bilibili\.com/watchlater/?(?:[?#]|$)z*https://www.bilibili.com/watchlater/#/listzre:\d+   稍后再看r  r   r  r  c                     [        U R                  U5      R                  S5      SS5      nU R                  SU5      nUS   S:X  a  U R	                  SS9  U R                  US	5      nU R                  XBS
S9$ )N
DedeUserIDvalue
watchlaterz<https://api.bilibili.com/x/v2/history/toview/web?jsonp=jsonpr  iz0You need to login to access your watchlater listr  )r   rP  r  r  )getattrr.   r/   r   rO  rb  rS  )r0   rX   list_idwatchlater_inforH  s        r1   rg  "BilibiliWatchlaterIE._real_extractH  s    $++C044\BG\Z--JGU6"d*%%*\%]##O5EF##G~#NNr4   r;   Nr  r;   r4   r1   r  r  <  s/    KJ;#
   FOr4   r  c                       \ rS rSrSrSSSSSSS	S
.SS.SSSSSSSSSSS\\\\S/S.SS0S.SSS0SSS.SS S!S"S#S$S%S&S'.S(S.S)SS 0S(SS.S*S+S,\\S-.S.S/S.S0SS10S.S2S./rS3 r	S4 r
S5rg6)7BilibiliPlaylistIEiR  zDhttps?://(?:www\.)?bilibili\.com/(?:medialist/play|list)/(?P<id>\w+)z3https://www.bilibili.com/list/1958703906?sid=5477185_547718r  r  r  r  r  )rb   r@  r  r  r]  r  r  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=1rb   zredirect urlr  z*https://www.bilibili.com/list/ml11034079123_1103407912r  r  r  r  r  r  )rb   r@  r  r  r]  r  r  r   z4https://www.bilibili.com/medialist/play/ml1103407912z(https://www.bilibili.com/list/watchlaterzre:2_\d+r  )rb   r@  r  r  r   r  z2https://www.bilibili.com/medialist/play/watchlaterr  zredirect url & login requiredc           
   #     #    [         R                  " S5       Ha  nU R                  SX!SUS    SU 3S9S   nU R                  USS	S
9 S h  vN   [	        US5      US'   UR                  SS5      (       a  Ma    g    g  N17f)Nr   z5https://api.bilibili.com/x/v2/medialist/resource/listzgetting playlist biz_idz page rt  r   
media_listbv_id)ra  )r  r  rb   oidhas_moreF)rH  rI  r   rb  r   r/   )r0   r  r  r{  r;  s        r1   _extract_medialist%BilibiliPlaylistIE._extract_medialist  s     !*H++G->uX>OvV^U_+` ,  I ((LW(UUU'	3KLE%L==U33 +
 Vs   ABA?(B:Bc                    U R                  U5      n[        [        U5      S5      nU R                  X#5      (       d  U R	                  SU 3[
        5      $ U R                  X5      nU R                  SUSU5      n[        US[        S [        45      nU(       a  US   S:w  aw  UR                  S	5      nUS
:X  a  US:X  a  U R                  S5        O(US:X  a  U R                  S5        OUS:X  a
  [        SSS9e[        SU SUR                  S5       35      eSSS.[        USS[        14SS[        14S[        14S[        14S[        1[        1[         R"                  14S.5      EnSUS    S US!    30[        US"S#[         14S$S%[         14S$S&[        14S'[        1[$        4S([&        14S).45      En	U R(                  " U R+                  X5      40 U	D6$ )*N)r
  r   r  r  r  )r  	listErrorc                     US   $ )Nr  r;   rP   s     r1   r?   2BilibiliPlaylistIE._real_extract.<locals>.<lambda>  s    WXY_W`r4   r     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  rV  r   F)r"  with_currentr  typerb   r#  	sortFiledr%  )r  r  r#  
sort_fieldr%  r<   r  mediaListInfor@  rM  r!  rS  rW  r  )r@  r  r  r]  r  )r  r   r   rQ  rj  r  r  rL  allr  r/   rO  r	   r   r   r   r   r   r   r"   rS  r  )
r0   rX   r  r
  rV  rX  r  
error_coder  r  s
             r1   rg   BilibiliPlaylistIE._real_extract  s   ..%HSM;7!!'00??%DTF#KZXX((6))*JGUdfmn]-CSJ`be,fgU6]c):.JT!g&=))*`at#))*fgu$$%FQUVV #>zl!EIIV_L`Ka!bcc !

 =#Vk];%tk];}-*[M:,+L+ 

 U6]O1U8_$56	
=?!C5)$fse4 '>%}f=%}5= + 	
 ##D$;$;E$KXxXXr4   r;   N)r  r  r  r  ri  rP  rC  r   rk  r  rg  r  r;   r4   r1   r  r  R  s)   XJD#$'#%
 ! e Y%#'$<  !; <
"  &'* t*
 ! < (&"#%o
   F.
   :#	
  
 DL)/	GHFT	)Yr4   r  c                   L    \ rS rSrSrSrSrSSSS.SS	S0S
./rS rS r	S r
Srg)BilibiliCategoryIEi  z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)rX   r  r  r  c           	   #      #    U R                  XX4S.SU SU 3S9n[        US[        S9nU(       d  [        SU 35      eU H-  nU R	                  SR                  US	   5      S
US	   5      v   M/     g 7f)N
Search_keyr!  Extracting results from page z of rt  )r   r  r
  z'Failed to retrieve video list for page z!https://www.bilibili.com/video/{}r
  BiliBili)r   r   rP  r	   rj  rv   )r0   api_url	num_pagesr  r{  parsed_json
video_listrz   s           r1   _fetch_pageBilibiliCategoryIE._fetch_page  s     ))"G0
$ykJ * L "+/CSWX
 #J8*!UVVE//3::5=I:W\]cWdf f  s   A2A4c           	      H   SSSSSSS.0nX;  a(  [        SU S	[        UR                  5       5       35      eX$U   ;  a*  [        S
U S[        XA   R                  5       5       35      eXA   U   nSU-  nU R                  XcUSS.S9n[	        US[
        S9n[        UR                  S5      5      [        UR                  S5      5      pU	b  U
(       d  [        S5      e[        R                  " X-  5      n[        [        R                  " U R                  XkU5      U
5      $ )Nkichikur   rp   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
  rI  ra   z-Failed to calculate either page count or size)r	   rP  keysr   r   r   r   r/   r9  r:  r   	functoolspartialr  )r0   categorysubcategoryr  rid_map	rid_valuer  	page_jsonr;  rI  ra   r  s               r1   _entriesBilibiliCategoryIE._entries  sj    #&
 " z)RSWX_XdXdXfSgRhik kh// ";-/mnrsz  tE  tJ  tJ  tL  oM  nN  OP P%k2	dgpp''UZ]>^'_	 ,<DQ	!)--"89;y}}U[G\;]t= !PQQIIel+	 !2!2g%"9:>@ 	@r4   c                     [         R                  R                  U5      R                  R	                  S5      SS u  p#U SU 3nU R                  U R                  X#U5      XD5      $ )Nr   r   r   : )r   r   urlparsepathsplitrS  r  )r0   rX   r  r  r  s        r1   rg   BilibiliCategoryIE._real_extract  s`     & 5 5c : ? ? E Ec J1Q O*B{m,##DMM($OQV^^r4   r;   N)r  r  r  r  r  _MAX_RESULTSri  rk  r  r  rg  r  r;   r4   r1   r  r    sM    +GLKJ7 #
  2

 
Ff@@_r4   r  c                   d    \ rS rSrSrSrSrSSSSS.S	S
SSSSS\SSS\\\SS/S.0/S./r	S r
Srg)BiliBiliSearchIEi  zBilibili video searchi 
bilisearchuX   bilisearch3:靡烟 出道一年，我怎么还在等你单推的女人睡觉后开播啊r   uL   靡烟 出道一年，我怎么还在等你单推的女人睡觉后开播啊r  r  BV1n44y1Q7scr  um   “出道一年，我怎么还在等你单推的女人睡觉后开播啊？”【一分钟了解靡烟miya】ic20221201z$md5:43343c0973defff527b5a4b403b4abf9r  gDl^@r  r  zbilibili 988222410_part1r  )rX   r  r  r  c              #     #    U R                  S5      R                  S5      (       d)  U R                  SS[        R                  " 5        S35        [
        R                  " S5       Hk  nU R                  SUSU 3UUUSS	SS
SS	SS.
S9S   R                  S5      nU(       d    g U H'  nU R                  US   S[        US   5      5      v   M)     Mm     g 7f)Nr+   buvid3z.bilibili.cominfocr   z4https://api.bilibili.com/x/web-interface/search/typer  r   r   r  rz   )
r  r  r  contextr   tids_2__refresh__search_typetids	highlightrP  r   rc  arcurlr  r)  )
r.   r/   _set_cookieuuiduuid4rH  rI  r   rj  r   )r0   r  r{  videosrz   s        r1   _search_results BiliBiliSearchIE._search_results9  s       !;<@@JJ_h4::<.8NO!*H((F4XJ?"'$$! ! #)#*!"H )   3x=  ooeHoz3uU|CTUU  # +s   CCr;   N)r  r  r  r  IE_DESCr  _SEARCH_KEYrP  rC  rk  r  r  r;   r4   r1   r  r    s{    %GLKi`c

 $ I')E(#+!$!!@%?$@
  F8Vr4   r  c                       \ rS rSrSS jrSrg)BilibiliAudioBaseIEiQ  Nc                 D    U(       d  SU0nU R                  SU-   X#S9S   $ )Nry  z3https://www.bilibili.com/audio/music-service-c/web/r  r   rQ  )r0   r  ry  r  s       r1   	_call_apiBilibiliAudioBaseIE._call_apiR  s9    CLE""ADH # $& 	&r4   r;   r   )r  r  r  r  r  r  r;   r4   r1   r  r  Q  s    &r4   r  c                   P    \ rS rSrSrSSSSSS\S	S
SSS0/0SSSS\S.S.rS rSrg)rY  iZ  z4https?://(?:www\.)?bilibili\.com/audio/au(?P<id>\d+)z(https://www.bilibili.com/audio/au1003142 fec4987014ec94ef9e666d4d158ad03b1003142m4au   【tsukimi】YELLOW / 神山羊tsukimiu   YELLOW的mp3版！   originrc   lrczre:^https?://.+\.jpgiE]20190803u   十六夜tsukimiつきみぐ)rb   rc   r@  artistr  r  r   r/  r  r]  r  r  r  )rX   r  r  c                    U R                  U5      nU R                  SU5      nUS   S   [        UR                  S5      5      SS./nU H&  nUR	                  S0 5      R                  SU05        M(     U R                  S	U5      nUS
   nUR                  S5      =(       d    0 nS n	UR                  S5      n
U
(       a  SSU
0/0n	UUUUR                  S5      [        UR                  S5      5      UR                  S5      [        UR                  S5      5      U	UR                  S5      [        UR                  S5      5      UR                  S5      [        UR                  S5      5      S.$ )NrX   cdnsr   ra   r\   )rX   rg   re   r)  r(   z	song/infor@  	statisticlyricr$  rZ  commentr  r   r  passtimerQ  r  )rb   r@  rI   r'  r  r  r   r/  r  r]  r  r  )r  r  r   r/   r8  r   )r0   rX   au_id	play_datarI   a_formatsongr@  r*  r/  r+  s              r1   rg  BilibiliAudioIE._real_extractt  sg   s#NN5%0	V$Q'#IMM&$9:
   H3::3<   
 ~~k51WHH[)/R		!5 I hhx((y)AB88G,#DHHZ$89"'*$TXXj%9:)%immF&;<
 	
r4   r;   N)	r  r  r  r  ri  rC  _TESTrg  r  r;   r4   r1   rY  rY  Z  s[    HJ916 /5 
 1#%6#
E0)
r4   rY  c                   2    \ rS rSrSrSSSSS.SS	.rS
 rSrg)BilibiliAudioAlbumIEi  z4https?://(?:www\.)?bilibili\.com/audio/am(?P<id>\d+)z&https://www.bilibili.com/audio/am1062410624u   新曲推荐u,   每天11:00更新，为你推送最新音乐r  r   )rX   r  r  c                    U R                  U5      nU R                  SX"SSS.5      S   n/ nU H]  n[        UR                  S5      5      nU(       d  M&  UR	                  U R                  SU-   [        R                  5       U5      5        M_     U(       aa  U R                  SU5      =(       d    0 nUR                  S	5      nU(       a.  U H  n	XS
'   M	     U R                  XBXR                  S5      5      $ U R                  XB5      $ )Nzsong/of-menur   d   )ry  r!  r"  r   rb   rX  z	menu/infor@  albumr  )	r  r  r   r/   r   rj  rY  r  rS  )
r0   rX   am_idsongsrH  r1  ry  
album_dataalbum_titlern  s
             r1   rg  "BilibiliAudioAlbumIE._real_extract  s    s#E#EGGMO Ddhhtn-CNN4??3c9&&(#/ 0	  U;ArJ$..1K$E%0'N %++K1HJ J ##G33r4   r;   Nr  r  r  r  ri  r3  rg  r  r;   r4   r1   r5  r5    s)    HJ7#I

 E4r4   r5  c                   (    \ rS rSrSrSSS.rS rSrg)	BiliBiliPlayerIEi  zAhttps?://player\.bilibili\.com/player\.html\?.*?\baid=(?P<id>\d+)zHhttp://player.bilibili.com/player.html?aid=92494333&cid=157926707&page=1Trs  c                 r    U R                  U5      nU R                  SU S3[        R                  5       US9$ )Nzhttp://www.bilibili.tv/video/avr   )r  r   )r  rj  r  r  )r0   rX   r   s      r1   rg  BiliBiliPlayerIE._real_extract  s@    >>#&-hZq9  "X  7 	7r4   r;   Nr?  r;   r4   r1   rA  rA    s    UJYE
7r4   rA  c                       \ rS rSrSrS0 SS_SS_SS	_S
\_SS/_SS_SS_SS_SS_S\_S\_SS_SS_SS_S\_S\_S./rS  rS!r	g")#BiliBiliDynamicIEi  zFhttps?://(?:t\.bilibili\.com|(?:www\.)?bilibili\.com/opus)/(?P<id>\d+)z)https://t.bilibili.com/998134289197432852rb   BV1TAmBYVEJrrc   r  r  
1192648858r  r  zbilibili 113457567568273_part1r  zLhttp://i2.hdslb.com/bfs/archive/50091efd965d9f13ff6814f7ad374f90ab21e77d.jpgr   gCl	@r  20241110r  u   何同学工作室r  r  r@  u>   美国小朋友就玩这个？！何同学工作室11月开箱r  up   本期产品信息：
机器狗
气味模拟器
Cloudboom Strike LS
无弦吉他
蓝牙磁带音箱
神奇画板r]  i 0gr  rC  r  c                 <   U R                  U5      nU R                  SUSU0SS0S9n[        USSSS	S
SS[        1[        U R
                  14
5      nU(       a*  U R                  U5      (       a  X R                  U5      :X  a
  [        SSS9eU R                  U5      $ )Nz8https://api.bilibili.com/x/polymer/web-dynamic/v1/detailrb   z
User-AgentzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36r  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_urlrN  r	   rj  )r0   rX   post_id	post_data	video_urls        r1   rg  BiliBiliDynamicIE._real_extract  s    ..%''F/  P, ( 	
 !FNI7GRsT-E-E,F-H I	 T]]955'^^T]E^:^ !;dKKy))r4   r;   N)
r  r  r  r  ri  rC  rP  rk  rg  r  r;   r4   r1   rE  rE    s    ZJ:
.
5
 <
 S	

 !A B
 g
 
 :
 ,
 #
 #
 U
   T
 
 D
  !
 F,*r4   rE  c                   \    \ rS rSrSrSrSS0rS rS rSSS	.S
 jr	SSS	.S jr
S rS rSrg)BiliIntlBaseIEi  z$https://api.bilibili.tv/intl/gatewaybiliintlr(   zhttps://www.bilibili.tv/c                 2   U R                   " U R                  U-   /UQ70 UD6nUR                  " S5      (       a  US   S;   a  U R                  5         OUS   S:X  a  U R	                  5         OUR                  " S5      (       a=  [        US   5      US   :w  a(  UR                  SS5       SU R                   SUS    3nOUR                  SS5      nUR                  S	5      (       a  [        U5      eU R                  U5        UR                  " S
5      $ )Nr  )i$ i% i^ i! rV  r   Unable to download JSON metadatar   said: r>  r   )	r   _API_URLr/   rO  r  r   r  r	   r7  )r0   endpointargskwargsr  errmsgs         r1   r  BiliIntlBaseIE._call_api  s   ""4==8#;MdMfM88FF|==))+f)))+88I&&3tF|+<Y+O &

96X YZZ\]a]i]i\jjqrv  xA  sB  rC  DF#ZZ	3UVF::g&&(00''/xxr4   c           
      ^    SR                  S [        [        USS 45      5       5       5      $ )Nr  c           	   3   |   #    U  H2  u  pUS -    S[        US   5       S[        US   5       SUS    3v   M4     g7f)r   r  r  r  r  r  N)r   )ry   r   r   s      r1   r}   *BiliIntlBaseIE.json2srt.<locals>.<genexpr>  s]      PO 1ugR.tF|<=UCYZ^_cZdCeBffhimnwixhyzOs   :<r  c                 <    US   =(       a    US   =(       a    US   $ )Nr  r  r  r;   )r<   ls     r1   r?   )BiliIntlBaseIE.json2srt.<locals>.<lambda>  s    Qy\%Kai%KAdG%Kr4   )r   r  r   )r0   r  s     r1   r!  BiliIntlBaseIE.json2srt  s@    {{ P$\$K9M &N OP P 	Pr4   Nr  r)  c                   U R                  SU=(       d    USSS[        SSUUS.5      S9=(       d    0 n0 n[        5       n[        US	S
[        145       GH  n[        USS[
        145       H  nXu;   a  M
  UR                  U5        [        U5      nUR                  S5      =(       d    Sn	US:X  a&  UR                  U	/ 5      R                  SUS.5        Ml  US:X  ak  U R                  Xq=(       d    USS[        USS5       SU	 S3SS9n
U
(       a5  UR                  U	/ 5      R                  SU R                  U
5      S.5        M  M  U R                  SU=(       d    U5        M     GM     U$ )Nz/web/v2/subtitleFzDownloading subtitles listz!Unable to download subtitles listr  en_US)r  s_localer  r)  )r>  r   r  r  )r/  video_subtitle.)Nassr4  rX   lang_keyenrr  r&  r  zDownloading subtitleslangz for %sr=  r>  zUnable to download subtitles)r>  r   r  r4  r5  zUnexpected subtitle extension)r  r   rE   r   r   r"   addr   r/   r8  r   r   r   r!  r7  )r0   r  r)  sub_jsonr/  fetched_urlssubrX   sub_extsub_langsub_datas              r1   r;  BiliIntlBaseIE._get_subtitles  s   >>E-7Z!##	  "    	 	u+JCRVQW*XYC#C*>})UV&  %',77:.6$e#((26==$"?  &#22\c4\#vy5Y4ZZ\]e\ffgh >  3  @H
  !,,Xr:AA#($(MM($;C    ''(GRUV1 W Z6 r4   c                2   U R                  SU=(       d    USS[        SUUS.5      S9nUS   n/ nUR                  S5      =(       d    /  H  nUR                  S	5      =(       d    0 nUR                  S
5      =(       d    0 nUR                  S5      (       d  MO  UR                  US   SUR                  S5      UR                  S5      UR                  S5      UR                  S5      SUR                  S5      UR                  S5      S.	5        M     UR                  S5      =(       d    /  Hc  nUR                  S5      (       d  M  UR                  US   SUR                  S5      UR                  S5      SUR                  S5      S.5        Me     U$ )Nz/web/playurlzDownloading video formatsz Unable to download video formatsr  )r  r  r)  )r   r  r  playurlrz   video_resourcestream_inforX   r  
desc_wordsrl   rm   r]   r\   r[   ra   )	rX   rc   r   rl   rm   vbrrd   re   rg   audio_resource)rX   rc   abrrd   re   rg   )r  r   r/   r   )	r0   r  r)  
video_jsonrI   vid	video_resr9  auds	            r1   _get_formatsBiliIntlBaseIE._get_formatsD  s|   ^^ELS/J6k!K ? $ 
  	*
>>'*0b0C 017RI/52J==''NN ')~~l;"w/#--1 }}[1 #--1%MM&1
 
 1  >>"239r9C775>>NN5zww{+''(+ GGFO  : r4   c                 .   UR                  S5      =(       d    UR                  S5      UR                  S5      UR                  S5      [        UR                  S5      5      [        U R                  SUR                  S5      =(       d    SSS S	95      S
.$ )Ntitle_displayr@  r%  r  formatted_pub_datez^E(\d+)(?:$| - )r   zepisode numberr  )r@  r  r  r]  r  )r/   r    r   rf  )r0   r\  s     r1   _parse_video_metadata$BiliIntlBaseIE._parse_video_metadatal  s    ^^O4O
w8O%>>&1#0*:>>:N+OP)$*<*<#Z^^O%D%JL\fj += +l m
 	
r4   c                 f   [         R                  (       d
  [        SSS9eU R                  SS SSS9S   n[         R                  R	                  US	   5      n[         R
                  R                  U5      R                  US
   U-   R                  5       5      nU R                  SS [        U[        R                  " U5      R                  S5      SSSS.5      SSS9nUR                  S5      (       a>  UR                  S5      (       a  [        SU R                   SUS    3SS9e[        S5      eg )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  ro  )usernamepasswordkeep_merp  	isTrustedz
Logging inzUnable to log in)r   r   r  r  rV  zUnable to log in: r_  )r   RSAr	   r   	importKey
PKCS1_v1_5newencryptr  r#   r)  r*  r/  r/   r  )r0   r  r  key_data
public_keypassword_hash
login_posts          r1   _perform_loginBiliIntlBaseIE._perform_loginv  s@   ~~ !JUYZZ&&SUY(2P ' RRXZ  ^^--huo>
"--11*=EExPVGWZbGbFjFjFlm((^`d#$",,];BB7K!##%  "+= ) ?
 >>&!!~~i(($'9$,,wzZcOdNe%fquvv$%788	 "r4   r;   )r  r  r  r  r`  _NETRC_MACHINEr6  r  r!  r;  r  r  r  r  r;   r4   r1   r[  r[    sF    5HN56H $P '+ 'R %)d &P
9r4   r[  c                   z   \ rS rSrSrSSSSSSS	S
SSSSSS.SSSS.SSSS./S.
S.SSSSSSSSSSSS SS.S S!SS.S"S#SS./S$.
S.S%S&SS'SS(S).S*S+.S,S-SS.S/S0S1S2S3S4\SS5SS.S5S6SS.S7S8SS./S9.S:S;0S<.S=S>SS?S@SASB\SCSD.S:S;0S<.SESFSSGSHSISJSKSLSMSN.	S.SOS;SP.SQS;SP.SRS;SP.SSS;SP./
r\S[SU j5       rSV r	S\SW jr
SX rSY rSZrgT)]
BiliIntlIEi  zzhttps?://(?: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>rA  rB  r@  gx&%d@Introg@g'1@Outro)
rb   rc   r@  r  r  r  r  r]  r  rC  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=
#@)
rb   rc   r@  r  r  r  r  r  r]  rC  z0https://www.bilibili.tv/en/play/1005144/1013179010131790z$E140 - Two Heartbeats: Kabuto's Trap   )rb   rc   r@  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     @)rb   rc   r]  r  r  r@  r  r  r  r  rC  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)rb   rc   r  r]  r  r@  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)	rb   rc   r@  r  r]  r  r  r  r  z-https://www.biliintl.com/en/play/34613/341736rs  z'https://bilibili.tv/en/video/2019955076z(https://www.bilibili.tv/video/2019955076z+https://www.bilibili.tv/EN/video/2019955076Nc                 *    U(       a  SU SU  3$ SU  3$ )Nz https://www.bilibili.tv/en/play/r   z!https://www.bilibili.tv/en/video/r;   )r   r  s     r1   	_make_urlBiliIntlIE._make_url!	  s%    5i[(LL28*==r4   c           
      b  ^ [        U0 5      u  pUR                  S5      (       a  U$ U R                  UT5      nU R                  SUST0 S9=(       d    U R	                  UTSSS S9n[        USS	S
[        S9=(       d    0 nU(       a5  U(       d.  U R                  SU S3T5      n[        USSSU4S j4[        SS9n[        U R                  U5      [        SU5      =(       d    U R                  SU5      [        SU5      =(       d    U R                  SU5      S.U R                  UT0 S95      $ )Nr@  z&window\.__INITIAL_(?:DATA|STATE)__\s*=zpreload stater  __initialStateF)r>  traverse)OgvVideoepDetail)UgcVideor  )ugcrO  r
  $/web/v2/ogv/play/episodes?season_id=&platform=websections.re  c                 &   > [        US   5      T:H  $ )Nr  )r   r  s     r1   r?   4BiliIntlIE._extract_video_metadata.<locals>.<lambda>8	  s    #ao:NRZ:Zr4   )r  rs   zbstar-meta__titlezog:titlezbstar-meta__desczog:descriptionr  )r!   r/   r  rL  _search_nuxt_datar   r   r  r   r  r   _html_search_meta_search_json_ld)	r0   rX   r   rb  smuggled_datarV  initial_datar\  season_jsons	     `      r1   _extract_video_metadata"BiliIntlIE._extract_video_metadata'	  sq   *33W%%  ((h7 GRackuwx g%%gx9IQVae%f 	 "24MOaquw }z| 	 Z..+OPY{Zg)hjrsK%kC-Z4!52J
 &&z2-'2 a595K5KJX_5`3& 1  f484J4JK[]d4e	5
 ##GXr#BD 	Dr4   c              #     #    U R                  SUSU SU 3SSUUS.S9n[        US5       H  n[        US	5      [        US
5      [        US5      [        US5      UR                  S5      [        UR                  S5      5      UR                  S5      [	        UR                  S5      5      S.v   M     [        US5      (       d$  U R                  XS   S   S   U5       S h  vN   g g  N7f)Nz(https://api.bilibili.tv/reply/web/detailzDownloading reply comment of r  r  r   )r  r"  rY  r  rP  r   rG  .rP  r!  rR  rP  facerU  rT  r  rX  
ctime_text)rZ  r[  author_thumbnailr\  rb   r  rX  r]  r   cursoris_endr   r  r  )r   r   r/   r   r    _get_comments_reply)r0   root_idnext_id
display_idcomment_api_raw_datarG  s         r1   r  BiliIntlIE._get_comments_replyD	  s    #226
0	WIF!	  3   $$8:RSG&w0BC)'3DE$0:L$M$W.DEkk&))'++l*CD!++h/.w{{</HI	 	 T 02NOO//f5h?GU U U PUs   C#C.%C,&C.c              #   v  #    [         R                  " S5       GH  nU R                  SUSUS-    3SUSUU(       a  SOSSS.S	9n[        US
5       H  n[        US5      [        US5      [        US5      [        US5      UR	                  S5      [        UR	                  S5      5      [        UR	                  S5      5      [        [        US5      5      S.v   UR	                  S5      (       d  M  U R                  UR	                  S5      US9 S h  vN   M     [        US5      (       d  GM    g    g  N!7f)Nr   z&https://api.bilibili.tv/reply/web/rootzDownloading comment page r   r  r   r   )r  r!  r"  r  r  	sort_typerP  r  r  rR  r  rU  rT  r  r  )rP  r  )rZ  r[  r  r\  rb   r  r]  author_is_uploaderrI  )r  r  )	rH  rI  r   r   r/   r   r    r-   r  )r0   r   r  r   r  rG  s         r1   rM  BiliIntlIE._get_comments_	  s4    #A#'#6#68(0Q8 %#!&AA!" $7 
$  ((<>VW*74FG!-g7H!I(4W>P(Q(2HI!++f-"-gkk,.G"H!27;;|3L!M*.|GEW/X*Y	 	 ;;w''#77F8KX`7aaa X 02NOO9 $2 bs   C-D93"D9D7D92D9c                 6   U R                  U5      R                  SSS5      u  p#nU=(       d    UnS nU(       a  U R                  SU S3USS9=(       d    0 nUR                  S5      (       a\  [	        [        US	5      S
5      [	        [        US5      S
5      SS.[	        [        US5      S
5      [	        [        US5      S
5      SS./nSU0U R                  XU5      EU R                  X4S9U R                  X4S9UU R                  XS5      U R                  S.E$ )Nrb  r  r)  z$/web/v2/ogv/play/episode?episode_id=r  Fre  r  )r  opening_start_timer^   )r  opening_end_timer  r  )r  ending_start_time)r  ending_end_timer  rb   rm  )rI   r/  rC  r,  r)  )rI  rJ  r  r/   r   r   r  r  r  rT  r6  )r0   rX   rb  r  r)  r   rC  intro_ending_jsons           r1   rg  BiliIntlIE._real_extract~	  sL    $ 5 5c : @ @gW\ ]	#<C $6ug]K !/ !' !-*,  !$$V,, #0=NPn0oqu"v -l;LNj.kmq r$
 #0=NPm0npt"u -l;LNi.jlp q$	 (
**3)D
 ((u(>//e/E  $ 5 5h F MM
 	
r4   r;   r   )r   N)r  r  r  r  ri  rC  rk  staticmethodr  r  r  rM  rg  r  r;   r4   r1   r  r    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:U6>
r4   r  c            	       z    \ rS rSrSrSrSSSSS/ S	QS
\S.SS0S.SSSS/ SQS\S.SS.SSS.SSS./rS rS r	Sr
g)BiliIntlSeriesIEi	  z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  )rb   r@  r  
categoriesr  r  r  T)rX   r  r  r  z(https://www.bilibili.tv/en/media/10488371048837u   SPY×FAMILYr  )	AdventureActionr  z.re:^https://pic\.bstarstatic\.com/ogv/.+\.jpg$r   r  z&https://www.biliintl.com/en/play/34613rs  z&https://www.biliintl.com/EN/play/34613c           	   #   
  #    U R                  SU S3U5      n[        US[        S9 HV  n[        US   5      nU R	                  [        [        R                  XA5      U R                  U5      5      [        U5      v   MX     g 7f)Nr  r  )r  .re  .r
  r  )	r  r   r   r   rj  r   r  r  r  )r0   r  series_jsonr  r  s        r1   r  BiliIntlSeriesIE._entries	  s     nn'KI;Vc%dfop#K1ScghGW\23J//+$$Z;**73# :' ' is   BBc                 |   U R                  U5      nU R                  SU S3U5      R                  S5      =(       d    0 nU R                  U R	                  U5      X#R                  S5      UR                  S5      [        US[        S9[        UR                  S5      5      [        UR                  S	5      5      S
9$ )Nz'/web/v2/ogv/play/season_info?season_id=r  r  r@  r  )styles.r@  r
  horizontal_coverr(  )r  r  r  )	r  r  r/   rS  r  r   r   r"   r   )r0   rX   r  series_infos       r1   rg  BiliIntlSeriesIE._real_extract	  s    NN3'	nn5i[NPY[[^[^_g[holn 	##MM)$i1I;??[hKi#K1IYde!+//2D"EFS^_j_n_nou_vSw $ y 	yr4   r;   N)r  r  r  r  r  ri  rC  rk  r  rg  r  r;   r4   r1   r  r  	  s    GyJ66A@J
 T
 :"A;J
   8 89FB'yr4   r  c            	           \ rS rSrSrSSSSSSS	S
.SS.SSS.SSS./rSSS.SSS.SSS.SSS.SSS.SSS.SSS.S.r\" \" \	" \5      5      5      r
S  rS! rS" rS#rg$)%
BiliLiveIEi	  z3https?://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)rb   r  rc   r@  r  r]  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.clickTrs  z#https://live.bilibili.com/blanc/196lowu   流畅)rh   r   high_resu   高清ultra_high_resu   超清blue_rayu   蓝光sourceu   原画4KrS   u   杜比)P         i  i'  i N  i0u  c                     U R                  SU 3X#S9nUR                  S5      S:w  a#  [        UR                  S5      =(       d    S5      eUR                  S5      =(       d    0 $ )Nzhttps://api.live.bilibili.com/r  r  r   rV  r^  r   )r   r/   r	   )r0   r  room_idr  
api_results        r1   r  BiliLiveIE._call_api	  s_    ((+I$)PRY(g
>>&!Q& 	!:!`>`aa~~f%++r4   c              #   <  #    UR                  S5      =(       d    /  Hz  nUR                  S5      U:w  a  M  US    HW  nUS    US    US    3UR                  S5      UR                  S5      U R                  U5      S	.U R                  U   Ev   MY     M|     g 7f)
Ncodec
current_qnurl_infohostrW   extraformat_name
codec_name)rX   rc   re   r7   )r/   _quality_FORMATS)r0   r  rJ   r  r  s        r1   _parse_formatsBiliLiveIE._parse_formats	  s     WWW%++Eyy&",!*-&v./j0A/B8GCTBUV77=1#ii5#}}R0	
 mmB'  . ,s   BBc                    U R                  U5      nU R                  SUSU05      nUR                  S5      S:X  a
  [        SSS9e/ nU R                   H[  nU R                  SUUUS	S
SSSS	S.5      n[        US5      =(       d    /  H#  nUR                  U R                  XW5      5        M%     M]     UUR                  S5      UR                  S5      UR                  S5      WR                  S5      USSU0S.$ )Nzroom/v1/Room/get_inforb   live_statusr   zStreamer is not liveTr  z'xlive/web-room/v2/index/getRoomPlayInfoz0,1z0,20r  )r
  r  r  rv   mask
no_playurlr  r   )playurl_infor  stream.rv   .r@  r  
user_cover	live_timer(   )rb   r@  r  r  r]  rI   is_liver)  )r  r  r/   r	   r  r   r   r  )r0   rX   r
  	room_datarI   r  stream_datarJ   s           r1   rg  BiliLiveIE._real_extract
  s   ..%NN#:GdG_U	=='1, !7$GG--B..)RT["!!!	^ 	K $K1jkqoqqt222;< r   ]]7+$==7"|4$53
 	
r4   r;   N)r  r  r  r  ri  rk  r  r  r   rP  r  r  r  rg  r  r;   r4   r1   r  r  	  s    GJ / `Dt#
  I 5F(  9%h?+HE%h?%h?!$7$X>H Id8n56H, 
r4   r  )Mr)  r  r   rH  r  r9  r+  r  r,  r   urllib.parser   r  rS  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  rk  r  r  r  r  r  r  r  rK  r]  rD  ru  r  r  r  r  r  r  rY  r5  rA  rE  r[  r  r  r  r;   r4   r1   <module>r*     s          	     6 % -       @~] ~BN
 N
bu
 u
p5^ 5p2cn 2cj-K> -K`X+ X641 4n	$. 	$d=. d=N=. =D#1 # <I6 <I~9I2 9Ix/5 /dO2 O,@Y0 @YFA_ A_H5V* 5Vp&- &C
) C
L$4. $4N7} 7&* &*RO9] O9dL
 L
^4y~ 4ynU
 U
r4   