
    V|h6                         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  SSKJ	r	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  SSKJr   " S	 S
\5      r " S S\5      r " S S\5      r g)    N   )InfoExtractor   )aes_cbc_decrypt_bytesunpad_pkcs7)	HTTPError)ExtractorErrorass_subtitles_timecodebytes_to_longfloat_or_noneint_or_nonejoin_nonemptylong_to_bytesparse_iso8601pkcs1padstr_or_nonestrip_or_nonetry_getunified_strdateurlencode_postdata)traverse_objc                   V    \ rS rSrSrSrSrS\ S3r\ S3r0 r	Sr
S	rS
SS.rSSS.rSrg)	ADNBaseIE   zAnimation Digital Networkanimationdigitalnetworkzanimationdigitalnetwork.frzhttps://gw.api./zplayer/zUnable to log in)lE   J4XjDqK!E/&^x!& lL}?<dZ:O!3cUgK?> EYl*PLASAXrjnvt^|h#hGe\GE8=,v0sh	g\3
$BZ	 i  r      )startend      )middler    N)__name__
__module____qualname____firstlineno__IE_DESC_NETRC_MACHINE_BASE_API_BASE_URL_PLAYER_BASE_URL_HEADERS_LOGIN_ERR_MESSAGE_RSA_KEY_POS_ALIGN_MAP_LINE_ALIGN_MAP__static_attributes__r#       N/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/adn.pyr   r      s[    )G.N(E%eWA.M'0H+ [HN
 Or3   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./rS r	S r
S rSrg )!ADNIE1   z[https?://(?:www\.)?animationdigitalnetwork\.com/(?:(?P<lang>de)/)?video/[^/?#]+/(?P<id>\d+)zThttps://animationdigitalnetwork.com/video/558-fruits-basket/9841-episode-1-a-ce-soir 1c9ef066ceb302c86f80c2b3716152619841mp4zFruits Basket - Episode 1z$md5:14be2f72c3c96809b0ca424b0097d336zFruits Basketi  20190405r   u   À ce soir !zSeason 1)idexttitledescriptionseriesdurationrelease_datecomment_countaverage_ratingseason_numberepisodeepisode_number	thumbnailseasonz3Only available in French and German speaking Europe)urlmd5	info_dictskipzUhttps://animationdigitalnetwork.com/de/video/973-the-eminence-in-shadow/23550-folge-1 5c5651bf5791fa6fcd7906012b9d94e823550i  20231004zThe Eminence in Shadowr   zSeason 2)r<   r=   rG   rA   rB   r@   rE   rF   r>   rH   rI   rC   rD   r?   )rJ   rK   rL   c                 D   U(       d  g U R                  XSSS9=(       d    SnU R                  X2SS9=(       d    0 R                  S5      nU(       a!  U R                  XBSSSSU R                  -   0S	9nU(       d  g [	        [        [        R                  " US
S  5      [        R                  " U R                  S-   5      [        R                  " US S
 5      5      5      nU R                  UR                  5       S SS9nU(       d  g 0 nUR                  5        GH  u  pSn
U	 GH%  n[        UR                  S5      5      [        UR                  S5      5      UR                  S5      UR                  S5      UR                  S5      4u  ppnUb  Ub  Uc  Mw  U R                  R                  US5      U R                  R                  US5      -   nU
[         R"                  SR%                  ['        U5      ['        U5      US:w  a  SU-  OSUR)                  SS5      R)                  SS5      R)                  SS5      5      -   -  n
GM(     US:X  a  SnOUS:X  a  S nUR+                  U/ 5      R-                  S![.        R0                  " U	5      S".S#U
S"./5        GM     U$ )$NzDownloading subtitles locationFfatalz{}locationzDownloading subtitles dataOriginzhttps://rS   headers   7fac1178830cfe0ca~  [Script Info]
ScriptType:V4.00
[V4 Styles]
Format: Name,Fontname,Fontsize,PrimaryColour,SecondaryColour,TertiaryColour,BackColour,Bold,Italic,BorderStyle,Outline,Shadow,Alignment,MarginL,MarginR,MarginV,AlphaLevel,Encoding
Style: Default,Arial,18,16777215,16777215,16777215,0,-1,0,1,1,0,2,20,20,20,0,0
[Events]
Format: Marked,Start,End,Style,Name,MarginL,MarginR,MarginV,Effect,Text	startTimeendTimetext	lineAlignpositionAlignr   r   z-Dialogue: Marked=0,{},{},Default,,0,0,0,,{}{}z{\a%d} 
z\Nz<i>z{\i1}z</i>z{\i0}vostffrvostdedejson)r=   datassa)_download_webpage_parse_jsongetr*   r   r   base64	b64decodebinascii	unhexlify_Kdecodeitemsr   r0   r1   oslinesepformatr
   replace
setdefaultextendre   dumps)selfsub_urlvideo_idenc_subtitlessubtitle_locationdec_subtitlessubtitles_json	subtitlessub_langsubrg   currentr   r   r\   
line_alignposition_align	alignments                     r4   _get_subtitlesADNIE._get_subtitles]   s   ..?u / N VQU 	!--mU-SYWY^^_ij 22!-Ih
TZZ0G%H 3 JM  $$9]23/0tww);;<]3B/0%2 3 ))-*>*>*@$e)T	+113MHKC !'++k":;!'++i"89KK'[)AKK0	@2<Dn
 =CK4< //33NAFI]I]IaIablnoIpp	rzz$S$Z$Z*51*3/-6!^I	)LLu-55eXFNNvW_`	%b b b  7"X%  2.55

38 7 7 4D r3   c                     U R                  U R                  S-   S SU R                  S[        USSUS.5      S9=(       d    0 R	                  S5      nU(       a  SU 3U R
                  S	'   g g ! [         a  nS n[        UR                  [        5      (       a  UR                  R                  S
:X  as  U R                  UR                  R                  R                  5       R                  5       S SS9=(       d    0 nUR	                  S5      =(       d    UR	                  S5      nU R                  U=(       d    U R                  5         S nAg S nAff = f)Nzauthentication/loginz
Logging inFWeb)password
rememberMesourceusername)rS   rf   accessTokenzBearer Authorization  rR   messagecode)_download_jsonr+   r.   r   rj   r-   r	   
isinstancecauser   statusri   responsereadrp   report_warning)ry   r   r   access_tokener   resps          r4   _perform_loginADNIE._perform_login   s=   	D //""%;;Td55U' ("'# (	)  0   33}-  3:<.1Io.  	DG!''9--!''..C2G''GG$$))+224d% ( I OLN ((9-A&1A B4+B+BCC	Ds   A*A. .
E8CEEc                 4   U R                  U5      R                  SS5      u  p#U=(       d    SU R                  S'   U R                  SU S3-   nU R	                  US-   USU R                  S	9S
   nUS   nUS   nUR                  S5      (       d\  [        USS[        145      n[        U5      =(       d    S[        R                  " 5       :  a  [        SU 3SS9eU R                  SSS9  U R	                  UR                  S5      =(       d    U R                  S-   USSUS   0SS9S   n	[        US 5      =(       d    US -   n
S!R                  [        R                  " S"S#S$95      U l        [#        [$        R&                  " U R                   U	S%.5      R)                  5       5      nS n[+        S&5       H  n[-        [/        US'5      5      nU R0                  u  nn[3        [5        [7        U5      UU5      5      n[8        R:                  " U5      R=                  5       n U R	                  XS(S)U0U R                  ES*S+S*S,S-.S.9n  O   [        S55      eUR                  S65      =(       d    0 nUR                  S75      =(       d    0 nUR                  S85      =(       d    0 R                  S95      nUR                  S5      =(       d    0 nUS:   n/ nUR                  S;5      =(       d    0 RO                  5        H  u  nn[?        U[P        5      (       d  M  URO                  5        H  u  nnU R	                  UUS<U S=U S>3U R                  S?S@9=(       d    0 nUR                  SA5      nU(       d  MM  U RS                  UUSBSCUS?SD9n USE:X  a  U  H  n!SU!SF'   M
     OUSG:X  a  U  H  n!SHU!SF'   M
     URU                  U 5        M     M     U(       d  U R                  SSS9  U R	                  U RV                  SU 3-   USIS?U R                  SJ9=(       d    0 R                  S5      =(       d    0 n"U"R                  SK5      =(       d    0 n#UU[Y        UR                  SL5      =(       d    U"R                  SL5      5      UR                  SM5      =(       d    UR                  SM5      UU R[                  UU5      UR                  SN5      =(       d    U"R                  SO5      []        U"R                  SP5      5      U#R                  S:5      []        U"R                  SQ5      5      []        UR                  SR5      =(       d    U"R                  SR5      5      [_        U"R                  SS5      5      [a        U"R                  ST5      =(       d    UR                  ST5      5      []        U"R                  SU5      5      SV.$ ! [         a  n[?        UR@                  [B        5      (       d  UeUR@                  RD                  S/:X  a   S nAGMN  U RG                  UR@                  RH                  RK                  5       U5      nUR                  S05      nUR@                  RD                  S1:X  a$  UR                  S25      S3:X  a  U RM                  US49  [        U5      eS nAff = f)WNlangr<   rb   X-Target-Distributionzvideo/r   configurationz'Downloading player config JSON metadatarW   playeroptionsuser	hasAccessvideo	startDater   z/This video is not available yet. Release date: T)expectedz"This video requires a subscriptionr   )methodrefreshTokenUrlzrefresh/tokenzDownloading access tokenzX-Player-Refresh-TokenrefreshTokenr3   )rW   rf   tokenc                     U S   S   $ )Nr   rJ   r#   )xs    r4   <lambda>%ADNIE._real_extract.<locals>.<lambda>   s    qz%/@r3   linkr_   0123456789abcdef   )k)r   tr      zDownloading links JSON metadatazX-Player-Tokentruefalser   )freeWithAdsadaptivewithMetadatar   rW   queryr   r   i  r   zplayer-bad-geolocation-country)msgzGiving up retryinglinksmetadatar   allr>   	streamingzDownloading  z JSON metadataF)rW   rS   rT   r:   m3u8_native)m3u8_idrS   vflanguagevderd   z%Downloading additional video metadatarV   showsummaryimagesubtitlenameshortNumberrI   rA   releaseDateratingcommentsCount)r<   r>   r?   rH   formatsr   rF   rG   r@   rE   rA   rB   rD   rC   )1_match_valid_urlgroupr-   r,   r   rj   r   strr   timer	   raise_login_requiredr   joinrandomchoicesro   listre   rx   encoderangebytesr   r/   r   powr   rk   	b64encoderp   r   r   r   r   ri   r   r   raise_geo_restrictedrq   dict_extract_m3u8_formatsrw   r+   r   extract_subtitlesr   r   r   )$ry   rJ   r   r{   video_base_urlr   r   r   
start_dater   	links_urlr   
links_data_padded_messagenr   encrypted_messageauthorizationerrorr   metasrz   
video_infor>   r   	format_id	qualitiesqualityload_balancer_urlload_balancer_datam3u8_urlm3u8_formatsfr   r   s$                                       r4   _real_extractADNIE._real_extract   s,   ..s399&$G15-...6(11EE$$_,h5MM % # $,- #vxx$$%gse/LMJj).Q$))+=$'VWaVb%cnrss%%&JS]%^##HH&'TD,A,AO,S0($~*>;	 $  !	" G%@A^nW]F]	''&..);rBCtzz#
  68 
qA"8GS#9:N==DAq -c-2OQRTU.V W",,->?FFHM.!00)J(-U--U (.$+(."'		 1 	
 # @ !!566w'-2z*0b99[)/R44U;^^G,2
g%*YY{%;%Ar$H$H$J Iyi...7oo.?**%)%8%8%x"9+Qwi~F MM	 &9 &! &' %'	 #
 .11*=#99h}%U  :  4 $)(,* *%')(,* *|,% /@ %K. %%&JS]%^$$6(!44h35$-- % Y _\^`c`cdk`lspr 	 yy &B (9)=)U9AUV#0GFJJw4G//Byy,A		&0A)%))M*BChhw'(8)<=#JNN:$>$W%))JBWX+EIIm,DE+EIIh,?,V599XCVW(?)CD
 	
m " .!!''955G77>>S((()9)9)>)>)@(K))I.77>>S(UYYv->Bb-b--'-:$W--.s   !%V88
Z;ZBZZ)ro   N)r$   r%   r&   r'   
_VALID_URLintfloatr   _TESTSr   r   r   r2   r#   r3   r4   r6   r6   1   s    oJe10A%& #% 
  F'* g1&.  #
)(FT:xD*x
r3   r6   c                   2    \ rS rSrSrSSSSS.S./rS	 rS
rg)ADNSeasonIEi)  zfhttps?://(?:www\.)?animationdigitalnetwork\.com/(?:(?P<lang>de)/)?video/(?P<id>\d+)[^/?#]*/?(?:$|[#?])z?https://animationdigitalnetwork.com/video/911-tokyo-mew-mew-new   911zTokyo Mew Mew New)r<   r>   )rJ   playlist_countrL   c           	        ^ ^^^ T R                  U5      R                  SS5      u  mmT=(       d    ST R                  S'   T R                  T R                   ST S3TST R                  S9S	   n[        US   5      nT R                  T R                   S
U 3TST R                  SSS.S9mUUU U4S jnT R                  U" 5       X2R                  S5      5      $ )Nr   r<   rb   r   zshow/r   zDownloading show JSON metadatar   r   zvideo/show/zDownloading episode listascz-1)orderlimitr   c               3      >#    [        TSSS[        145       H(  n TR                  [        STSTU SS9[        U 5      v   M*     g 7f)Nvideos.r<   z#https://animationdigitalnetwork.comr   r   )delim)r   r   
url_resultr   r6   )
episode_idepisodesr   ry   video_show_slugs    r4   entries*ADNSeasonIE._real_extract.<locals>.entriesC  sP     *8hTK=5YZ
oom94#Zs'<=BJP P [s   AAr>   )r   r   r-   r   r+   r   playlist_resultrj   )ry   rJ   r   show_idr  r  r   r  s   `    @@@r4   r   ADNSeasonIE._real_extract5  s     $ 5 5c : @ @ No15-.""!!"%'8:O,dmm # EEKM d4j/&&!!"+gY7&F ' 	P 	P ##GIw8IJJr3   r#   N)r$   r%   r&   r'   r   r  r   r2   r#   r3   r4   r  r  )  s*    zJP(
 FKr3   r  )!rk   rm   re   rr   r   r   commonr   aesr   r   networking.exceptionsr   utilsr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   utils.traversalr   r   r6   r  r#   r3   r4   <module>r     sb       	   ! 4 -     + &u
I u
p K)  Kr3   