o
    i                      @   sh   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 deZ
G dd	 d	e
ZG d
d de
ZdS )    N   )InfoExtractor   )ExtractorErrordetermine_extint_or_noneparse_iso8601traverse_objvariadicc                   @   s$   e Zd ZdZdZdd Zdd ZdS )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|
                            oc-p\.uni-jena\.de
                        )zF[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}c                 K   s   | j | j||f |fi |S )N)_download_json	_API_BASE)selfhostvideo_idkwargs r   M/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/opencast.py	_call_api)   s   zOpencastBaseIE._call_apic           
      C   s:  | d}|d u rtdg }tt|dpg D ]}| d}|d u r$qt|d }| d}|dks6|dkrC|| j||dd	d
 q|dksK|dkrY|| j||ddd	d q|dksa|dkrn|| j||dd	d q|dkr|| j	||dd	d q|dkr|| j
||d	d q||| dt|dtt|dtt|ddd| drt|dnd tt|d!ddtt|d"| d#rt|d$nd d%
}|d&krtd'|}	|	sq||	d(|	d)|	d)d* |	d+ d,d-d. || q||| d/| d0| d1t|d2t| d3t|d4d	d5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)r-   	framerate)r-   bitratei  )scaler-   )r-   encodertypenone)audior0   )r5   samplingrater5   )r5   r2   r3   )
r   extformat_noter.   fpsvbrvcodecabrasracodecRTMPz<(?:rtmp://[^/]+/(?P<app>[^/]+))/(?P<ext>.+):(?P<playpath>.+)appr7   :playpathT)r@   r7   	play_path	rtmp_live
preferencetitleseriestitleseries)creatorscreatorstart)attachments
attachment.r   )get_all)r   formatsrG   rI   	season_idrK   	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   r-   r   rP   r   hrefr7   r   	track_objm_objr   r   r   _parse_mediapackage,   sl   





z"OpencastBaseIE._parse_mediapackageN)__name__
__module____qualname___INSTANCES_RE_UUID_REr   rc   r   r   r   r   r      s
    r   c                   @   sP   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d Z	dS )
OpencastIE(?x)
        https?://(?P<host>z=)/paella[0-9]*/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   r7   rG   rS   rR   upload_daterQ   rI   rK   )r   md5	info_dictc                 C   sF   |  |dd\}}| ||}t|dddthtfpi }| |S )Nr   r   )search-resultsresult)ru   .mediapackage)_match_valid_urlr^   r   r	   dictanyrc   )r   r   r   r   responsepackager   r   r   _real_extract   s   
zOpencastIE._real_extractN
rd   re   rf   r   rg   rh   
_VALID_URLr   _TESTSr|   r   r   r   r   ri   l   s,    ri   c                   @   sb   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d Z	dS )OpencastPlaylistIErj   z)(?:
            /engage/ui/index\.html\?(?:[^#]+&)?epFrom=|
            /ltitools/index\.html\?(?:[^#]+&)?series=
        )(?P<id>rk   z%https://%s/search/episode.json?sid=%szehttps://oc-video1.ruhr-uni-bochum.de/engage/ui/index.html?epFrom=cf68a4a1-36b1-4a53-a6ba-61af5705a0d0ro   rp   )r   rG      )r   rs   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                    sP     |dd\}} fddt ||d d D } ||t|dS )Nr   r   c                    s$   g | ]}| d r |d  qS )rv   )rT   rc   ).0episoder   r   r   
<listcomp>   s    z4OpencastPlaylistIE._real_extract.<locals>.<listcomp>rt   ru   )r   rI   )rw   r^   r
   r   playlist_resultr	   )r   r   r   r   entriesr   r   r   r|      s
   
z OpencastPlaylistIE._real_extractNr}   r   r   r   r   r      s6    		r   )r[   commonr   utilsr   r   r   r   r	   r
   r   ri   r   r   r   r   r   <module>   s     
^#