
    V|h                     B    S SK r SSKJr  SSKJrJrJr   " S S\5      rg)    N   )InfoExtractor   )ExtractorError
orderedSetunescapeHTMLc                   :    \ rS rSrSrSrSrSSSSS	S
.S.rS rSr	g)StanfordOpenClassroomIE   
stanfordoczStanford Open ClassRoomzhttps?://openclassroom\.stanford\.edu(?P<path>/?|(/MainFolder/(?:HomePage|CoursePage|VideoPage)\.php([?]course=(?P<course>[^&]+)(&video=(?P<video>[^&]+))?(&.*)?)?))$zqhttp://openclassroom.stanford.edu/MainFolder/VideoPage.php?course=PracticalUnix&video=intro-environment&speed=100 544a9468546059d4e80d76265b0443b8zPracticalUnix_intro-environmentmp4zIntro Environment)idexttitle)urlmd5	info_dictc           	      d   U R                  U5      nUR                  S5      (       a  UR                  S5      (       a  UR                  S5      nUR                  S5      nUS-   U-   S S S.nSU-   S-   nXd-   S-   nU R                  XuS   5      n UR                  S	5      S
   R                  US'   XhR                  S5      S
   R                  -   US'   U$ UR                  S5      (       a  UR                  S5      nUSS S S.nU R                  XS   SSS9n	U R                  SU	SUS   S9US'   U R                  SU	SSS9US'   [        [        R                  " SU	5      5      n
U
 Vs/ s H   nU R                  S[        U5       35      PM"     snUS'   U$ SSS S S.nUS   US'   SnU R                  XS   SS9n[        [        R                  " S U5      5      n
U
 Vs/ s H   nU R                  S[        U5       35      PM"     snUS'   U$ ! [
         a    [        S5      ef = fs  snf s  snf )!Ncoursevideo_)r   uploaderupload_datez5http://openclassroom.stanford.edu/MainFolder/courses/z/videos/z.xmlr   z./titler   r   z./videoFiler   zInvalid metadata XML fileplaylist)r   _typer   r   zDownloading course info pagez#Unable to download course info page)noteerrnotez<h1>([^<]+)</h1>)defaultz&(?s)<description>([^<]+)</description>descriptionF)fatalz"<a href="(VideoPage\.php\?[^"]+)">z-http://openclassroom.stanford.edu/MainFolder/entrieszStanford OpenClassroomz9http://openclassroom.stanford.edu/MainFolder/HomePage.php)r   z#<a href="(CoursePage\.php\?[^"]+)">)_match_valid_urlgroup_download_xmlfindalltext
IndexErrorr   _download_webpage_html_search_regexr   re
url_resultr   )selfr   mobjr   r   infobase_urlxml_urlmdoc
coursepagelinkslroot_urlrootpages                 U/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/stanfordoc.py_real_extract%StanfordOpenClassroomIE._real_extract   s   $$S)::hDJJw$7$7ZZ)FJJw'EslU* #D OQWWZddH&/G%%gDz:DB $Y 7 : ? ?W&m)DQ)G)L)LLU KZZ!!ZZ)F# #	D //$Z3= 0 ?J
 !33#Z$t* 4 NDM #'"9"99M #: #8D rzz*OQ[\]E !  $?Q?PQ DO K /# #	D !JDMRH--hT
6[ . ]H rzz*PRZ[\E !  $?Q?PQ DO K]  B$%@AAB2$s   AH )'H( 'H-H% N)
__name__
__module____qualname____firstlineno__IE_NAMEIE_DESC
_VALID_URL_TESTr9   __static_attributes__r;       r8   r
   r
      s8    G'G zJ C13(
E@rE   r
   )r+   commonr   utilsr   r   r   r
   r;   rE   r8   <module>rH      s#    	 ! Nm NrE   