U
    gY:                     @   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   =/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/viewlift.py_fetch_token#   s    
zViewLiftBaseIE._fetch_tokenc           	      C   s   |  || z&| j| j| |d| j|i|dW S  tk
r } zt|jtr|jj	dkr|jj
  }ztt|dd}W n. tjk
r   t| d| |jdY nX |rd|kr| jd	d
 t|dd W 5 d }~X Y nX 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                	   @   sn   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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r   md5	info_dictzQhttp://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 exist)r   r=   r>   skipzQhttp://www.snagfilms.com/embed/player?filmId=0000014c-de2f-d5d6-abcf-ffef58af0017Tr   Zonly_matchingc                 C   s  |  | \}}|dd }|| jk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tbrrG   Zvcodec)ZcontentDetailsZclosedCaptionslanguageZEnglishr9   ZvideoImageUrlZruntimeZparentalRatingZpublishDatei  )
categories.r8   )tags.r8   )r6   r8   r9   	thumbnailduration	age_limitr:   formats	subtitlesrL   rM   )_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_datarD   r8   Zvideo_assetsZhls_urlrQ   rR   Zvideo_assetZvideo_asset_urlrF   rG   subssubZsub_urlr   r   r   _real_extract^   s    

    

     

  

 

zViewLiftEmbedIE._real_extractN)
r/   r0   r1   IE_NAMEr   r2   
_VALID_URLZ_EMBED_REGEX_TESTSr\   r   r   r   r   r4   @   s4   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)id*d+d)d,d-d)d,d.d)d,d/d)d,d0d)d,d1d)d,d2d3d	d4d5d6d7d8d(d)id*d9d:d	d;d<d6d=d8d(d)id*d>d?d	d@dAd6dBdCdDd(d)id*dEdFd	dGdHd6d7dIdDd(d)id*dJdKd	dLdMd6dNdOdDd(d)id*dPdQdRdSidTdUddRdVidTdWd)d,dXdYdRdZidTd[d\d]d	d^d_d`dagdbdcdddedfdgd(d)i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   rN   rO   rL   rP   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   rb   r7   r8   r9   rN   rO   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   rb   r7   r8   r9   rN   rO   r;   r:   rP   Zskip_downloadT)r   r>   paramsz1http://main.snagfilms.com/films/title/the_freebier@   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re:^https?://.*\.jpg$Z20211006)r6   r7   r8   r9   rN   r;   z+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   rN   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>   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:   rL   rM   rN   rb   r9   rO   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   rh   H  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)rD   Z	permalinkzhttps://www.)Zie)r   r
   Z
url_resultie_key)r   rX   seasonsZseasonZepisoder+   r   r   r   _show_entriesL  s
    
zViewLiftIE._show_entriesc           	      C   s   |  | \}}}|dd }|| jkr6| j| }| |d||dd||dd }tdd	 |D d }|r| | |||S td
d	 |D }dd| d| ||ddS )NrA   rB   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   rn   Nr   .0mr   r   r   	<genexpr>`  s      z+ViewLiftIE._real_extract.<locals>.<genexpr>c                 s   s0   | ](}| d dkr|d d d d V  qdS )rr   ZVideoDetailModulers   r   rD   r6   Nrt   ru   r   r   r   rx   d  s      Zurl_transparentzhttp://z/embed/player?filmId=ZViewLiftEmbed)_typer   r6   rb   rm   )rS   rT   rU   r3   r.   nextZplaylist_resultro   )	r   r   rX   r+   rb   r   rq   rn   rY   r   r   r   r\   S  s6    

   zViewLiftIE._real_extract)r/   r0   r1   r]   r"   r   r2   r^   r_   classmethodrh   ro   r\   __classcell__r   r   rk   r   r`      sL   			      +r`   )r(   commonr   Znetworking.exceptionsr   utilsr   r   r   r	   r
   r   r4   r`   r   r   r   r   <module>   s   	2Z