
    VGh2                         d dl Z d dlZddlmZ ddlmZmZmZmZ  G d de      Z	 G d d	e	      Z
 G d
 de	      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)    N   )InfoExtractor   )classpropertyint_or_nonetraverse_objurljoinc                   `    e Zd ZdZdZddddddd	d
dddddZed        Zdi fdZdi fdZ	d Z
y)BrainPOPBaseIEbrainpop z4The username and password you entered did not match.zPayment method is expired.zYour BrainPOP plan has expired.zTerms not accepted.zAccount not activated.zRThe maximum number of devices permitted are logged in with your account right now.zKYou are trying to access your account from outside of its allowed IP range.zdIndividual accounts are not included in your plan. Try again with your shared username and password.z<That username and password won't work on this BrainPOP site.z1You'll need to join a class before you can login.zXYour account is locked. Reset your password, or ask a teacher or administrator for help.)i  i  i  i  i  i  i  i  i  i  i  i  c                     t        j                  | j                        j                  dd      j                  dd      }| dS )Nzhttps:zhttps?:zwww\.z
(?:www\.)?z'/(?P<slug>[^/]+/[^/]+/(?P<id>[^/?#&]+)))reescape_ORIGINreplace)clsroots     b/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/brainpop.py
_VALID_URLzBrainPOPBaseIE._VALID_URL   s=    yy%--iDLLXWde&?@@    c                     g }| j                  t        | j                  |       d| |d| dd      }|j                  |t        | j                  |       d| d       |D ]  }|j                  |        |S )Nz.m3u8?mp4z-hlsF)m3u8_idfatal?)	format_idurl)_extract_m3u8_formatsr	   _HLS_URLappend
_VIDEO_URLupdate)selfslugr   
display_idtokenextra_fieldsformatsfs           r   _assemble_formatsz BrainPOPBaseIE._assemble_formats$   s    ,,t}}d+,F5':)D'9 - H 	"doot45Qug>
 	  	#AHH\"	#r   %sc                    g }i dddd}|j                         D ]b  \  }}	t        d      D ]O  \  }
}|||z  z  }|j                  |      s |j                  | j	                  ||   |||dd|
z
  i|	|             Q d |S )NzAudio description)format_notesource_preference)r,   zad_%s)highlowquality)items	enumerategetextendr+   )r$   datar'   r&   
key_formatr(   r)   additional_key_formatsadditional_key_formatadditional_key_fieldskey_quality	key_indexfull_key_indexs                r   _extract_adaptive_formatsz(BrainPOPBaseIE._extract_adaptive_formats1   s    2%'"
 =S<X<X<Z 	8!#8*3O*D &Y!6*y:P!Q88N+NN4#9#9$~:NP^`jlq!2#3t/t 't $ 	 r   c           	      L   | j                  dd t        j                  ||d      j                         d| j                  dddd      }t        |d	         }|d
k7  rH| j                  d| j                  j                  |      xs |j                  d       xs d|        y y )Nz"https://api.brainpop.com/api/login)usernamepasswordzapplication/json)zContent-TypeRefererz
Logging inzUnable to log ini  )r9   headersnoteerrnoteexpected_statusstatus_codei  zUnable to login: messagezGot status code )	_download_jsonjsondumpsencoder   r   report_warning_LOGIN_ERRORSr7   )r$   rC   rD   	login_resrJ   s        r   _perform_loginzBrainPOPBaseIE._perform_loginE   s    ''0$xHIPPR 2<< !*<c ( S	 ")M":;$#D$6$6$:$:;$G$c9==YbKc#de 4%k]35 r   N)__name__
__module____qualname___NETRC_MACHINEr   rQ   r   r   r+   rA   rS    r   r   r   r      sp    NGD*/#&b[t&MBhM A A DFTV  MQ_a (5r   r   c            	       T    e Zd ZdZdZdZdZddddd	d
dddddddddddddgZd Zy)
BrainPOPIEzhttps://www.brainpop.comhttps://svideos.brainpop.comhttps://hls.brainpop.comzhttps://cdn.brainpop.comzThttps://www.brainpop.com/health/conflictresolution/martinlutherkingjr/movie?ref=null 3ead374233ae74c7f1b0029a01c972f01f3259fa457292b4r   zMartin Luther King, Jr.martinlutherkingjrz$md5:f403dbb2bf3ccc7cf4c59d9e43e3c349idexttitler&   descriptionr   md5	info_dictz/https://www.brainpop.com/science/space/bigbang/ 9a1ff0e77444dd9e437354eb669c87ecacae52cd48c99acfzBig Bangbigbangz$md5:3e53b766b0f116f631b13f4cae185d38Requires loginr   rf   rg   skipc                     | j                  |      j                  dd      \  }}| j                  d| d|dd      d   }t        | j                  d| d|d	d
d      dt              xs |d   }t        |d      s7t        |d      }d|v r| j                  |d       n| j                  ||       |d   }|d   }g i }
}	|	j                  | j                  ||j                  dd      |d|j                  d      xs ddd             t        |di t              j                         D ]<  \  }}|	j                  | j                  ||j                  dd      |d|d d             > |j                         D ]W  \  }}| j                  d!|d"d #      }|s|s!|
j                  |g       j                  d$t        | j                  |      i       Y |d%   ||j                  d&      |j                  d'      |	|
d(S ))Nr%   ra   z5https://api.brainpop.com/api/content/published/bp/en/z/movie?full=1zDownloading movie data JSONzUnable to download movie datar9   z?full=1zDownloading topic data JSONzUnable to download topic dataF)r   )r9   topic)expected_typero   )accessallow)rq   reasonloggedT)metadata_available)video_idfeaturer'   r   z%s_v2languageen
   )rx   language_preferencelocalization)defaultrp   iz^subtitles_(?P<lang>\w+)$zsubtitle metadata)r}   r   topic_idnamesynopsis)ra   r&   rc   rd   r)   	subtitles)_match_valid_urlgrouprL   r   dictraise_login_requiredraise_no_formatsr8   rA   r7   r5   _search_regex
setdefaultr!   r	   _CDN_URL)r$   r   r%   r&   
movie_data
topic_datars   movie_featuremovie_feature_datar)   r   langlocalized_featurer   s                 r   _real_extractzBrainPOPIE._real_extractp   sy   005;;FDIj((CD6WYc)+JLLRT
 "$"5"5CD6QS])+JRW #6 #Y T3 J 7A6I 	
 J(;<!*.BCF6!))&T)J%%fz%B"9-*62t556HJ\J`J`ahjlJmoy  |C%))*5=#%E
  	 (4M>[]mq'r'x'x'z 	#D#NN499:KM^MbMbcjlnMoq{  ~E '*G  	 ,113 	ID#%%,d4GQU & WD$$T2.5574==#67 		 Z($^^F+%>>*5"
 	
r   N)	rT   rU   rV   r   r"   r    r   _TESTSr   rX   r   r   rZ   rZ   T   sh    (G/J)H)He1$..A

 A1$#A
 !F..
r   rZ   c                       e Zd Zd Zd Zy)BrainPOPLegacyBaseIEc                     |d   }| j                  |||      }|d   ||j                  d      |j                  d      |j                  d      |dS )NmoviesEntryIDr   rc   r   )ra   r&   rc   	alt_titlerd   r)   )rA   r7   )r$   r   r&   r'   r   r)   s         r   _parse_js_topic_dataz)BrainPOPLegacyBaseIE._parse_js_topic_data   s^    )
00UJO Y'$^^F+#0%>>*5
 	
r   c                     | j                  |      j                  dd      \  }}| j                  ||      }| j                  d|d|d      d   d   d	   }| j	                  d
|d      }| j                  |||      S )Nr%   ra   zvar\s+content\s*=\s*zcontent data;)end_patterncategoryunitro   zec_token\s*:\s*[\'"]([^\'"]+)zvideo token)r   r   _download_webpage_search_jsonr   r   )r$   r   r%   r&   webpager   r'   s          r   r   z"BrainPOPLegacyBaseIE._real_extract   s    005;;FDIj((j9&&#WnC ' ))355;==DF
 ""#CWm\((ZGGr   N)rT   rU   rV   r   r   rX   r   r   r   r      s    
Hr   r   c                   J    e Zd ZdZdZdZdZddddd	d
dddddddddddgZy)BrainPOPJrIEzhttps://jr.brainpop.comzhttps://svideos-jr.brainpop.comzhttps://hls-jr.brainpop.comzhttps://cdn-jr.brainpop.comz7https://jr.brainpop.com/health/feelingsandsel/emotions/ 04e0561bb21770f305a0ce6cf0d869ab347r   Emotionsemotions)ra   rb   rc   r&   re   z8https://jr.brainpop.com/science/habitats/arctichabitats/ b0ed063bbd1910df00220ee29340f5d629zArctic Habitatsarctichabitatsrk   rl   NrT   rU   rV   r   r"   r    r   r   rX   r   r   r   r      s]    'G2J,H,HH1$	
	 J1&*	
 !
Fr   r   c            	       N    e Zd ZdZdZdZdZddddd	d
dddddddddddddgZy)BrainPOPELLIEzhttps://ell.brainpop.comz https://svideos-esl.brainpop.comzhttps://hls-esl.brainpop.comzhttps://cdn-esl.brainpop.comz.https://ell.brainpop.com/level1/unit1/lesson1/ a2012700cfb774acb7ad2e8834eed0d01r   zLesson 1lesson1zPersonal Pronouns)ra   rb   rc   r&   r   re   z.https://ell.brainpop.com/level3/unit6/lesson5/ be19c8292c87b24aacfb5fda2f3f8363101zLesson 5lesson5zReview: Unit 6rk   rl   Nr   rX   r   r   r   r      sc    (G3J-H-H?1#,

 @1#)
 !Fr   r   c            	       R    e Zd ZdZdZdZdZdZdddd	d
dddddddd	ddddddgZy)BrainPOPEspIEu   BrainPOP Españolzhttps://esp.brainpop.comr[   r\   zhttps://cdn.brainpop.com/mxzFhttps://esp.brainpop.com/ciencia/la_diversidad_de_la_vida/ecosistemas/ cb3f062db2b3c5240ddfcfde7108f8c93893r   Ecosistemasecosistemasz$md5:80fc55b07e241f8c8f2aa8d74deaf3c3r`   re   z>https://esp.brainpop.com/espanol/la_escritura/emily_dickinson/ 98c1b9559e0e33777209c425cda7dac47146zEmily Dickinsonemily_dickinsonz$md5:2795ad87b1d239c9711c1e92ab5a978brk   rl   N	rT   rU   rV   IE_DESCr   r"   r    r   r   rX   r   r   r   r      sh    !G(G/J)H,HW1"'A

 P1&+A
 !Fr   r   c            	       R    e Zd ZdZdZdZdZdZdddd	d
dddddddd	ddddddgZy)BrainPOPFrIEu   BrainPOP Françaiszhttps://fr.brainpop.comr[   r\   zhttps://cdn.brainpop.com/frzBhttps://fr.brainpop.com/sciencesdelaterre/energie/sourcesdenergie/ 97e7f48af8af93f8a2be11709f2393711651r   u   Sources d'énergiesourcesdenergiez$md5:7eece350f019a21ef9f64d4088b2d857r`   re   z0https://fr.brainpop.com/francais/ecrire/plagiat/ 0cf2b4f89804d0dd4a360a51310d445a5803Plagiatplagiatz$md5:4496d87127ace28e8b1eda116e77cd2brk   rl   Nr   rX   r   r   r   r     sh    "G'G/J)H,HS1*+A

 B1#A
 !Fr   r   c                   :    e Zd ZdZdZdZdZdZdddd	d
ddddgZy)BrainPOPIlIEzBrainPOP Hebrewzhttps://il.brainpop.comr[   r\   zhttps://cdn.brainpop.com/hezAhttps://il.brainpop.com/category_9/subcategory_150/subjects_3782/ 9e4ea9dc60ecd385a6e5ca12ccf316413782r   z$md5:e993632fcda0545d9205602ec314ad67subjects_3782z$md5:4cc084a8012beb01f037724423a4d4edr`   re   Nr   rX   r   r   r   r   .  sA    G'G/J)H,HR1;)A

 
Fr   r   )rM   r   commonr   utilsr   r   r   r	   r   rZ   r   r   r   r   r   r   rX   r   r   <module>r      s     	 ! D5] D5NJ
 J
ZH> H2' 6( :( <' <' r   