
    V|h1                     z    S SK r SSKJr  SSKJrJrJrJrJrJ	r	   " S S\5      r
 " S S	\
5      r " S
 S\
5      rg)    N   )InfoExtractor   )ExtractorErrordetermine_extint_or_noneparse_iso8601traverse_objvariadicc                   (    \ rS rSrSrSrS rS rSrg)OpencastBaseIE   a  (?:
                            opencast\.informatik\.kit\.edu|
                            electures\.uni-muenster\.de|
                            oc-presentation\.ltcc\.tuwien\.ac\.at|
                            medien\.ph-noe\.ac\.at|
                            oc-video\.ruhr-uni-bochum\.de|
                            oc-video1\.ruhr-uni-bochum\.de|
                            opencast\.informatik\.uni-goettingen\.de|
                            heicast\.uni-heidelberg\.de|
                            opencast\.hawk\.de:8080|
                            opencast\.hs-osnabrueck\.de|
                            video[0-9]+\.virtuos\.uni-osnabrueck\.de|
                            opencast\.uni-koeln\.de|
                            media\.opencast\.hochschule-rhein-waal\.de|
                            matterhorn\.dce\.harvard\.edu|
                            hs-harz\.opencast\.uni-halle\.de|
                            videocampus\.urz\.uni-leipzig\.de|
                            media\.uct\.ac\.za|
                            vid\.igb\.illinois\.edu|
                            cursosabertos\.c3sl\.ufpr\.br|
                            mcmedia\.missioncollege\.org|
                            clases\.odon\.edu\.uy
                        )zF[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}c                 F    U R                   " U R                  X4-  U40 UD6$ )N)_download_json	_API_BASE)selfhostvideo_idkwargss       S/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/opencast.py	_call_apiOpencastBaseIE._call_api(   s'    ""4>>T4D#DhYRXYY    c                    UR                  S5      nUc  [        S5      e/ n[        [        US5      =(       d    / 5       GHW  nUR                  S5      nUc  M  [	        US 5      nUR                  S5      nUS:X  d  US:X  a"  UR                  U R                  XRSS	S
95        Me  US:X  d  US:X  a#  UR                  U R                  XRSSS	S95        M  US:X  d  US:X  a"  UR                  U R                  XRSS	S95        M  US:X  a"  UR                  U R                  XRSS	S95        M  US:X  a"  UR                  U R                  XRS	S95        GM  UUUR                  S5      [        US5      [        [        US5      5      [        [        US5      SS9UR                  S5      (       a  [        US5      OS [        [        US!5      SS9[        [        US"5      5      UR                  S#5      (       a  [        US$5      OS S%.
nUS&:X  az  [        R                  " S'U5      n	U	(       d  GM  UR                  U	R                  S(5      U	R                  S)5      U	R                  S)5      S*-   U	R                  S+5      -   S,S-S..5        UR!                  U5        GMZ     UUUR                  S/5      UR                  S05      UR                  S15      [        US25      [#        UR                  S35      5      [        US4S	S59S6.$ )7NidzVideo id was not found)mediatrackurl	transportDASHmpddashF)mpd_idfatalHLSm3u8hlsm3u8_native)m3u8_identry_protocolr$   HDSf4mhds)f4m_idr$   SMOOTHsmooth)ism_idr$   smil)r$   )video
resolution)r3   	framerate)r3   bitratei  )scaler3   )r3   encodertypenone)audior6   )r;   samplingrater;   )r;   r8   r9   )
r   extformat_noter4   fpsvbrvcodecabrasracodecRTMPz<(?:rtmp://[^/]+/(?P<app>[^/]+))/(?P<ext>.+):(?P<playpath>.+)appr=   :playpathT)rF   r=   	play_path	rtmp_live
preferencetitleseriestitleseries)creatorscreatorstart)attachments
attachment.r   )get_all)r   formatsrM   rO   	season_idrQ   	timestamp	thumbnail)getr   r   r
   r   extend_extract_mpd_formats_extract_m3u8_formats_extract_f4m_formats_extract_ism_formats_extract_smil_formatsr   researchupdategroupappendr	   )
r   r3   r   rV   r   hrefr=   r   	track_objm_objs
             r   _parse_mediapackage"OpencastBaseIE._parse_mediapackage+   s   99T? !9::l52DEKLE99U#D|d+C		+.IF"cUlt88PV^c8dee#sf}t99E-W\  :  ^ _e#se|t88PU]b8cdh&t88PX`e8fgt99$PU9VW  #(99[#9".u6M"N&|E;Q'RS&|E;O'PX\]SXS\S\]dSeSel52NOkq&|E;O'PX\]&|E;T'UVSXS\S\]dSeSel52NOkq	 &II&egklE  $$${{51${{51%*[[%7#%=J@W%W%)&(&  y)Y M^ YYw'ii.8,#E+BC&uyy'9:%e-V`ef	
 		
r    N)	__name__
__module____qualname____firstlineno___INSTANCES_RE_UUID_REr   ri   __static_attributes__rk   r   r   r   r      s    M. YHZ=
r   r   c                   z    \ rS rSrS\R
                   S\R                   S3rSrSSSS	S
SSSSSSS.	S./r	S r
Srg)
OpencastIEk   (?x)
        https?://(?P<host>z7)/paella/ui/watch\.html\?
        (?:[^#]+&)?id=(?P<id>)z$https://%s/search/episode.json?id=%szahttps://oc-video1.ruhr-uni-bochum.de/paella/ui/watch.html?id=ed063cd5-72c8-46b5-a60a-569243edcea8 554c8e99a90f7be7e874619fcf2a3bc9z$ed063cd5-72c8-46b5-a60a-569243edcea8mp4z11 - Kryptographie - 24.11.2015zre:^https?://.*\.jpg$i˼_20201124$cf68a4a1-36b1-4a53-a6ba-61af5705a0d0Kryptographie - WiSe 15/16zAlexander May)	r   r=   rM   rY   rX   upload_daterW   rO   rQ   )r   md5	info_dictc                     U R                  U5      R                  SS5      u  p#U R                  U R                  X#5      S   S   S   5      $ )Nr   r   search-resultsresultmediapackage)_match_valid_urlrd   ri   r   )r   r   r   r   s       r   _real_extractOpencastIE._real_extract   sR    ..s399&$G''NN4*+;<XF~VX 	Xr   rk   Nrl   rm   rn   ro   r   rp   rq   
_VALID_URLr   _TESTSr   rr   rk   r   r   rt   rt   k   so    )778 9,556a;J 7I w5<:5')C6*
	
F$Xr   rt   c                       \ rS rSrS\R
                   S\R                   S3rSrSSSS	.S
S.SSSS	.S
S.SSSS	.SS./r	S r
Srg)OpencastPlaylistIE   rv   z)(?:
            /engage/ui/index\.html\?(?:[^#]+&)?epFrom=|
            /ltitools/index\.html\?(?:[^#]+&)?series=
        )(?P<id>rw   z%https://%s/search/episode.json?sid=%szehttps://oc-video1.ruhr-uni-bochum.de/engage/ui/index.html?epFrom=cf68a4a1-36b1-4a53-a6ba-61af5705a0d0r{   r|   )r   rM      )r   r   playlist_mincountzzhttps://oc-video1.ruhr-uni-bochum.de/ltitools/index.html?subtool=series&series=cf68a4a1-36b1-4a53-a6ba-61af5705a0d0&lng=dezjhttps://electures.uni-muenster.de/engage/ui/index.html?e=1&p=1&epFrom=39391d10-a711-4d23-b21d-afd2ed7d758cz$39391d10-a711-4d23-b21d-afd2ed7d758cz;021670 Theologische Themen bei Hans Blumenberg WiSe 2017/18   c                 >   U R                  U5      R                  SS5      u  p#[        U R                  X#5      S   S   5       Vs/ s H/  nUR	                  S5      (       d  M  U R                  US   5      PM1     nnU R                  XS[        US5      5      $ s  snf )Nr   r   r   r   r   )r   rO   )r   rd   r   r   rZ   ri   playlist_resultr
   )r   r   r   r   episodeentriess         r   r    OpencastPlaylistIE._real_extract   s    ..s399&$G $DNN4$BCS$TU]$^_
_{{>* >D$$W^%<=_ 	 
 ##G|G]7[\\
s   B$Brk   Nr   rk   r   r   r   r      s    )778 9  (()	.J 8I {<5 "$	
 P<5 "$	
 @<V "$	
#F6	]r   r   )ra   commonr   utilsr   r   r   r	   r
   r   r   rt   r   rk   r   r   <module>r      s@    	 ! Z
] Z
zX X>-] -]r   