
    VGh6                         d dl Z d dlZd dlZd dlZd dlZd dlZddlmZ ddlm	Z	m
Z
 ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ  G d	 d
e      Z G d de      Z G d de      Z y)    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                   N    e Zd ZdZdZdZde dZe dZi ZdZ	dZ
d	d
dZdddZy)	ADNBaseIEz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__IE_DESC_NETRC_MACHINE_BASE_API_BASE_URL_PLAYER_BASE_URL_HEADERS_LOGIN_ERR_MESSAGE_RSA_KEY_POS_ALIGN_MAP_LINE_ALIGN_MAP     ]/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/adn.pyr   r      s[    )G.N(E%eWA.M'0H+ [HN
 Or0   r   c                   x    e Zd ZdZdddddddd	d
eedddedddddddddddddeeedeeeddgZd Zd Z	d Z
y)ADNIEz[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)r8   r9   rC   r=   r>   r<   rA   rB   r:   rD   rE   r?   r@   r;   )rF   rG   rH   c                    |sy | j                  ||dd      xs d}| j                  ||d      xs i j                  d      }|r%| j                  ||dddd| j                  z   i	      }|sy t	        t        t        j                  |d
d        t        j                  | j                  dz         t        j                  |d d
                   }| j                  |j                         d d      }|sy i }|j                         D ]z  \  }}	d}
|	D ]!  }t        |j                  d            t        |j                  d            |j                  d      |j                  d      |j                  d      f\  }}}}}|||u| j                  j                  |d      | j                  j                  |d      z   }|
t         j"                  dj%                  t'        |      t'        |      |dk7  rd|z  nd|j)                  dd      j)                  dd      j)                  dd            z   z  }
$ |dk(  rd}n|dk(  rd }|j+                  |g       j-                  d!t/        j0                  |	      d"d#|
d"g       } |S )$NzDownloading subtitles locationFfatalz{}locationzDownloading subtitles dataOriginzhttps://rO   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)r9   datassa)_download_webpage_parse_jsongetr'   r   r   base64	b64decodebinascii	unhexlify_Kdecodeitemsr   r-   r.   oslinesepformatr
   replace
setdefaultextendra   dumps)selfsub_urlvideo_idenc_subtitlessubtitle_locationdec_subtitlessubtitles_json	subtitlessub_langsubrc   currentr   r   rX   
line_alignposition_align	alignments                     r1   _get_subtitleszADNIE._get_subtitles]   s   ..X?u / N VQU 	!--mXU-SYWY^^_ij 22!8-Ih
TZZ0G%H 3 JM  $$9]23/0tww);;<]3B/0%2 3 ))-*>*>*@$e)T	+113 !	MHcKC  b!'++k":;!'++i"89KK'[)AKK0	@2<sD*n
 =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b 7"X%  2.55

38 7 7!	D r0   c                 z   	 | j                  | j                  dz   d d| j                  dt        |dd|d            xs i j	                  d      }|rd| | j
                  d	<   y y # t        $ r}d }t        |j                  t              r|j                  j                  d
k(  rl| j                  |j                  j                  j                         j                         d d      xs i }|j	                  d      xs |j	                  d      }| j                  |xs | j                         Y d }~y d }~ww xY w)Nzauthentication/loginz
Logging inFWeb)password
rememberMesourceusername)rO   rb   accessTokenzBearer Authorization  rN   messagecode)_download_jsonr(   r+   r   rf   r*   r	   
isinstancecauser   statusre   responsereadrl   report_warning)ru   r   r   access_tokener   resps          r1   _perform_loginz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' '	D:0C D55D:c                 f   | j                  |      j                  dd      \  }}|xs d| j                  d<   | j                  d| dz   }| j	                  |dz   |d| j                  	      d
   }|d   }|d   }|j                  d      s[t        |ddt        hf      }t        |      xs dt        j                         kD  rt        d| d      | j                  dd       | j	                  |j                  d      xs | j                  dz   |dd|d   id      d   }	t        |d       xs |d z   }
d!j                  t        j                  d"d#$            | _        t#        t%        j&                  | j                   |	d%      j)                               }d }t+        d&      D ]  }t-        t/        |d'            }| j0                  \  }}t3        t5        t7        |      ||            }t9        j:                  |      j=                         }	 | j	                  |
|d(d)|i| j                  d*d+d*d,d-.      } n t        d5      |j                  d6      xs i }|j                  d7      xs i }|j                  d8      xs i j                  d9      }|j                  d      xs i }|d:   }g }|j                  d;      xs i jO                         D ]  \  }}t?        |tP              s|jO                         D ]  \  }}| j	                  ||d<| d=| d>| j                  d?@      xs i }|j                  dA      }|sE| jS                  ||dBdC|d?D      } |dEk(  r| D ]  }!d|!dF<   	 n|dGk(  r| D ]  }!dH|!dF<   	 |jU                  |          |s| j                  dd       | j	                  | jV                  d| z   |dId?| j                  J      xs i j                  d      xs i }"|"j                  dK      xs i }#||tY        |j                  dL      xs |"j                  dL            |j                  dM      xs |j                  dM      || j[                  ||      |j                  dN      xs |"j                  dO      t]        |"j                  dP            |#j                  d:      t]        |"j                  dQ            t]        |j                  dR      xs |"j                  dR            t_        |"j                  dS            ta        |"j                  dT      xs |j                  dT            t]        |"j                  dU            dVS # t        $ r}t?        |j@                  tB              s||j@                  jD                  d/k(  rY d }~| jG                  |j@                  jH                  jK                         |      }|j                  d0      }|j@                  jD                  d1k(  r&|j                  d2      d3k(  r| jM                  |4       t        |      d }~ww xY w)WNlangr8   r^   X-Target-Distributionzvideo/r   configurationz'Downloading player config JSON metadatarS   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refreshTokenr0   )rS   rb   tokenc                     | d   d   S )Nr   rF   r/   )xs    r1   <lambda>z%ADNIE._real_extract.<locals>.<lambda>   s    qz%/@ r0   linkr[   0123456789abcdef   )k)r   tr      zDownloading links JSON metadatazX-Player-Tokentruefalser   )freeWithAdsadaptivewithMetadatar   rS   queryr   r   i  r   zplayer-bad-geolocation-country)msgzGiving up retryinglinksmetadatar|   allr:   	streamingzDownloading  z JSON metadataF)rS   rO   rP   r6   m3u8_native)m3u8_idrO   vflanguagevder`   z%Downloading additional video metadatarR   showsummaryimagesubtitlenameshortNumberrE   r=   releaseDateratingcommentsCount)r8   r:   r;   rD   formatsr|   rB   rC   r<   rA   r=   r>   r@   r?   )1_match_valid_urlgroupr*   r)   r   rf   r   strr   timer	   raise_login_requiredr   joinrandomchoicesrk   listra   rt   encoderangebytesr   r,   r   powr   rg   	b64encoderl   r   r   r   r   re   r   r   raise_geo_restrictedrm   dict_extract_m3u8_formatsrs   r(   r   extract_subtitlesr   r   r   )$ru   rF   r   rw   video_base_urlr   r   r   
start_dater   	links_urlr   
links_data_padded_messagenr   encrypted_messageauthorizationerrorr   metasrv   
video_infor:   r   	format_id	qualitiesqualityload_balancer_urlload_balancer_datam3u8_urlm3u8_formatsfr   r   s$                                       r1   _real_extractzADNIE._real_extract   s>   ..s399&$Gh15-...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  	7A"8GS#9:N==DAq -c-2OQRTU.V W",,->?FFHM.!00x)J(-U--U (.$+(."'		 1 	
 # 	7@ !!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 $) -(,*-%') -(,*-|,%-	-. %%&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G77>>S((()9)9)>)>)@(K))I.77>>S(UYYv->Bb-b--'-:$W--.s   )U	X0!5X+BX++X0N)r"   r#   r$   
_VALID_URLintfloatr   _TESTSr   r   r   r/   r0   r1   r3   r3   1   s    oJe10A%& #% 
  F'* g1&.  #
)(FT:xD*x
r0   r3   c                   *    e Zd ZdZddddddgZd Zy	)
ADNSeasonIEzfhttps?://(?: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)r8   r:   )rF   playlist_countrH   c           	           j                  |      j                  dd      \  xs d j                  d<    j                   j                   d dd j                        d	   }t        |d         } j                   j                   d
| d j                  ddd       fd} j                   |       ||j                  d            S )Nr   r8   r^   r   zshow/r   zDownloading show JSON metadatar   r   zvideo/show/zDownloading episode listascz-1)orderlimitr   c               3      K   t        dddt        hf      D ]*  } j                  t        dd| d      t        |        , y w)Nvideos.r8   z#https://animationdigitalnetwork.comr   r   )delim)r   r   
url_resultr   r3   )
episode_idepisodesr   ru   video_show_slugs    r1   entriesz*ADNSeasonIE._real_extract.<locals>.entriesC  sW     *8hTK=5YZ P
oom94#Zs'<=BJP PPs   AAr:   )r   r   r*   r   r(   r   playlist_resultrf   )ru   rF   r   show_idr
  r  r   r	  s   `    @@@r1   r   zADNSeasonIE._real_extract5  s     $ 5 5c : @ @ No15-.""!!"%'8:O,dmm # EEKM d4j/&&!!"+gY7&F ' 	P ##GIw8IJJr0   N)r"   r#   r$   r   r   r   r/   r0   r1   r   r   )  s*    zJP(
 FKr0   r   )!rg   ri   ra   rn   r   r   commonr   aesr   r   networking.exceptionsr   utilsr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   utils.traversalr   r   r3   r   r/   r0   r1   <module>r     sb       	   ! 4 -     + &u
I u
p K)  Kr0   