
    VGhY:                         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e      Z G d	 d
e      Z G d de      Zy)    N   )InfoExtractor   )	HTTPError)ExtractorErrorint_or_nonejoin_nonemptyparse_age_limittraverse_objc                   F    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 Zd Zy)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                 <   | j                   j                  |      ry | j                  |      }|r>|j                  d      r-| j                  d|d   j                  d      | j                   |<   | j                   j                  |      s| j                  dd       y y )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&   s       b/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/viewlift.py_fetch_tokenzViewLiftBaseIE._fetch_token#   s    <<D!##C(w{{7+!%!3!34`bijqbrbxbx  {B  "CDLL||%%%&t  ~G%  H &    c                    | j                  ||       	 | j                  | j                  |z   |d| j                  j	                  |      i|      S # t
        $ r}t        |j                  t              r|j                  j                  dk(  r|j                  j                  j                         j                         }	 t        t        j                  |      dd      }n3# t        j                   $ r t        | d| |j                        w xY w|r#d|v r| j#                  d	
       t        |d       d }~ww xY w)NAuthorization)headersqueryi  errorMessagemessagez said: )causezhas not purchasedr&   r'   T)expected)r3   _download_json	_API_BASEr)   r*   r   
isinstancer;   r   statusresponsereaddecoder   jsonloadsJSONDecodeErrorr.   )	r/   r0   pathvideo_idr1   r8   ewebpageerror_messages	            r2   	_call_apizViewLiftBaseIE._call_api-   s$   $$	&&%x/4<<K[K[\`Ka9bjo ' q q 	!''9-!''..C2G''**//188:S$0G1DnV_$`M++ S(D6	)B!''RRS *m;111C(FF	s0   <A 	D?A%D:  C! D:!0D)D::D?N)	__name__
__module____qualname__r>   _DOMAINS_REGEX	_SITE_MAPr)   r3   rL    r4   r2   r   r      sR    0I N#!"#7!!#I  GHr4   r   c            	           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 Z	y)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r1   md5	info_dictzQhttp://www.snagfilms.com/embed/player?filmId=17ca0950-a74a-11e0-a92a-0026bb61d036 882fca19b9eb27ef865efeeaed376a48z$17ca0950-a74a-11e0-a92a-0026bb61d036zLife in Limbo)rX   rY   rZ   zThe video does not exist)r1   r_   r`   skipzQhttp://www.snagfilms.com/embed/player?filmId=0000014c-de2f-d5d6-abcf-ffef58af0017Tr1   only_matchingc                    | j                  |      j                         \  }}|j                  d      d   }|| j                  v r| j                  |   }| j	                  |d||d|i      d   }|d   }|d   }|d   d	   }|j                  d
      }	g i }}
|	r| j                  |	|ddd
d      \  }
}|j                  d      xs g D ]  }|j                  d      }|st        |j                  d            }t        | j                  d|j                  d      dd             }|
j                  |t        d|      |||j                  d      d        i }t        |d      xs g D ]I  }|j                  d      }|s|j                  |j                  dd      g       j                  d|i       K |||j                  d      |j                  d      t        |j                  d            t        |j                  d            t        |j                  d       d!      |
| j                  ||      t        |d"      t        |d#      d$S )%N.zentitlement/video/statusrX   videogistrZ   streamingInfovideoAssetshlsrV   m3u8_nativeF)m3u8_idfatalmpegr1   bitratez^_?(\d+)[pP]$renditionValueheight)defaulthttpcodec)r1   	format_idtbrrs   vcodec)contentDetailsclosedCaptionslanguageEnglishr[   videoImageUrlruntimeparentalRatingpublishDatei  )
categories.rZ   )tags.rZ   )rX   rZ   r[   	thumbnailduration	age_limitr\   formats	subtitlesr   r   )_match_valid_urlgroupssplitrQ   rL   r*   #_extract_m3u8_formats_and_subtitlesr   r,   appendr	   r   
setdefaultr
   _merge_subtitles)r/   r1   domainfilm_idr0   content_datari   rZ   video_assetshls_urlr   r   video_assetvideo_asset_urlrq   rs   subssubsub_urls                      r2   _real_extractzViewLiftEmbedIE._real_extract^   s|   //4;;=||C $4>>!>>$'D~~,gsg=  F#W#O4]C""5)!%!I!I%U "J "TGY (++F39r 	K)ooe4O"!+//)"<=G !3!3 +//2B"C$ "4 "( )F NN&*67; %//'2 	  .RSYWY 	CggenGOOCGGJ	:B?FFwH 		 88M2/2#DHHY$78()9)9:J)KL$TXXm%<dC..tY?&|5QR /EF
 	
r4   N)
rM   rN   rO   IE_NAMEr   rP   
_VALID_URL_EMBED_REGEX_TESTSr   rR   r4   r2   rT   rT   @   s    G<^=Z=Z<[  \o  pJTUcUrUrTs  tH  I  JLj18$A#%
 c18$

 +
 c+F49
r4   rT   c                       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di       Z
dj Zdk Z xZS )l
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_liferV   zLost for Lifez$md5:ea10b5a50405ae1f7b5269a6ec594102zre:^https?://.*\.jpgi  z
mincount:3   20150421i6U)rX   
display_idrY   rZ   r[   r   r   r   r   r]   r\   r^   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)	rX   r   rY   rZ   r[   r   r   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   20141012iD:T   )
rX   r   rY   rZ   r[   r   r   r]   r\   r   skip_downloadT)r1   r`   paramsz1http://main.snagfilms.com/films/title/the_freebierc   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:e28f2fb8680096a69c944d37c1fa5ffczre:^https?://.*\.jpg$20211006)rX   rY   rZ   r[   r   r]   z+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)rX   rY   rZ   r[   r   r]   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   rX   z-watch-moner-thikana-bengali-web-series-online)r1   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-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  )rX   rZ   rY   r]   r\   r   r   r   r   r[   r   z@https://www.chorki.com/bn/videos/something-like-an-autobiographyc                 P    t         j                  |      rdS t        |   |      S )NF)rT   suitablesuper)clsr1   	__class__s     r2   r   zViewLiftIE.suitableH  s%    '005uP57;KC;PPr4   c              #      K   |D ]S  }|j                  d      xs g D ]9  }t        |d      }|s| j                  d| | | j                                ; U y w)Nepisodes)ri   	permalinkzhttps://www.)ie)r*   r   
url_resultie_key)r/   r   seasonsseasonepisoderG   s         r2   _show_entrieszViewLiftIE._show_entriesL  sj      	[F!::j17R [#G-BC//L*GDKKM/ZZ[	[s
   ,A-Ac                    | j                  |      j                         \  }}}|j                  d      d   }|| j                  v r| j                  |   }| j	                  |d||dd||d      d   }t        d |D        d       }|r"| j                  | j                  ||      |      S t        d	 |D              }d
d| d| ||ddS )Nrf   rg   zcontent/pagestruer   )includeContentmoduleOffsetrG   r0   modulesc              3   \   K   | ]$  }|j                  d       dk(  s|d   d   d    & yw)
moduleTypeShowDetailModulecontentDatar   r   Nr*   .0ms     r2   	<genexpr>z+ViewLiftIE._real_extract.<locals>.<genexpr>`  s1     u1155Q]K^btKt-(+I6us   ,,c              3   b   K   | ]'  }|j                  d       dk(  s|d   d   d   d    ) yw)r   VideoDetailModuler   r   ri   rX   Nr   r   s     r2   r   z+ViewLiftIE._real_extract.<locals>.<genexpr>d  s6     xQQUUS_M`dwMwq'*6248xs   //url_transparentzhttp://z/embed/player?filmId=ViewLiftEmbed)_typer1   rX   r   r   )r   r   r   rQ   rL   nextplaylist_resultr   )	r/   r1   r   rG   r   r0   r   r   r   s	            r2   r   zViewLiftIE._real_extractS  s    #'#8#8#=#D#D#F j||C $4>>!>>$'D../:s"( !	5  uuw{|''(:(:67(KZXXx'xx&VH$9'C$%
 	
r4   )rM   rN   rO   r   r>   r   rP   r   r   classmethodr   r   r   __classcell__)r   s   @r2   r   r      s   G9I2>3P3P2Q  R^  _JC18)$A0&%#
" K187A0#%

 F86).0%#
 T
$ C
 C D
 @
 ^
 J A8 A1%
 #D) =8 A1%
 #D) H8(A1%%
 #D) R8+A1%#
 #D) i8&A1%2
 #D) \A
 W<
 > :%
 G8%#*,<= Z:A
 T
& RKhFT Q Q[
r4   r   )rD   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   rT   r   rR   r4   r2   <module>r      sB     ! - /] /dW
n W
tQ
 Q
r4   