
    VGh1                     z    d dl Z ddlmZ ddlmZmZmZmZmZm	Z	  G d de      Z
 G d d	e
      Z G d
 de
      Zy)    N   )InfoExtractor   )ExtractorErrordetermine_extint_or_noneparse_iso8601traverse_objvariadicc                        e Zd ZdZdZd Zd Zy)OpencastBaseIEa  (?:
                            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                 H     | j                   | j                  ||fz  |fi |S )N)_download_json	_API_BASE)selfhostvideo_idkwargss       b/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/opencast.py	_call_apizOpencastBaseIE._call_api(   s+    "t""4>>T84D#DhYRXYY    c                    |j                  d      }|t        d      g }t        t        |d      xs g       D ]O  }|j                  d      }|t	        |d       }|j                  d      }|dk(  s|dk(  r%|j                  | j                  ||dd	
             d|dk(  s|dk(  r&|j                  | j                  ||ddd	             |dk(  s|dk(  r%|j                  | j                  ||dd	             |dk(  r%|j                  | j                  ||dd	             |dk(  r%|j                  | j                  ||d	             |||j                  d      t        |d      t        t        |d            t        t        |d      d      |j                  d      rt        |d      nd t        t        |d!      d      t        t        |d"            |j                  d#      rt        |d$      nd d%
}|d&k(  rst        j                  d'|      }	|	s|j                  |	j                  d(      |	j                  d)      |	j                  d)      d*z   |	j                  d+      z   d,d-d.       |j!                  |       R |||j                  d/      |j                  d0      |j                  d1      t        |d2      t#        |j                  d3            t        |d4d	5      d6S )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)r1   	framerate)r1   bitratei  )scaler1   )r1   encodertypenone)audior4   )r9   samplingrater9   )r9   r6   r7   )
r   extformat_noter2   fpsvbrvcodecabrasracodecRTMPz<(?:rtmp://[^/]+/(?P<app>[^/]+))/(?P<ext>.+):(?P<playpath>.+)appr;   :playpathT)rD   r;   	play_path	rtmp_live
preferencetitleseriestitleseries)creatorscreatorstart)attachments
attachment.r   )get_all)r   formatsrK   rM   	season_idrO   	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   r1   r   rT   r   hrefr;   r   	track_objm_objs
             r   _parse_mediapackagez"OpencastBaseIE._parse_mediapackage+   s   99T? !9::l52DEKL ,	*E99U#D|d+C		+.IF"cUlt88xPV^c8dee#sf}t99(E-W\  :  ^ _e#se|t88xPU]b8cdh&t88xPX`e8fgt99$PU9VW  #(99[#9".u6M"N&|E;Q'RS&|E;O'PX\]SXS\S\]dSel52NOkq&|E;O'PX\]&|E;T'UVSXS\S\]dSel52NOkq	 &II&egklE  $$${{51${{51%*[[%7#%=J@W%W%)&(&  y)Y,	*^ YYw'ii.8,#E+BC&uyy'9:%e-V`ef	
 		
r   N)__name__
__module____qualname___INSTANCES_RE_UUID_REr   rg    r   r   r   r      s    M. YHZ=
r   r   c                   r    e Zd Zdej                   dej
                   dZdZddddd	d
dddddd	dgZd Z	y)
OpencastIE(?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;   rK   rW   rV   upload_daterU   rM   rO   )r   md5	info_dictc                     | j                  |      j                  dd      \  }}| j                  | j                  ||      d   d   d         S )Nr   r   search-resultsresultmediapackage)_match_valid_urlrb   rg   r   )r   r   r   r   s       r   _real_extractzOpencastIE._real_extract   sV    ..s399&$Gh''NN4*+;<XF~VX 	Xr   N
rh   ri   rj   r   rk   rl   
_VALID_URLr   _TESTSr   rm   r   r   ro   ro   k   so    )778 9,556a;J 7I w5<:5')C6*
	
F$Xr   ro   c                       e Zd Zdej                   dej
                   dZdZddddd	d
ddddd	d
dddddd
gZd Z	y)OpencastPlaylistIErp   z)(?:
            /engage/ui/index\.html\?(?:[^#]+&)?epFrom=|
            /ltitools/index\.html\?(?:[^#]+&)?series=
        )(?P<id>rq   z%https://%s/search/episode.json?sid=%szehttps://oc-video1.ruhr-uni-bochum.de/engage/ui/index.html?epFrom=cf68a4a1-36b1-4a53-a6ba-61af5705a0d0ru   rv   )r   rK      )r   ry   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                 0   | j                  |      j                  dd      \  }}t        | j                  ||      d   d         D cg c]'  }|j	                  d      r| j                  |d         ) }}| j                  ||t        |d            S c c}w )Nr   r   r{   r|   r}   )r   rM   )r~   rb   r   r   rX   rg   playlist_resultr
   )r   r   r   r   episodeentriess         r   r   z OpencastPlaylistIE._real_extract   s    ..s399&$Gh $DNN4$BCS$TU]$^_
{{>* $$W^%<=
 
 ##GX|G]7[\\
s   ,BNr   rm   r   r   r   r      s    )778 9  (()	.J 8I {<5 "$	
 P<5 "$	
 @<V "$	
#F6	]r   r   )r_   commonr   utilsr   r   r   r	   r
   r   r   ro   r   rm   r   r   <module>r      s@    	 ! Z
] Z
zX X>-] -]r   