a
    h;                     @   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)\.tvZlaxZ	snagfilmsZ	hoichoitvZlnpz
marquee-tvzmonumental-networkZ	bingeflixZpflZtampabayZ
prothomalo)ZftfnextZfunnyforfreeZhoichoiZkiddovidZlaxsportsnetworkZlegapallacanestromarqueeZmonumentalsportsnetworkZ
moviespreeZpflmmaZ
snagxtremeZtheidentitytbZvayafilmZchorkic                 C   s`   | j |rd S | |}|rB|drB| d|d jd| j |< | j |s\| jddd d S )Ntokenz)22authorizationToken\%22:\%22([^\%]+)\%22zLCookies (not necessarily logged in) are needed to download from this websitecookiesmethod)_TOKENSgetZ_get_cookies_search_regexvalueraise_login_required)selfsiteurlr    r   N/mnt/pikpak/tmp/myenv/lib/python3.9/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y } zt|jtr|jj	dkr|jj
  }ztt|dd}W n, tjy   t| d| |jdY n0 |rd|v r| jd	d
 t|dd W Y d }~n
d }~0 0 d S )NAuthorization)headersqueryi  ZerrorMessagemessagez said: )causezhas not purchasedr   r   T)expected)r   Z_download_json	_API_BASEr   r   r   
isinstancer    r   statusresponsereaddecoder
   jsonloadsJSONDecodeErrorr   )	r   r   pathZvideo_idr   r   eZwebpageerror_messager   r   r   	_call_api-   s"    zViewLiftBaseIE._call_apiN)	__name__
__module____qualname__r"   _DOMAINS_REGEX	_SITE_MAPr   r   r.   r   r   r   r   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=500Z 2924e9215c6eff7a55ed35b72276bd93z$74849a00-85a9-11e1-9660-123139220831mp4z#whilewewatchz$md5:b542bef32a6f657dadd0df06e26fb0c8iOZ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-0026bb61d036Z 882fca19b9eb27ef865efeeaed376a48z$17ca0950-a74a-11e0-a92a-0026bb61d036zLife in Limbo)r6   r7   r8   zThe video does not existzQhttp://www.snagfilms.com/embed/player?filmId=0000014c-de2f-d5d6-abcf-ffef58af0017Tr   Zonly_matchingzOhttp://whilewewatch.blogspot.ru/2012/06/whilewewatch-whilewewatch-gripping.htmlzDead embed URLr   r?   r@   c                 C   s  |  | \}}|dd }|| jv r4| j| }| |d||d|id }|d }|d }|d d	 }|d
}	g i  }
}|	r| j|	|ddd
dd\}
}|dpg D ]`}|d}|sqt|d}t| jd|ddd d}|
	|t
d||||dd qi }t|dpg D ]8}|d}|s8q ||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/statusr6   videogistr8   ZstreamingInfoZvideoAssetsZhlsr5   Zm3u8_nativeF)Zm3u8_idfatalZmpegr   bitratez^_?(\d+)[pP]$ZrenditionValueheight)defaulthttpcodec)r   Z	format_idZtbrrI   Zvcodec)ZcontentDetailsZclosedCaptionslanguageZEnglishr9   ZvideoImageUrlZruntimeZparentalRatingZpublishDatei  )
categories.r8   )tags.r8   )r6   r8   r9   	thumbnailduration	age_limitr:   formats	subtitlesrN   rO   )_match_valid_urlgroupssplitr3   r.   r   Z#_extract_m3u8_formats_and_subtitlesr   r   appendr   r
   
setdefaultr	   Z_merge_subtitles)r   r   domainfilm_idr   Zcontent_datarF   r8   Zvideo_assetsZhls_urlrS   rT   Zvideo_assetZvideo_asset_urlrH   rI   subssubZsub_urlr   r   r   _real_extracth   sp    










zViewLiftEmbedIE._real_extractN)r/   r0   r1   IE_NAMEr   r2   
_VALID_URLZ_EMBED_REGEX_TESTSZ_WEBPAGE_TESTSr^   r   r   r   r   r4   @   sD   
r4   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
ViewLiftIEZ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_lifeZ 19844f897b35af219773fd63bdec2942z$0000014c-de2f-d5d6-abcf-ffef58af0017Zlost_for_lifer5   zLost for Lifez$md5:ea10b5a50405ae1f7b5269a6ec594102zre:https?://.+\.jpgi  z
mincount:3   Z20150421i6U)r6   
display_idr7   r8   r9   rP   rQ   rN   rR   r;   r:   r<   r=   z9http://www.snagfilms.com/show/the_world_cut_project/indiaZ e6292e5b837642bbda82d7f8bf3fbdfdz$00000145-d75c-d96e-a9c7-ff5c67b20000zthe_world_cut_project/indiaZIndiaz$md5:5c168c5a8f4719c146aad2e0dfac6f5fi  iXjSZ20140507)	r6   rd   r7   r8   r9   rP   rQ   r:   r;   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   Z20141012iD:T   )
r6   rd   r7   r8   r9   rP   rQ   r;   r:   rR   rB   z1http://main.snagfilms.com/films/title/the_freebieTrA   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-ee4fb6dbf196Z	Shuyopokaz$md5:e28f2fb8680096a69c944d37c1fa5ffcZ20211006)r6   r7   r8   r9   rP   r;   zSubscription requiredz+https://www.hoichoi.tv/films/title/dadu-no1z$0000015b-b009-d126-a1db-b81ff3780000z	Dadu No.1z$md5:605cba408e51a79dafcb824bdeded51eZ20210827z6https://www.hoichoi.tv/webseries/case-jaundice-s01-e01z$f779e07c-30c8-459c-8612-5a834ab5e5bazHumans Vs. Coronaz$md5:ca30a682b4528d02a3eb6d0427dd0f87Z20210830zCase Jaundice)r6   r7   r8   r9   rP   r;   Z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:ef6ffae01a3d83438597367400f824edZ20211004zAsian Paints Moner ThikanazJhttps://www.hoichoi.tv/shows/watch-moner-thikana-bengali-web-series-online   r6   z-watch-moner-thikana-bengali-web-series-online)r   Z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-8959bee18c93ZBikkhovZ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  )r6   r8   r7   r;   r:   rN   rO   rP   rd   r9   rQ   z@https://www.chorki.com/bn/videos/something-like-an-autobiographyc                    s   t |rdS t |S )NF)r4   suitablesuper)clsr   	__class__r   r   ri   S  s    zViewLiftIE.suitablec                 c   sN   |D ]D}| dpg D ]0}t|d}|r| jd| | |  dV  qqd S )NZepisodes)rF   Z	permalinkzhttps://www.)Zie)r   r
   Z
url_resultie_key)r   rZ   seasonsZseasonZepisoder+   r   r   r   _show_entriesW  s
    
zViewLiftIE._show_entriesc           	      C   s   |  | \}}}|dd }|| jv r6| j| }| |d||dd||dd }tdd	 |D d }|r| | |||S td
d	 |D }dd| d| ||ddS )NrC   rD   zcontent/pagestruer   )ZincludeContentZmoduleOffsetr+   r   modulesc                 s   s,   | ]$}| d dkr|d d d V  qdS )
moduleTypeZShowDetailModulecontentDatar   ro   Nr   .0mr   r   r   	<genexpr>k      z+ViewLiftIE._real_extract.<locals>.<genexpr>c                 s   s0   | ](}| d dkr|d d d d V  qdS )rs   ZVideoDetailModulert   r   rF   r6   Nru   rv   r   r   r   ry   o  rz   Zurl_transparentzhttp://z/embed/player?filmId=ZViewLiftEmbed)_typer   r6   rd   rn   )rU   rV   rW   r3   r.   nextZplaylist_resultrp   )	r   r   rZ   r+   rd   r   rr   ro   r[   r   r   r   r^   ^  s0    

zViewLiftIE._real_extract)r/   r0   r1   r_   r"   r   r2   r`   ra   classmethodri   rp   r^   __classcell__r   r   rl   r   rb      sH  			  ,rb   )r(   commonr   Znetworking.exceptionsr   utilsr   r   r   r	   r
   r   r4   rb   r   r   r   r   <module>   s   	2d