Ë
    š„jŸ6  ã                   óê   — 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   »J4X�jì«DqK!E/&^îx¹!& •læL–}Îò?<ç�dZ‹:–O†!3—c»UgK?Ã>ý ®·EÇYl*¡PÑL°AéSAXrj±nvt^|hà#ƒhíG®e¸\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© ó    úK/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/adn.pyr   r      s[   „ Ø)€GØ.€NØ(€EØ% e W¨AÐ.€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ð 	à!×-Ñ-¨m¸XÈUÐ-ÓSÒYÐWY×^Ñ^Ð_iÓjÐÙØ ×2Ñ2Ø! 8Ð-IØ h°
¸T¿Z¹ZÑ0GÐ%Hð 3ó JˆMñ Øô $Ô$9Ü×Ñ˜]¨2¨3Ð/Ó0Ü×Ñ˜tŸw™wÐ);Ñ;Ó<Ü×Ñ˜]¨3¨BÐ/Ó0ó%2ó 3ˆð ×)Ñ)¨-×*>Ñ*>Ó*@À$ÈeÐ)ÓTˆÙØàˆ	Ø+×1Ñ1Ó3ó !	‰MˆH�cðKˆCð ó b�ä! '§+¡+¨kÓ":Ó;Ü! '§+¡+¨iÓ"8Ó9Ø—K‘K Ó'¨¯©°[Ó)AØ—K‘K Ó0ð	@2Ñ<��s˜D *¨nð
 �= C K°4°<ØØ ×/Ñ/×3Ñ3°NÀAÓFÈ×I]ÑI]×IaÑIaÐblÐnoÓIpÑp�	Ø”r—z‘zÐ$S×$ZÑ$ZÜ*¨5Ó1Ü*¨3Ó/Ø-6¸!ª^�I 	Ò)ÀØ—L‘L  uÓ-×5Ñ5°e¸XÓF×NÑNÈvÐW_Ó`ó	%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Ñ5¸UÜ'Ø (Ø"'Ø#Ø (ñ	)ó ð 0ó ò ð Ÿ3™3˜}Ó-ð ñ Ø3:¸<¸.Ð1I�—‘˜oÒ.ð øäò 	DØˆGÜ˜!Ÿ'™'¤9Ô-°!·'±'·.±.ÀCÒ2GØ×'Ñ'Ø—G‘G×$Ñ$×)Ñ)Ó+×2Ñ2Ó4°dÀ%ð (ó Iò OØLNð àŸ(™( 9Ó-ÒA°·±¸&Ó1A�Ø×Ñ Ò B¨4×+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‰ˆˆhØ15²¸ˆ�‰Ð-Ñ.Ø×.Ñ.°6¸(¸À1Ð1EÑEˆØ×$Ñ$Ø˜_Ñ,¨hØ5Ø—M‘Mð %ó #ð $,ñ-ˆð ˜Ñ#ˆà�v‰ˆØ�x‰x˜Ô$Ü% g°¸ÄsÀeÐ/LÓMˆJÜ˜jÓ)Ò.¨Q´$·)±)³+Ò=Ü$Ð'VÐWaÐVbÐ%cÐnrÔsÐsØ×%Ñ%Ð&JÐS]Ð%Ô^à×#Ñ#Ø�H‰HÐ&Ó'ÒT¨D×,AÑ,AÀOÑ,SØÐ0Ø(¨$¨~Ñ*>ð;àð	 $ó ð !ñ	"ˆô ˜GÑ%@ÓAÒ^ÀnÐW]ÑF]ˆ	Ø—'‘'œ&Ÿ.™.Ð);¸rÔBÓCˆŒÜ”t—z‘zØ—‘Øñ#
ó ÷ ‰6‹8óˆð ˆ
Ü�q“ò  	7ˆAÜ"¤8¨G°SÓ#9Ó:ˆNØ—=‘=‰DˆAˆqÜ -¬c´-ÀÓ2OÐQRÐTUÓ.VÓ WÐÜ"×,Ñ,Ð->Ó?×FÑFÓHˆMð.Ø!×0Ñ0Ø˜xÐ)JØ(¨-ðUàŸ-™-ðUð (.Ø$+Ø(.Ø"'ñ	ð	 1ó 	�
ñ ð# 	7ô@ !Ð!5Ó6Ð6à—‘˜wÓ'Ò-¨2ˆØ—‘˜zÓ*Ò0¨bˆØ—9‘9˜[Ó)Ò/¨R×4Ñ4°UÓ;ˆØ—^‘^ GÓ,Ò2°ˆ
Ø�g‘ˆàˆØ%*§Y¡Y¨{Ó%;Ò%A¸r×$HÑ$HÓ$Jò 	-Ñ ˆI�yÜ˜i¬Ô.ØØ.7¯o©oÓ.?ò -Ñ*�Ð*Ø%)×%8Ñ%8Ø% xØ" 9 +¨Q¨w¨i°~ÐFØ ŸM™MØð	 &9ó &!ò &'ð %'ð	 #ð
 .×1Ñ1°*Ó=�ÙØØ#×9Ñ9Ø˜h¨¨}Ø%¨Uð  :ó  4�ð  Ò$Ø)ò -˜Ø(,˜˜*šñ-à %Ò'Ø)ò -˜Ø(,˜˜*šð-à—‘˜|Õ,ñ%-ð	-ñ. Ø×%Ñ%Ð&JÐS]Ð%Ô^à×$Ñ$Ø×Ñ 6¨(¨Ð!4Ñ4°hØ3¸5È$Ï-É-ð %ó Yò _à\^×`cÑ`cÐdkÓ`lòsàprð 	ð �y‰y˜Ó Ò& Bˆð ØÜ(¨¯©°9Ó)=Ò)UÀÇÁÈ9ÓAUÓVØ#Ÿ™¨Ó0ÒG°F·J±J¸wÓ4GØØ×/Ñ/°¸ÓBØ—y‘y Ó,ÒA°·	±	¸&Ó0AÜ)¨%¯)©)°MÓ*BÓCØ—h‘h˜wÓ'Ü(¨¯©°8Ó)<Ó=Ü# J§N¡N°:Ó$>Ò$WÀ%Ç)Á)ÈJÓBWÓXÜ+¨E¯I©I°mÓ,DÓEÜ+¨E¯I©I°hÓ,?Ò,VÀ5Ç9Á9ÈXÓCVÓWÜ(¨¯©°?Ó)CÓDñ
ð 	
øôm "ò .Ü! !§'¡'¬9Ô5Ø�Gà—7‘7—>‘> SÒ(åà×(Ñ(¨¯©×)9Ñ)9×)>Ñ)>Ó)@À(ÓK�ØŸ)™) IÓ.�Ø—7‘7—>‘> SÒ(¨U¯Y©Y°vÓ->Ð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ž   „ Øo€JàeØ1àØØ0ØAØ%ØØ&Ø Ø#ØØ%ØØØ ñ
ð  Fñ'ð* gØ1àØØØØ&Ø.ØØØØØ Ø Ø#Øñ
ñð)(€FòT:ò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   øè ø€ Ü*¨8°hÀÀTÌKÈ=Ð5YÓZò P�
Ø—o‘o¤mØ9¸4ÀØ# Z°sô'<ä=BÀJó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Ñ 5°cÓ :× @Ñ @ÀÈÓ NÑˆˆoØ15²¸ˆ�‰Ð-Ñ.Ø×"Ñ"Ø×!Ñ!Ð" %¨Ð'8¸Ð:¸OØ,°d·m±mð #ó EàEKñMˆô �d˜4‘j“/ˆØ×&Ñ&Ø×!Ñ!Ð" +¨g¨YÐ7¸Ø&°·±ØØñFð 'ó ˆ÷	Pð ×#Ñ#¡G£I¨w¸¿¹ÀÓ8IÓJÐJr0   N)r"   r#   r$   rö   rù   rõ   r/   r0   r1   rû   rû   )  s*   „ Øz€Jà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   