U
    g6                     @   s   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mZmZ ddlmZ G d	d
 d
eZ G dd de Z!G dd de Z"dS )    N   )InfoExtractor   )aes_cbc_decrypt_bytesunpad_pkcs7)	HTTPError)ExtractorErrorass_subtitles_timecodebytes_to_intlistbytes_to_longfloat_or_noneint_or_noneintlist_to_bytesjoin_nonemptylong_to_bytesparse_iso8601pkcs1padstr_or_nonestrip_or_nonetry_getunified_strdateurlencode_postdata)traverse_objc                   @   sN   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dS )	ADNBaseIEzAnimation Digital NetworkZ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      )Zmiddler   N)__name__
__module____qualname__ZIE_DESCZ_NETRC_MACHINE_BASE_API_BASE_URL_PLAYER_BASE_URL_HEADERS_LOGIN_ERR_MESSAGE_RSA_KEY_POS_ALIGN_MAP_LINE_ALIGN_MAP r+   r+   8/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/adn.pyr       s   
r   c                   @   s~   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d Zdd Z	dd  Z
d!S )"ADNIEz[https?://(?:www\.)?animationdigitalnetwork\.com/(?:(?P<lang>de)/)?video/[^/?#]+/(?P<id>\d+)zThttps://animationdigitalnetwork.com/video/558-fruits-basket/9841-episode-1-a-ce-soirZ 1c9ef066ceb302c86f80c2b371615261Z9841mp4zFruits Basket - Episode 1z$md5:14be2f72c3c96809b0ca424b0097d336zFruits Basketi  Z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-1Z 5c5651bf5791fa6fcd7906012b9d94e8Z23550i  Z20231004zThe Eminence in Shadowr   zSeason 2)r/   r0   r:   r4   r5   r3   r8   r9   r1   r;   r<   r6   r7   r2   )r=   r>   r?   c                 C   s  |sd S | j ||dddpd}| j||ddp0i d}|rZ| j ||dddd| j id	}|sbd S ttt|d
d  t	| j
d t|d d
 }| j| d dd}|sd S i }| D ]\}}	d}
|	D ]}t|dt|d|d|d|df\}}}}}|d ks|d ks|d kr2q| j|d| j|d }|
tjdt|t||dkrvd| nd|dddddd 7 }
q|dkrd}n|dkrd }||g d!t|	d"d#|
d"g q|S )$NzDownloading subtitles locationFfatalz{}locationzDownloading subtitles dataZOriginzhttps://rB   headers   Z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,TextZ	startTimeZendTimetextZ	lineAlignZpositionAlignr   r   z-Dialogue: Marked=0,{},{},Default,,0,0,0,,{}{}z{\a%d} 
z\Nz<i>z{\i1}z</i>z{\i0}ZvostffrZvostdedejson)r0   datassa)Z_download_webpage_parse_jsongetr#   r   r   base64	b64decodebinascii	unhexlify_Kdecodeitemsr   r)   r*   oslinesepformatr	   replace
setdefaultextendrL   dumps)selfsub_urlvideo_idZenc_subtitlesZsubtitle_locationZdec_subtitlesZsubtitles_json	subtitlesZsub_langsubrN   currentr   r   rG   Z
line_alignZposition_align	alignmentr+   r+   r,   _get_subtitles_   sz           



zADNIE._get_subtitlesc                 C   s   zN| j | jd d d| jdt|dd|ddp0i d}|rLd| | jd	< W n tk
r } zdd }t|jt	r|jj
d
kr| j|jj  d ddpi }|dp|d}| |p| j W 5 d }~X Y nX d S )Nzauthentication/loginz
Logging inFWeb)passwordZ
rememberMesourceusername)rB   rM   ZaccessTokenzBearer Authorization  rA   messagecode)_download_jsonr$   r'   r   rP   r&   r   
isinstancecauser   statusrO   responsereadrV   Zreport_warning)r_   rj   rh   Zaccess_tokenerm   respr+   r+   r,   _perform_login   s@       	  zADNIE._perform_loginc           $      C   s  |  |dd\}}|pd| jd< | jd| d }| j|d |d| jd	d
 }|d }|d }|dst|ddthf}t|pdt		 krt
d| dd| jddd | j|dp| jd |dd|d iddd }	t|dd  p|d! }
d"tjd#d$d%| _tt| j|	d&}d }td'D ]}tt|d(}| j\}}ttt|||}t| }z4| j|
|d)d*|i| jd+d,d+d-d.d/}W  qPW n t
k
rB } z~t|jt s||jj!d0krW Y Xq0| "|jj#$ |}|d1}|jj%d2kr*|d3d4kr*| j&|d5 t
|W 5 d }~X Y nX q0t
d6|d7p^i }|d8pni }|d9p~i d:}|dpi }|d; }g }|d<pi ' D ]\}}t|t(sΐq|' D ]\}}| j||d=| d>| d?| jd@dApi }|dB}|sq| j)||dCdD|d@dE} |dFkrR| D ]}!d|!dG< q@n|dHkrp| D ]}!dI|!dG< q`|*|  q֐q|s| jddd | j| j+d|  |dJd@| jdKpi dpi }"|"dLpi }#||t,|dMp|"dM|dNp
|dN|| -|||dOp*|"dPt.|"dQ|#d;t.|"dRt.|dSp`|"dSt/|"dTt0|"dUp|dUt.|"dVdWS )XNlangr/   rJ   X-Target-Distributionzvideo/r   configurationz'Downloading player config JSON metadatarE   playeroptionsuserZ	hasAccessvideoZ	startDater   z/This video is not available yet. Release date: T)expectedz"This video requires a subscriptionrh   )methodZrefreshTokenUrlzrefresh/tokenzDownloading access tokenzX-Player-Refresh-TokenZrefreshToken    )rE   rM   tokenc                 S   s   | d d S )Nr   r=   r+   )xr+   r+   r,   <lambda>   r   z%ADNIE._real_extract.<locals>.<lambda>linkrH   0123456789abcdef   )k)r   tr      zDownloading links JSON metadatazX-Player-Tokentruefalserg   )ZfreeWithAdsZadaptiveZwithMetadatari   rE   queryrl   rm   i  rn   zplayer-bad-geolocation-country)msgzGiving up retryinglinksmetadatarb   allr1   Z	streamingzDownloading  z JSON metadataF)rE   rB   rC   r.   Zm3u8_native)Zm3u8_idrB   ZvflanguageZvderK   z%Downloading additional video metadatarD   showsummaryimageZsubtitlenameZshortNumberr<   r4   ZreleaseDateZratingZcommentsCount)r/   r1   r2   r;   formatsrb   r9   r:   r3   r8   r4   r5   r7   r6   )1_match_valid_urlgroupr&   r%   ro   rP   r   strr   timer   Zraise_login_requiredr   joinrandomchoicesrU   r
   rL   r^   ranger   r   r(   r   powr   rQ   	b64encoderV   rp   rq   r   rr   rO   rs   rt   rn   Zraise_geo_restrictedrW   dictZ_extract_m3u8_formatsr]   r$   r   Zextract_subtitlesr   r   r   )$r_   r=   rx   ra   Zvideo_base_urlr|   r}   r~   Z
start_dater   Z	links_urlrm   Z
links_data_Zpadded_messagenru   Zencrypted_messageauthorizationerrorr   Zmetasr`   Z
video_infor1   r   Z	format_idZ	qualitiesZqualityZload_balancer_urlZload_balancer_dataZm3u8_urlZm3u8_formatsfr   r   r+   r+   r,   _real_extract   s    
  

   


 
    

   
zADNIE._real_extractN)r    r!   r"   
_VALID_URLintfloatr   _TESTSrf   rw   r   r+   r+   r+   r,   r-   3   sT   *<r-   c                   @   s,   e Zd ZdZddddddgZdd	 Zd
S )ADNSeasonIEzfhttps?://(?:www\.)?animationdigitalnetwork\.com/(?:(?P<lang>de)/)?video/(?P<id>\d+)[^/?#]*/?(?:$|[#?])z?https://animationdigitalnetwork.com/video/911-tokyo-mew-mew-new   Z911zTokyo Mew Mew New)r/   r1   )r=   Zplaylist_countr?   c                    s    |dd\pdjd< jj d ddjdd	 }t|d }jj d
| djdddd  fdd}| ||dS )Nrx   r/   rJ   ry   zshow/r   zDownloading show JSON metadatar{   r   zvideo/show/zDownloading episode listZascz-1)orderlimitr   c                  3   s>   t  dddthfD ]$} tdd| ddt| V  qd S )NZvideos.r/   z#https://animationdigitalnetwork.comr   r   )delim)r   r   Z
url_resultr   r-   )Z
episode_idZepisodesrx   r_   Zvideo_show_slugr+   r,   entriesE  s         z*ADNSeasonIE._real_extract.<locals>.entriesr1   )r   r   r&   ro   r$   r   Zplaylist_resultrP   )r_   r=   r   Zshow_idr   r+   r   r,   r   7  s,        zADNSeasonIE._real_extractN)r    r!   r"   r   r   r   r+   r+   r+   r,   r   +  s   
r   )#rQ   rS   rL   rX   r   r   commonr   Zaesr   r   Znetworking.exceptionsr   utilsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Zutils.traversalr   r   r-   r   r+   r+   r+   r,   <module>   s   H y