o
    i;                     @   sp   d dl Z ddlmZ ddlmZ ddl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   )	HTTPError)ExtractorErrorint_or_nonejoin_nonemptyparse_age_limittraverse_objc                   @   sJ   e Zd ZdZdZddddddddd	d
dddddZi Zdd Zdd ZdS )ViewLiftBaseIEzhttps://prod-api.viewlift.com/a&  (?:(?:main\.)?snagfilms|snagxtreme|funnyforfree|kiddovid|winnersview|(?:monumental|lax)sportsnetwork|vayafilm|failarmy|ftfnext|lnppass\.legapallacanestro|moviespree|app\.myoutdoortv|neoufitness|pflmma|theidentitytb|chorki)\.com|(?:hoichoi|app\.horseandcountry|kronon|marquee|supercrosslive)\.tvlax	snagfilms	hoichoitvlnpz
marquee-tvzmonumental-network	bingeflixpfltampabay
prothomalo)ftfnextfunnyforfreehoichoikiddovidlaxsportsnetworklegapallacanestromarqueemonumentalsportsnetwork
moviespreepflmma
snagxtremetheidentitytbvayafilmchorkic                 C   sd   | j |rd S | |}|r!|dr!| d|d jd| j |< | j |s0| jddd d S d S )Ntokenz)22authorizationToken\%22:\%22([^\%]+)\%22zLCookies (not necessarily logged in) are needed to download from this websitecookiesmethod)_TOKENSget_get_cookies_search_regexvalueraise_login_required)selfsiteurlr#    r/   M/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/viewlift.py_fetch_token#   s   
zViewLiftBaseIE._fetch_tokenc           	      C   s   |  || z| j| j| |d| j|i|dW S  tyl } zGt|jtrg|jj	dkrg|jj
  }ztt|dd}W n tjyT   t| d| |jdw |rgd|v ra| jd	d
 t|dd d }~ww )NAuthorization)headersqueryi  errorMessagemessagez said: )causezhas not purchasedr#   r$   T)expected)r1   _download_json	_API_BASEr&   r'   r   
isinstancer7   r   statusresponsereaddecoder
   jsonloadsJSONDecodeErrorr+   )	r,   r-   pathvideo_idr.   r4   ewebpageerror_messager/   r/   r0   	_call_api-   s(   zViewLiftBaseIE._call_apiN)	__name__
__module____qualname__r:   _DOMAINS_REGEX	_SITE_MAPr&   r1   rH   r/   r/   r/   r0   r      s*    
r   c                	   @   s   e Zd ZdZdej dZdej dgZdddd	d
dddddddddd	dddddddgZddd	d
dddgZ	dd Z
dS ) ViewLiftEmbedIEzviewlift:embedz(https?://(?:(?:www|embed)\.)?(?P<domain>zK)/embed/player\?.*\bfilmId=(?P<id>[\da-f]{8}-(?:[\da-f]{4}-){3}[\da-f]{12})z=<iframe[^>]+?src=(["\'])(?P<url>(?:https?:)?//(?:embed\.)?(?:z)/embed/player.+?)\1zYhttp://embed.snagfilms.com/embed/player?filmId=74849a00-85a9-11e1-9660-123139220831&w=500 2924e9215c6eff7a55ed35b72276bd93z$74849a00-85a9-11e1-9660-123139220831mp4z#whilewewatchz$md5:b542bef32a6f657dadd0df06e26fb0c8iO20120413)idexttitledescription	timestampupload_dateInvalid URLr.   md5	info_dictskipzQhttp://www.snagfilms.com/embed/player?filmId=17ca0950-a74a-11e0-a92a-0026bb61d036 882fca19b9eb27ef865efeeaed376a48z$17ca0950-a74a-11e0-a92a-0026bb61d036zLife in Limbo)rR   rS   rT   zThe video does not existzQhttp://www.snagfilms.com/embed/player?filmId=0000014c-de2f-d5d6-abcf-ffef58af0017Tr.   only_matchingzOhttp://whilewewatch.blogspot.ru/2012/06/whilewewatch-whilewewatch-gripping.htmlzDead embed URLr.   r[   r\   c                 C   s  |  | \}}|dd }|| jv r| j| }| |d||d|id }|d }|d }|d d	 }|d
}	g i }
}|	rN| j|	|ddd
dd\}
}|dpTg D ]0}|d}|s_qUt|d}t| jd|ddd d}|
	|t
d||||dd qUi }t|dpg D ]}|d}|sq||ddg 	d|i q|||d|dt|dt|dt|d d!|
| ||t|d"t|d#d$S )%N.zentitlement/video/statusrR   videogistrT   streamingInfovideoAssetshlsrP   m3u8_nativeF)m3u8_idfatalmpegr.   bitratez^_?(\d+)[pP]$renditionValueheight)defaulthttpcodec)r.   	format_idtbrrn   vcodec)contentDetailsclosedCaptionslanguageEnglishrU   videoImageUrlruntimeparentalRatingpublishDatei  )
categories.rT   )tags.rT   )rR   rT   rU   	thumbnailduration	age_limitrV   formats	subtitlesr}   r~   )_match_valid_urlgroupssplitrM   rH   r'   #_extract_m3u8_formats_and_subtitlesr   r)   appendr   r
   
setdefaultr	   _merge_subtitles)r,   r.   domainfilm_idr-   content_datard   rT   video_assetshls_urlr   r   video_assetvideo_asset_urlrl   rn   subssubsub_urlr/   r/   r0   _real_extracth   sp   









zViewLiftEmbedIE._real_extractN)rI   rJ   rK   IE_NAMEr   rL   
_VALID_URL_EMBED_REGEX_TESTS_WEBPAGE_TESTSr   r/   r/   r/   r0   rN   @   sF    
rN   c                       s  e Zd ZdZdZdej dZddddd	d
ddddddddddddddd	ddddddd	dddd d!d	d"d#dd$d%d&d'd(
dd)d*d+d,d-d+d,d.d+d,d/d+d,d0d+d,d1d+d,d2d3d	d4d5dd6d7d8d)d9d:d	d;d<dd=d7d8d)d>d?d	d@dAddBdCdDdd)dEdFd	dGdHdd6dIdDdd)dJdKd	dLdMddNdOdDdd)dPdQdRdSid8dTdUddRdVid8dTdWd+d,dXdYdRdZid8dTd[d\d]d	d^d_d`dagdbdcdddedfdgdd)dhd+d,gZe	 fdidjZ
dkdl Zdmdn Z  ZS )o
ViewLiftIEviewliftz'https://prod-api-cached-2.viewlift.com/zhttps?://(?:www\.)?(?P<domain>zL)(?P<path>(?:/(?:films/title|show|(?:news/)?videos?|watch))?/(?P<id>[^?#]+))z2http://www.snagfilms.com/films/title/lost_for_life 19844f897b35af219773fd63bdec2942z$0000014c-de2f-d5d6-abcf-ffef58af0017lost_for_liferP   zLost for Lifez$md5:ea10b5a50405ae1f7b5269a6ec594102zre:https?://.+\.jpgi  z
mincount:3   20150421i6U)rR   
display_idrS   rT   rU   r   r   r}   r   rW   rV   rX   rY   z9http://www.snagfilms.com/show/the_world_cut_project/india e6292e5b837642bbda82d7f8bf3fbdfdz$00000145-d75c-d96e-a9c7-ff5c67b20000zthe_world_cut_project/indiaIndiaz$md5:5c168c5a8f4719c146aad2e0dfac6f5fi  iXjS20140507)	rR   r   rS   rT   rU   r   r   rV   rW   z4http://main.snagfilms.com/augie_alone/s_2_ep_12_lovez$00000148-7b53-de26-a9fb-fbf306f70020zaugie_alone/s_2_ep_12_lovezS. 2 Ep. 12 - LovezAugie finds love.k   20141012iD:T   )
rR   r   rS   rT   rU   r   r   rW   rV   r   r`   z1http://main.snagfilms.com/films/title/the_freebieTr^   z1http://www.snagfilms.com/films/title/inside_meccaz2http://www.snagfilms.com/show/augie_alone/flirtingz.http://www.winnersview.com/videos/the-good-sonzLhttps://www.monumentalsportsnetwork.com/videos/john-carlson-postgame-2-25-15z8https://www.marquee.tv/watch/sadlerswells-sacredmonstersz/https://www.hoichoi.tv/bn/films/title/shuyopokaz$7a7a9d33-1f4c-4771-9173-ee4fb6dbf196	Shuyopokaz$md5:e28f2fb8680096a69c944d37c1fa5ffc20211006)rR   rS   rT   rU   r   rW   zSubscription requiredz+https://www.hoichoi.tv/films/title/dadu-no1z$0000015b-b009-d126-a1db-b81ff3780000z	Dadu No.1z$md5:605cba408e51a79dafcb824bdeded51e20210827z6https://www.hoichoi.tv/webseries/case-jaundice-s01-e01z$f779e07c-30c8-459c-8612-5a834ab5e5bazHumans Vs. Coronaz$md5:ca30a682b4528d02a3eb6d0427dd0f8720210830zCase Jaundice)rR   rS   rT   rU   r   rW   seriesz@https://www.hoichoi.tv/videos/1549072415320-six-episode-02-hindiz$b41fa1ce-aca6-47b6-b208-283ff0a2de30zWoman in red - Hindiz$md5:9d21edc1827d32f8633eb67c2054fc31zSix (Hindi)zWhttps://www.hoichoi.tv/shows/watch-asian-paints-moner-thikana-online-season-1-episode-1z$1f45d185-8500-455c-b88d-13252307c3ebzJisshu Senguptaz$md5:ef6ffae01a3d83438597367400f824ed20211004zAsian Paints Moner ThikanazJhttps://www.hoichoi.tv/shows/watch-moner-thikana-bengali-web-series-online   rR   z-watch-moner-thikana-bengali-web-series-online)r.   playlist_mincountr[   r\   zEhttps://www.hoichoi.tv/shows/watch-byomkesh-bengali-web-series-onlinez(watch-byomkesh-bengali-web-series-onlinez,https://www.hoichoi.tv/movies/detective-2020z(https://www.chorki.com/bn/series/sinpaat   zbn/series/sinpaatz5https://www.chorki.com/bn/videos/bangla-movie-bikkhovz$564e755b-f5c7-4515-aee6-8959bee18c93Bikkhov20230824i dzAction MovieszSalman Specialzcount:14z~https://snagfilms-a.akamaihd.net/dd078ff5-b16e-45e4-9723-501b56b9df0a/images/2023/08/24/1692860450729_1920x1080_16x9Images.jpgzbn/videos/bangla-movie-bikkhovz$md5:71492b086450625f4374a3eb824f27dciB  )rR   rT   rS   rW   rV   r}   r~   r   r   rU   r   z@https://www.chorki.com/bn/videos/something-like-an-autobiographyc                    s   t |rdS t |S )NF)rN   suitablesuper)clsr.   	__class__r/   r0   r   S  s   zViewLiftIE.suitablec                 c   sP    |D ]"}| dpg D ]}t|d}|r$| jd| | |  dV  qqd S )Nepisodes)rd   	permalinkzhttps://www.)ie)r'   r
   
url_resultie_key)r,   r   seasonsseasonepisoderC   r/   r/   r0   _show_entriesW  s   
zViewLiftIE._show_entriesc           	      C   s   |  | \}}}|dd }|| jv r| j| }| |d||dd||dd }tdd	 |D d }|rA| | |||S td
d	 |D }dd| d| ||ddS )Nra   rb   zcontent/pagestruer   )includeContentmoduleOffsetrC   r-   modulesc                 s   s.    | ]}| d dkr|d d d V  qdS )
moduleTypeShowDetailModulecontentDatar   r   Nr'   .0mr/   r/   r0   	<genexpr>k  s   , z+ViewLiftIE._real_extract.<locals>.<genexpr>c                 s   s2    | ]}| d dkr|d d d d V  qdS )r   VideoDetailModuler   r   rd   rR   Nr   r   r/   r/   r0   r   o  s   0 url_transparentzhttp://z/embed/player?filmId=ViewLiftEmbed)_typer.   rR   r   r   )r   r   r   rM   rH   nextplaylist_resultr   )	r,   r.   r   rC   r   r-   r   r   r   r/   r/   r0   r   ^  s0   

zViewLiftIE._real_extract)rI   rJ   rK   r   r:   r   rL   r   r   classmethodr   r   r   __classcell__r/   r/   r   r0   r      sJ   			  ,r   )r@   commonr   networking.exceptionsr   utilsr   r   r   r	   r
   r   rN   r   r/   r/   r/   r0   <module>   s    	2d