
    VGhG                         d dl Z d dlZd dlZd dlZddlmZ ddlmZmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZ dZd Z G d	 d
e      Z G d de      Z G d de      Zy)    N   )AdobePassIE   )HEADRequestRequest)ExtractorErrordetermine_extfind_xpath_attrfloat_or_noneint_or_nonemimetype2extparse_age_limitparse_qstraverse_objunsmuggle_url
update_urlupdate_url_queryurl_or_noneurlhandle_detect_extxpath_with_nsz&http://www.w3.org/2005/SMIL21/Languagec                 &    t        | dt        i      S )Nsmil)r   
default_ns)ps    e/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/extractor/theplatform.py<lambda>r      s    }Q 45     c                   6    e Zd ZdZddZddZed        Zd Zy)	ThePlatformBaseIEcomc           	         | j                  |||ddi| j                               }t        |t        d      d      }|t        |t        d      dd      }|y|j	                  d	      d
k(  r| j                  |j                  d          nF|j                  d   j                  d| j                   d      rt        |j                  d   d      | j                  |||t        dddd       \  }}g }	|D ]c  }
|
d   }t        |      dk(  r=| j                  |      j	                  d      }|rt        |d|j                  i      |
d<   |	j!                  |
       e |	|fS )NformatSMIL)notequeryheadersz.//smil:refsrcz.//smil:paramname	exceptionvalueGeoLocationBlockedabstractzhttp://link.theplatform.z/s/errorFiles/Unavailable.T)expectedUXWGVKRWHFSPz3.0.3)ghdcorec                     | d|z   fS )Nzmp4: )streamerr'   s     r   r   z=ThePlatformBaseIE._extract_theplatform_smil.<locals>.<lambda>6   s    h5M r   )	namespace
f4m_paramstransform_rtmp_urlurlm3u8hdnea2hdnea3)_download_xmlgeo_verification_headersr
   _xgetraise_geo_restrictedattrib
startswith_TP_TLDr   !_parse_smil_formats_and_subtitlesr   r	   _get_cookiesr   r*   append)selfsmil_urlvideo_idr$   metaerror_elementr)   smil_formats	subtitlesformats_format	media_urlr9   s                r   _extract_theplatform_smilz+ThePlatformBaseIE._extract_theplatform_smil!   s   !!hT(F1C113 " 5 (b.?G$'r/2FKII$==)-AA--m.B.B:.NO"))%0;;24<<.@Z[](%,,Z84I I #'"H"H(H
 ,w?M #I #Oi # 	$GIY'61**9599(C%5i(FLLAY%ZGENNN7#	$ 	!!r   c                 X    | j                  d| j                   d| ||ddi      xs i S )Nzhttps://link.theplatform.z/s/r"   preview)fatalr%   )_download_jsonrB   )rF   pathrH   rS   s       r   _download_theplatform_metadataz0ThePlatformBaseIE._download_theplatform_metadataD   sB    ""'~S?)4 # 6 <9;	<r   c                    d }t        | i ddt        hfddt        hfddt        hfddt        hfddt        d	      hfd
dt        d	      hfddt        hfddt        ht        t
        t        fddd dt        ht        t
        t        fddt        ht        d ht        fddddt        ht        fd |d      t        ht        fd |dd      t        ht        fd |d d!d"      d#t        ht        fd$ |d%      t        ht        fd& |d'd(      t        ht        f      }t        | d)dd*t        d	      hfd+t        d	      hfd,f      }t        |      d-kD  st        |d.      r||d)<   i |d/<   t        | d0d1 f      D ]W  }|d/   j                  |j                  d2      xs d3g       j                  |d4   t        |j                  d(            d5       Y |S )6Nc                        fdS )Nc                 N    |xr! | j                  t        d D                    S )Nc              3   &   K   | ]	  }d |   yw)$Nr2   ).0fs     r   	<genexpr>zpThePlatformBaseIE._parse_theplatform_metadata.<locals>.site_specific_filter.<locals>.<lambda>.<locals>.<genexpr>L   s     6O11#w6Os   )endswithtuple)kvfieldss     r   r   z]ThePlatformBaseIE._parse_theplatform_metadata.<locals>.site_specific_filter.<locals>.<lambda>L   s      Pajj6O6O1O&P r   r2   )rc   s   `r   site_specific_filterzKThePlatformBaseIE._parse_theplatform_metadata.<locals>.site_specific_filterK   s	    PPr   titleepisodedescription	thumbnaildefaultThumbnailUrlduration  scale	timestamppubDateuploaderbillingCodecreatorsauthor
categoriesc                 (    |j                  d      dv S )Nlabel)categoryN)r>   _rb   s     r   r   z?ThePlatformBaseIE._parse_theplatform_metadata.<locals>.<lambda>X   s    155>=O+O r   r(   tagskeywordsc                 .    t        j                  d|       S )Nz[;,]\s?)resplit)xs    r   r   z?ThePlatformBaseIE._parse_theplatform_metadata.<locals>.<lambda>Z   s    288JPQ;R r   	age_limitratings.ratingseason_numberseasonNumberepisode_numberepisodeNumberairOrderseriesshowseriesTitleseriesShortTitle)N.locationregion
media_typeprogrammingTypetypechapters	startTimeendTime)
start_timeend_timer   )r   r   rL   captionsc                     t        |d         S )Nr'   )r   rx   s     r   r   z?ThePlatformBaseIE._parse_theplatform_metadata.<locals>.<lambda>l   s    ;WXY^W_K` r   langenr'   )r7   ext)r   strr   r   filterallr   anyr   len
setdefaultr>   rE   r   )tp_metadatard   infor   captions        r   _parse_theplatform_metadataz-ThePlatformBaseIE._parse_theplatform_metadataI   s   	Q K *
gu%*
#'*
 MC51*
 /+?	*

 m$&?%@A*
 )m$&?%@A*
 .*
 C5&#v>*
 OvsF4*
 Z#1R0SU[\*
 )S(_4EsK*
 2>B[MSVW*
 3OZPS^R_ade*
  +FMCUVXcfiejlop!*
" -h7#D#*
$ /0A6JSESVW%*
 *  j#&T)B(CD"]%>$?@@
 . 
 x=1X G'D[#K*>`1ab 	G((V)<)DbIPPu~#GKK$78R 	 r   c                 H    | j                  ||      }| j                  |      S )N)rV   r   )rF   rU   rH   r   s       r   _extract_theplatform_metadataz/ThePlatformBaseIE._extract_theplatform_metadatat   s%    224B//55r   N)zDownloading SMIL data)T)	__name__
__module____qualname__rB   rP   rV   staticmethodr   r   r2   r   r   r   r      s,    G!"F<
 ( (T6r   r   c                        e Zd ZdZddgZ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i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/	d0d1d2dd$gZe fd3       Zed6d4       Z	d5 Z
 xZS )7ThePlatformIEz(?x)
        (?:https?://(?:link|player)\.theplatform\.com/[sp]/(?P<provider_id>[^/]+)/
           (?:(?:(?:[^/]+/)+select/)?(?P<media>media/(?:guid/\d+/)?)?|(?P<config>(?:[^/\?]+/(?:swf|config)|onsite)/select/))?
         |theplatform:)(?P<id>[^/\?&]+)z(?x)
            <meta\s+
                property=(["'])(?:og:video(?::(?:secure_)?url)?|twitter:player)\1\s+
                content=(["'])(?P<url>https?://player\.theplatform\.com/p/.+?)\2z](?s)<(?:iframe|script)[^>]+src=(["\'])(?P<url>(?:https?:)?//player\.theplatform\.com/p/.+?)\1z^http://link.theplatform.com/s/dJ5BDC/e9I_cZgTgIPd/meta.smil?format=smil&Tracking=true&mbr=truee9I_cZgTgIPdflvzBlackberry's big, bold Z30zEThe Z30 is Blackberry's biggest, baddest mobile messaging device yet.   irR20131031zCBSI-NEW)idr   re   rg   rj   rn   upload_daterp   skip_downloadTz404 Not Found)r7   	info_dictparamsskipz1http://link.theplatform.com/s/kYEXFC/22d_qsQ6MIRT22d_qsQ6MIRTz$md5:ac330c9258c04f9d7512cf26b9595409z>Tesla Model S: A second step towards a cleaner motoring futureiU20150312)r   r   rg   re   rn   r   rp   zCNet no longer uses ThePlatformzUhttps://player.theplatform.com/p/D6x-PC/pulse_preview/embed/select/media/yMBg9E8KFxZDyMBg9E8KFxZDmp4z$md5:644ad9188d655b742f942bf2e06b002dz-HIGHLIGHTS: USA bag first ever series Cup winEGSM)r   r   rg   re   rp   z	Dead link)r7   r   r   zGhttp://player.theplatform.com/p/NnzsPC/widget/select/media/4Y0TlYUr_ZT7r7   only_matchingzMhttp://player.theplatform.com/p/2E2eJC/nbcNewsOffsite?guid=tdy_or_siri_150701 fb96bb3d85118930a5b055783a3bd992tdy_or_siri_150701uD   iPhone Siri’s sassy response to a math question has people talkingz$md5:a565d1deadd5086f3331d57298ec6333g     T@re:^https?://.*\.jpg$iؓU20150701	NBCU-NEWS)	r   r   re   rg   rj   rh   rn   r   rp   z.Error: Player PID "nbcNewsOffsite" is disabled)r7   md5r   r   zhttp://player.theplatform.com/p/NnzsPC/onsite_universal/select/media/guid/2410887629/2928790?fwsitesection=nbc_the_blacklist_video_library&autoPlay=true&carouselID=137781c              #   j   K   t         |   ||      D ]  }t        j                  dd|        y w)Nz\s )super_extract_embed_urlsr}   sub)clsr7   webpage	embed_url	__class__s       r   r   z!ThePlatformIE._extract_embed_urls   s7      4S'B 	/I&&I..	/s   03c                    |rdnd}dt        t        j                               |z   z  }d }t        j                  d|       j	                  d      }t
        j                  ||z    ||      z         }	t        j                  |j                  d      |	t        j                        j                         }
||z   |
z    ||      z   }|  d| S )	N1000z%xc                 @    | j                  d      j                         S )Nascii)encodehex)str_datas    r   
str_to_hexz+ThePlatformIE._sign_url.<locals>.str_to_hex   s    ??7+//11r   z)https?://link\.theplatform\.com/s/([^?]+)r   r   z&sig=)inttimer}   matchgroupbytesfromhexhmacnewr   hashlibsha1	hexdigest)r7   sig_key
sig_secretlife
include_qsflagsexpiration_dater   relative_path
clear_textchecksumsigs               r   	_sign_urlzThePlatformIE._sign_url   s    "#diik"2T"9:	2 !MsSYYZ[\]]5?#:Z=V#VW
88GNN73ZNXXZo%0:j3IIeC5!!r   c                    t        |i       \  }}| j                  d|j                  d      i       | j                  |      }|j	                  d      }|j	                  d      }|sd}|dz   }|j	                  d      r||j	                  d      z  }||z  }t        |      }d|v r| j                  ||      }t        j                  d	|      }	d }
t        |	      D ]>  }| j                  | j                  |d
      |d      }| j                  d|dd       }
|
> n |
t        d      | j                  dj                  ||
|d   d               S |j                  dd      r|}nd|v rmi }|j                  d      }|r||d<   t        ||      }| j                  ||      }| j                  d|dd      }| j                  d|d      }|d|vrdndz  }nr|j	                  d       r[|d!z   }|j!                  d"d#      }|j!                  d$d%      }| j#                  ||d&      }|j                  d'      xs d(| d)}|d*z   }nd(| d)}|j                  d+      }|r| j%                  ||d,   |d-         }| j'                  ||      \  }}t)        |d.       syt+        |d/d 0      }| j-                  t/        |      |d1d2d3      }|rJt1        |      d4k(  r<| j3                  ||d5d6      \  }}|j5                  |       | j7                  ||7       | j9                  ||      }| j7                  |j                  d8i       |      }|j;                  |||d9       |S ):N	countriesgeo_countriesprovider_idr   dJ5BDC/mediaguidz<script[^>]+src="([^"]+)"zhttp:zDownloading feed scriptzdefaultFeedId\s*:\s*"([^"]+)"zdefault feed id)defaultzUnable to find feed idz-http://feed.theplatform.com/f/{}/{}?byGuid={}r   force_smil_urlFz/guid/
source_urlReferer)r&   zH<link[^>]+href=(["\'])(?P<url>.+?)\1[^>]+type=["\']application/smil\+xmlzsmil urlr7   )r   z1link\.theplatform\.com/s/((?:[^/?#&]+/)+[^/?#&]+)rU   ?z&formats=m3u,mpeg4configz
&form=jsonzswf/zconfig/zonsite/zonsite/config/zDownloading config
releaseUrlzhttp://link.theplatform.com/s/z	?mbr=truez&formats=MPEG4&manifest=f4mr   keysecretc                 *    |d   j                  d      S )N	format_idhls)rA   rx   s     r   r   z-ThePlatformIE._real_extract.<locals>.<lambda>*  s    !K.2K2KE2R r   zmbr=true&manifest=m3u)r%   fragmentzChecking for HLS formatszNo HLS formats found)rS   r8   r   )m3u8_idrS   )targetrL   )r   rM   rL   )r   _initialize_geo_bypassr>   _match_valid_urlr   r   _download_webpager}   findallreversed_proto_relative_url_search_regexr   
url_resultr"   r   replacerT   r   rP   r   r   _request_webpager   r   #_extract_m3u8_formats_and_subtitlesextend_merge_subtitlesr   update)rF   r7   smuggled_datamobjr   rH   rU   qs_dictr   scriptsfeed_idscriptfeed_scriptrG   r&   r   request
config_urlr   release_urlr   rM   rL   m3u8_urlurlh	m3u8_fmts	m3u8_subsretcombined_subtitless                                r   _real_extractzThePlatformIE._real_extract   s   *33]##**?;%
 	 $$S)jj/::d#"KS ::gDJJw''D3-W,,S(;Gjj!=wGGG #7+ "44,,VW=79 ,,4k%t - 5 & $%=>>??#R#Y#YWgfoa&8$: ; ; -u5H_G&**<8J%/	"c73G,,Wh?G))[5 * 2H %%DhPVXDs(28QQHZZ!|+J#++FI>J#++I7GHJ((X?STF **\2f8VW[V\\e6fK"%BBH7vYGH&~~hE
CMJH!;;HhO G%RS!#-DtTH((H%x1KMckp ) rD,T2f<'+'O'OhU (P (D$	9y)%%i	%B00x@!22377;3KYW

+
 	 
r   )iX  F)r   r   r   
_VALID_URL_EMBED_REGEX_TESTSclassmethodr   r   r   r!  __classcell__)r   s   @r   r   r   y   s8   +J
	T 	iL p 2c#%"	
 T
  #( C AU#%"
 T
 2!$ g AD
 
 Y _1&[A1#%#

 A$ |	DFL / / " "[r   r   c                   X    e Zd ZdZdZddddddd	d
ddddgdd
ddddgZdi dfdZd Zy)ThePlatformFeedIEz-%s//feed.theplatform.com/f/%s/%s?form=json&%szhttps?://feed\.theplatform\.com/f/(?P<provider_id>[^/]+)/(?P<feed_id>[^?/]+)\?(?:[^&]+&)*(?P<filter>by(?:Gui|I)d=(?P<id>[^&]+))zwhttp://feed.theplatform.com/f/7wvmTC/msnbc_video-p-test?form=json&pretty=true&range=-40&byGuid=n_hardball_5biden_140207 6e32495b5073ab414471b615c5ded394n_hardball_5biden_140207r   z'The Biden factor: will Joe run in 2016?zbCould Vice President Joe Biden be preparing a 2016 campaign? Mark Halperin and Sam Stein weigh in.r   20140208iRg     0}@zMSNBC/Issues/Democratsz$MSNBC/Issues/Elections/Election 2016r   )
r   r   re   rg   rh   r   rn   rj   rt   rp   )r7   r   r   zQhttp://feed.theplatform.com/f/2E2eJC/nnd_NBCNews?byGuid=nn_netcast_180306.Copy.01Tr   Nc           
         | j                   | j                         |||fz  }| j                  ||      d   d   }	|rd|||	d   fz  n|	j                  d      }
g }i }d }d }g }|	d   D ]  }|d   }t        j                  |      }||}t        |j                  d            }|j                  d	      xs t        |      d
   }|D ]  }||v r|j                  |       d|d   |d}||v r|j                  ||          | j                  t        |
xs ||      |d|       \  }}|j                  |       | j                  ||      }  |	j                  dg       D cg c];  }|d   t        |j                  d            t        |j                  d            d= }}t        |	j                  d      d      }|	j                  dg       D cg c]  }|d   	 }}| j                  | d| |      }| j                  ||d         }|j                  |||||||d       |r|j                   ||	             |S c c}w c c}w )Nentriesr   z1http://link.theplatform.com/s/%s/media/guid/%d/%sr   zplmedia$publicUrlzmedia$contentz
plfile$urlzplfile$durationzplfile$assetTypes
assetTypestruezplfile$format)mbrrM   r.  zDownloading SMIL data for zmedia$thumbnailszplfile$widthzplfile$height)r7   widthheightzmedia$availableDaterk   rl   zmedia$categoriesz
media$namer   rL   )r   rM   rL   
thumbnailsrj   rn   rt   )_URL_TEMPLATEhttp_schemerT   r>   r   	_match_idr   r   rE   r  rP   r   r  r  r   r   )rF   r   r  filter_queryrH   custom_fieldsasset_types_query
account_idreal_urlentrymain_smil_urlrM   rL   first_video_idrj   asset_typesitemrG   cur_video_idfile_asset_types
asset_typer%   cur_formatscur_subtitlesrh   r3  rn   rt   r  s                                r   _extract_feed_infoz$ThePlatformFeedIE._extract_feed_infoW  s   %%)9)9);['S_(``##Hh7	B1E {EK{\fhmnthuNvv  KP  KT  KT  Uh  Ki	/* 	LDL)H(228<L%!-(2C)DE#xx(;<`@RS_@`. L
,"":.!#O4",
 !22LL!2:!>?-1-K-KL\!-XuM67?C]^h]iAj.l*]{+ 11)]K	L	L6 !99%7<	>  \* ~!>?!)--"@A
 >
 >  		*? @M	5:YY?QSU5VWTd<(W
W00K=.AQ1RT\])))S5EF	

"$ "$
 	 JJ}U+,
/> Xs   !A IIc                     | j                  |      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }| j                  ||||      S )Nr   r   r  r   )r  r   rF  )rF   r7   r  rH   r   r  r7  s          r   r!  zThePlatformFeedIE._real_extract  sa    $$S)::d#jj/**Y'zz(+&&{G\8TTr   )r   r   r   r4  r"  r$  rF  r!  r2   r   r   r(  r(  ?  sx    CM TJ I1,>1%#35[\#
	" c!F* ^buw  EI 8tUr   r(  )r   r   r}   r   	adobepassr   
networkingr   r   utilsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r=   r   r   r(  r2   r   r   <module>rK     sl      	  " -    $ 6
5X6 X6vC% CLZU) ZUr   