U
    g                     @   sl   d dl Z ddlmZ ddlmZ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   )filter_dictint_or_noneparse_age_limitsmuggle_urltraverse_objunsmuggle_urlurl_or_nonec                   @   s$   e Zd ZddeejdZdS )CineverseBaseIEzhttps?://www\.(?P<host>{})|)zcineverse.comzasiancrush.comzdovechannel.comzscreambox.comzmidnightpulp.comz
fandor.comzretrocrush.tvN)	__name__
__module____qualname__formatjoinmapreescape_VALID_URL_BASE r   r   >/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/cineverse.pyr      s   r   c                   @   st   e Zd Zej dZdddddddd	d
ddgdddddddddddddddgddddddd dgZd!d" Zd#S )$CineverseIEz/watch/(?P<id>[A-Z0-9]+)z<https://www.asiancrush.com/watch/DMR00018919/Women-Who-Flirtzgeo-blockedzWomen Who Flirtmp4ZDMR00018919l   9]9zXun ZhouzXiaoming Huangz
Yi-Lin Siez	Sonia SuiZ	QunicirengԘ@z$md5:892fd62a05611d394141e8394ace0bc6   )titleextidmodified_timestampcastdurationdescription	age_limit)urlskip	info_dictzFhttps://www.retrocrush.tv/watch/1000000023016/Archenemy! Crystal BowiezArchenemy! Crystal BowieZ1000000023016   r   zNachi NozawazYoshiko SakakibarazToshiko Fujitar   z	Episode 3zSeason 1gT㥛D4@z@Cobra meets a beautiful bounty hunter by the name of Jane Royal.)Space Adventure COBRA (Original Japanese))r   r   r   episode_numberseason_numberr    r#   episodeseasonr!   r"   seriesc                 C   s  t |i d\}}| d|di | |}| ||}| ||d d d }|d}|dkrn|   n|d	kr| jd
|dd tdt	|ddt
hifpd i| |d |dt	|dddddd hfdddd hfdddddthfddthfddthfddthfd d!
S )"N)default	countriesgeo_countriesprops	pagePropsidetailserr_codei  i  zThis video is not available from your location due to geo restriction. You may be able to bypass it by using the /details/ page instead of the /watch/ page)r/   en)Z
cc_url_vttZsubtitle_urlr$   )Z	subtitlesformatsr   )detailsitem_id)r7   r"   r!   c                 S   s   | d S )Ni  r   xr   r   r   <lambda>X       z+CineverseIE._real_extract.<locals>.<lambda>r7   r    c                 S   s
   |  dS Nz, splitr9   r   r   r   r;   Y   r<   Z
updated_byr   Zupdate_timetimer,   r+   Zrating_code)r7   Zseries_detailsr   )
r   r   r"   r!   r    r   r*   r)   r#   r-   )r
   Z_initialize_geo_bypassgetZ	_match_id_download_webpage_search_nextjs_dataZraise_login_requiredZraise_geo_restrictedr   r	   r   Z_extract_m3u8_formatsr   r   )selfr$   Zsmuggled_dataZvideo_idhtmlr3   r4   r   r   r   _real_extract=   sF     


 


zCineverseIE._real_extractNr   r   r   r   r   Z
_VALID_URLZ_TESTSrF   r   r   r   r   r      s>    r   c                   @   sX   e Zd Zej dZdddddddd	d
dddddddddgdddgZdd ZdS )CineverseDetailsIEz/details/(?P<id>[A-Z0-9]+)zYhttps://www.retrocrush.tv/details/1000000023012/Space-Adventure-COBRA-(Original-Japanese)   r(   Z1000000023012)r   r   )r$   Zplaylist_mincountr&   z=https://www.asiancrush.com/details/NNVG4938/Hansel-and-GretelZNNVG4938r   zHansel and Gretelz$md5:e3e4c35309c2e82aee044f972c2fb05dzJeong-myeong CheonzEun Won-jaezShim Eun-gyeongz
Ji-hee JinzHee-soon Parkz
Lydia ParkzKyeong-ik KimgZdv@)r   r   r   r"   r    r!   )r$   r&   c                    s    |dd\}||}||d d }t|dddd hf t|d	d
k fddt|ddddd f}|rjfdd|D |t|ddS |d S )Nhostr   r1   r2   itemDetailsDataZgeo_countryc                 S   s
   |  dS r=   r>   r9   r   r   r   r;   }   r<   z2CineverseDetailsIE._real_extract.<locals>.<lambda>)rK   Zplayback_err_msgz-This title is not available in your location.c                    s<   d d| d  d| d  }r0t |d i}|tS )Nzhttps://www.z/watch/r8   /r   r0   )r   Z
url_resultr   )itemZitem_url)r0   
geoblockedrJ   rD   r   r   item_result   s    z5CineverseDetailsIE._real_extract.<locals>.item_resultZseasonEpisodes.Zepisodesc                 S   s   |d o|d S )Nr8   r   r   )_vr   r   r   r;      r<   c                    s   g | ]} |qS r   r   ).0ep)rO   r   r   
<listcomp>   s     z4CineverseDetailsIE._real_extract.<locals>.<listcomp>)rK   r   )Zplaylist_idZplaylist_title)Z_match_valid_urlgrouprB   rC   r	   Zplaylist_result)rD   r$   Z	series_idrE   Z	pagepropsr,   r   )r0   rN   rJ   rO   rD   r   rF   x   s    z CineverseDetailsIE._real_extractNrG   r   r   r   r   rH   c   s$   rH   )r   commonr   utilsr   r   r   r   r	   r
   r   r   r   rH   r   r   r   r   <module>   s
   $H