
    V|h                     v    S SK Jr  SSKJrJrJrJrJrJrJ	r	   " S S\5      r
 " S S\
5      r " S S	\
5      rg
)   )InfoExtractor   )float_or_noneformat_fieldint_or_noneparse_codecsparse_qsstr_or_nonetraverse_objc                       \ rS rSrS rSrg)AcFunVideoBaseIE   c                 t   U R                  US   U5      n/ 0 pT[        US5       H  nU R                  US   USSS9u  pxUR                  U5        U R	                  XS9  U H  n	U	R                  [        UR                  S5      5      [        UR                  S	5      5      [        UR                  S
5      5      [        UR                  S5      5      S.[        UR                  SS5      5      E5        M     M     UUU[        UR                  S5      S5      [        UR                  S5      S5      SS0S.$ )N
ksPlayJson)adaptationSet    representationurlmp4Ffatal)target	frameRatewidthheight
avgBitrate)fpsr   r   tbrcodecs durationMillisi  
uploadTimeRefererzhttps://www.acfun.cn/)idformats	subtitlesduration	timestamphttp_headers)
_parse_jsonr   #_extract_m3u8_formats_and_subtitlesextend_merge_subtitlesupdater   getr   r   )
selfvideo_id
video_infoplayjsonr%   r&   videofmtssubsfs
             P/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/acfun.py_extract_metadata"AcFunVideoBaseIE._extract_metadata   s0   ##J|$<hG!(,RSEAA%,PXZ_glAmJDNN4 !!$!9(;)?@(7);<)%))H*=>(<)@A	
 #599Xr#:;  	 T "%jnn5E&FM$Z^^L%A4H&(?@
 	
     N)__name__
__module____qualname____firstlineno__r9   __static_attributes__r<   r;   r8   r   r      s    
r;   r   c                   n    \ 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./rS rSr	g)AcFunVideoIE)   z*https?://www\.acfun\.cn/v/ac(?P<id>[_\d]+)z!https://www.acfun.cn/v/ac3545707335457073r   g-e@ibu   1 8 岁 现 状u*   “赶紧回去！班主任查班了！”u
   锤子game51246077zre:^https?://.*\.(jpg|jpeg)20220628)r$   extr'   r(   titledescriptionuploaderuploader_id	thumbnailupload_date
like_count
view_countcomment_counttagsr   	info_dictz#https://www.acfun.cn/v/ac35468952_2
35468952_2uk   【动画剧集】Rocket & Groot Season 1（2022）/火箭浣熊与格鲁特第1季 P02 S01E02 十拿九穩gL7A`V@u   比令3725996720220629ibz$md5:67583aaf3a0f933bd606bc8a2d3ebb17)r$   rH   rI   r'   rK   rL   rN   r(   rR   rO   rP   rQ   rM   rJ   c                   ^	 U R                  U5      nU R                  X5      nU R                  SUSU5      nUR                  S5      nUR                  S5      =(       d    / n[	        US5      m	T	(       a=  [        U5      S:  a.  [        U	4S j[        U5       5       5      u  pxU SUS	 S
US    3n0 U R                  X$S   5      EUUR                  S5      UR                  S5      [	        US5      [	        US5      [	        US5      [        UR                  S5      5      [        UR                  S5      5      [        UR                  S5      5      S.	E$ )Nzwindow.videoInfo\s*=	videoInforI   	videoListcurrentVideoInfor$   r   c              3   L   >#    U  H  u  pUS    T:X  d  M  US-   U4v   M     g7f)r$   r   Nr<   .0idxvvideo_internal_ids      r8   	<genexpr>-AcFunVideoIE._real_extract.<locals>.<genexpr>]   s1      -1-B#T7// q!-Bs   $$z P02d r\   coverUrlrJ   )username)rh   href)tagList.ri   	viewCountlikeCountShowcommentCountShow)	rI   rM   rJ   rK   rL   rR   rP   rO   rQ   )
	_match_id_download_webpage_search_jsonr/   r   lennext	enumerater9   r   )
r0   r   r1   webpagejson_allrI   
video_listpart_idxpart_video_inforb   s
            @r8   _real_extractAcFunVideoIE._real_extractS   sM   >>#&((7$$%<g{T\]W%\\+.4"
(3MNZ1!4(, -1-6z-B-1 )1%H gR~Qw/G.HIE
$$X8J/KL
!j1#<<6$X/?@'2BC +CD%hll;&?@%hll?&CD(6H)IJ
 	
r;   r<   N)
r=   r>   r?   r@   
_VALID_URLintlist_TESTSrz   rA   r<   r;   r8   rC   rC   )   s    >J 3#&G$%7% 
( 5 C %%# 7A
%%FN
r;   rC   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./rS$ rS%rg&)'AcFunBangumiIEp   z0https?://www\.acfun\.cn/bangumi/(?P<id>aa[_\d]+)z9https://www.acfun.cn/bangumi/aa6002917_36188_1745457?ac=2aa6002917_36188_1745457__2r   u>   【7月】租借女友 水原千鹤角色曲『DATE』特别PV20200916iea_gW@)r$   rH   rI   rN   r(   r'   rS   z4https://www.acfun.cn/bangumi/aa5023171_36188_1750645aa5023171_36188_1750645u'   红孩儿之趴趴蛙寻石记 第5话 g     @u   红孩儿之趴趴蛙寻石记5023171r   z	Episode 5   20181223i9A\zre:^https?://.*\.(jpg|jpeg|png))r$   rH   rI   r'   season	season_idseason_numberepisodeepisode_numberrN   r(   rM   rQ   z4https://www.acfun.cn/bangumi/aa6065485_36188_1885061aa6065485_36188_1885061u0   叽歪老表（第二季） 第5话 坚不可摧u   叽歪老表（第二季）r   6065485u   坚不可摧20220324ib;bg㥛 @Z@)r$   rH   rI   r   r   r   r   r   rN   r(   r'   rM   rQ   c                   ^
^ U R                  U5      n[        U5      R                  SS /5      S   nU [        US S5       3nU R	                  X5      nU R                  SUSU5      nU(       a+  US   n0 U R                  X&5      ESUR                  S5      0E$ US   nUR                  S	5      m
T
=(       a8    [        U
4S
 j[        UR                  S5      =(       d    / S5       5       S5      nU R                  SUSUSS9n[        [        US5      5      mT=(       a8    [        U4S j[        UR                  S5      =(       d    / S5       5       S 5      n	0 U R                  X&5      EUR                  S5      UR                  S5      UR                  S5      [        T
5      UUR                  S5      U	[        UR                  S5      5      S.E$ )Nacz__%szwindow.bangumiData\s*=bangumiDatahlVideoInforI   r\   	bangumiIdc              3   Z   >#    U  H   u  pUR                  S 5      T:X  d  M  Uv   M"     g7f)r$   Nr/   )r_   r`   ra   r   s      r8   rc   /AcFunBangumiIE._real_extract.<locals>.<genexpr>   s,      ,)ZFCuuT{i' CZ   +	+relatedBangumisr   zwindow\.bangumiList\s*=bangumiListFr   r[   c              3   Z   >#    U  H   u  pUR                  S 5      T:X  d  M  Uv   M"     g7f)videoIdNr   r^   s      r8   rc   r      s.      56PFCuuY#44 CPr   items	showTitleimagebangumiTitlecommentCount)rI   rM   r   r   r   r   r   rQ   )ro   r	   r/   r   rp   rq   r9   rs   rt   r   r   r
   )r0   r   r1   ac_idxru   json_bangumi_datar2   r   json_bangumi_listr   r   rb   s             @@r8   rz   AcFunBangumiIE._real_extract   s   >>#&#""4$04ZVT6 BCD((7 --.GR_aij*=9J((>0 
 ''9:
%))+6	! -d ,)'(9(=(=>O(P(VTVXYZ,)*+'- !--&PU . W'5FHb(cd* =t 56'(9(=(=g(F(L"aP567;0=

$$X:

&**;7*..w7'++N;$Y/*(,,W5,():)>)>~)NO

 
	
r;   r<   N)	r=   r>   r?   r@   r|   r}   r   rz   rA   r<   r;   r8   r   r   p   s    DJ K.U%#

 F+>6""%#; 
$ F+G3"%%#; 
7,F\'
r;   r   N)commonr   utilsr   r   r   r   r	   r
   r   r   rC   r   r<   r;   r8   <module>r      sB    !  
} 
8D
# D
NX
% X
r;   