
    Ği*                        d dl Z 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
 ddlmZ ddl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mZm Z m!Z!m"Z"m#Z#m$Z$ dd	l%m&Z&  G d
 de
          Z' G d de          Z( G d de(          Z)dS )    N   )AdobePassIE)InfoExtractor   )compat_etree_fromstring)	HTTPError)ExtractorErrorUnsupportedError
clean_htmldict_getextract_attributesfind_xpath_attrfix_xml_ampersandsfloat_or_noneint_or_nonejoin_nonempty
js_to_jsonmimetype2extparse_iso8601parse_qssmuggle_urlstr_or_nonetry_getunescapeHTMLunsmuggle_urlupdate_url_queryurl_or_none)traverse_objc                   n   e Zd ZdZ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/d0d/d1d2d3dd,dd4d5d6d7d8d9d:d;d<d=d>d?d9d:d@dAdBgZdCdDddEdFdGd+dHdAidIdJdKdLddMdNdGdOdPdQdRdHdAidSdJdTdUdVddWdXdYdZd[d\d]d^dd_d_d`d+dadHdAidbdcdddeddfdgdhdidjdkdRdId\dldmddndndodpdQdqddHdAidrdJdsdtdud>dvdwdAdxdSdydzd{dd|d|d}d~dSddddddddddddHdAidIdJddddddddddHdAiddJg
Zed             Zed             Z	ed             Z
ed             Zed             Zd Zd ZdS )BrightcoveLegacyIEzbrightcove:legacyzN(?:https?://.*brightcove\.com/(services|viewer).*?\?|brightcove:)(?P<query>.*)z~http://c.brightcove.com/services/viewer/htmlFederated?playerID=1654948606001&flashID=myExperience&%40videoPlayer=2371591881001 5423e113865d26e40624dce2e4b45d95z4Test Brightcove downloads and detection in GenericIE2371591881001mp4u]   Xavier Sala i Martín: “Un banc que no presta és un banc zombi que no serveix per a res”8TVz$md5:a950cc4285c43e44d763d036710cd9cdiHQ201305101589608506001)idexttitleuploaderdescription	timestampupload_dateuploader_idz4The player has been deactivated by the content owner)urlmd5note	info_dictskipzzhttp://c.brightcove.com/services/viewer/htmlFederated?playerID=1217746023001&flashID=myPlayer&%40videoPlayer=17854521370011785452137001flvz5JVMLS 2012: Arrays 2.0 - Opportunities and Challengesz<John Rose speaks at the JVM Language Summit, August 1, 2012.Oraclei*P20120814
1460825906)r'   r(   r)   r+   r*   r,   r-   r.   zvideo not playabler/   r2   r3   zhttp://c.brightcove.com/services/viewer/federated_f9?&playerID=1265504713001&publisherID=AQ%7E%7E%2CAAABBzUwv1E%7E%2CxP-xFHVUstiMFlNYfvF4G9yFnNaqCw_9&videoID=27509345480012750934548001z+This Bracelet Acts as a Personal Thermostatz$md5:547b78c64f4112766ccf4e151c20b6a0iH`R201310171130468786001r'   r(   r)   r+   r,   r-   r.   )r/   r2   zhttp://link.brightcove.com/services/player/bcpid756015033001?bckey=AQ~~,AAAApYJi_Ck~,GxhXCegT1Dp39ilhXuxMJxasUhVNZiil&bctid=28788621090012878862109001zLost in Motion IIz$md5:363109c02998fee92ec02211bd8000dfzNational Ballet of Canada)r'   r(   r)   r+   r*   z
Video gonea  http://c.brightcove.com/services/viewer/htmlFederated?%40videoPlayer=ref%3Aevent-stream-356&linkBaseURL=http%3A%2F%2Fwww.redbull.com%2Fen%2Fbike%2Fvideos%2F1331655630249%2Freplay-uci-fort-william-2014-dh&playerKey=AQ%7E%7E%2CAAAApYJ7UqE%7E%2Cxqr_zXk0I-zzNndy8NlHogrCb5QdyZRf&playerID=1398061561001#__youtubedl_smuggle=%7B%22Referer%22%3A+%22http%3A%2F%2Fwww.redbull.com%2Fen%2Fbike%2Fstories%2F1331655643987%2Freplay-uci-dh-world-cup-2014-from-fort-william%22%7D3750436379001z:UCI MTB World Cup 2014: Fort William, UK - Downhill FinalszRBTV Old (do not use)iS20140827710858724001zhttp://c.brightcove.com/services/viewer/htmlFederated?playerID=3550052898001&playerKey=AQ%7E%7E%2CAAABmA9XpXk%7E%2C-Kp7jNgisre1fG5OdqpAFUTcs0lP_ZoLSealife3550319591001)r)   r'      zUnsupported URL)r/   r2   playlist_mincountr3   zhttp://c.brightcove.com/services/json/experience/runtime/?command=get_programming_for_experience&playerKey=AQ%7E%7E,AAABXlLMdok%7E,NJ4EoMlZ4rZdx9eU1rkMVd8EaYPBBUlg1522758701001z	Lesson 08r'   r)   
   zhttps://link.brightcove.com/services/player/bcpid1722935254001/?bctid=5360463607001&autoStart=false&secureConnections=true&width=650&height=350Tr/   only_matchingz\http://www.bfmtv.com/video/bfmbusiness/cours-bourse/cours-bourse-l-analyse-technique-154522/2765128793001u*   Le cours de bourse : l’analyse techniquez$md5:7e9ad046e968cb2d1114004aba466fd9zBFM BUSINESSskip_download404 Not Found)r/   r2   paramsr3   zGhttp://bfmbusiness.bfmtv.com/mediaplayer/chroniques/olivier-delamarche/5255628253001z$md5:37c519b1128915607601e75a87995fc0z$md5:37f7f888b434bb8f8cc8dbd4f7a4cf26876450612001ikYX20161220)r'   r(   r)   r+   r*   r.   r,   r-   zRedirects, page gonezhttp://bcove.me/i6nfkrc3 0ba9446db037002366bab3b3eb30c88c3101154703001zStill no powerzthestar.comzMississauga resident David Farmer is still out of power as a result of the ice storm a month ago. To keep the house warm, Farmer cuts wood from his property for a wood burning stove downstairs.)r'   r(   r)   r*   r+   z
video goner/   r0   r2   r3   zMhttp://www.kijk.nl/sbs6/leermijvrouwenkennen/videos/jqMiXKAYan2S/aflevering-13866516442001z%Leer mij vrouwen kennen: Aflevering 1zSBS Broadcastingz(Restricted to Netherlands, 404 Not Found)r/   r2   r3   rN   z5http://www.un.org/chinese/News/story.asp?NewsID=27724 36d74ef5e37c8b4a2ce92880d208b9685360463607001uS   叙利亚失明儿童在废墟上演唱《心跳》  呼吁获得正常童年生活u  联合国儿童基金会中东和北非区域大使、作曲家扎德·迪拉尼（Zade Dirani）在3月15日叙利亚冲突爆发7周年纪念日之际发布了为叙利亚谱写的歌曲《心跳》（HEARTBEAT），为受到六年冲突影响的叙利亚儿童发出强烈呐喊，呼吁世界做出共同努力，使叙利亚儿童重新获得享有正常童年生活的权利。zUnited Nations1362235914001i!fX20170315z"http://www8.hp.com/cn/zh/home.html5255815316001zSprocket Video - ChinazHP-Video GalleryiYX1107601872001zvideo rotates...weekly?zdhttp://www.newyorker.com/online/blogs/newsdesk/2014/01/always-never-nuclear-command-and-control.htmlzalways-neverzAlways / Never - The New Yorker   F)extract_flatrL   )r/   r2   playlist_countrN   r3   zIhttp://www.geekandsundry.com/tabletop-bonus-wils-final-thoughts-on-dread/4238694884001zTabletop: Dread, Last Thoughtsi  )r'   r(   r)   r+   durationz;https://dl.dropboxusercontent.com/u/29092637/interview.html4785848093001zThe Cardinal Pell InterviewzSky News Contributor Andrew Bolt interviews George Pell in Rome, following the Cardinal's evidence before the Royal Commission into Child Abuse. z!GlobeCast Australia - GlobeStream273377382800120160304iRVr'   r(   r)   r+   r*   r.   r-   r,   zthttp://www.stack.com/video/3167554373001/learn-to-hit-open-three-pointers-with-damian-lillard-s-baseline-drift-drill3167554373001zKLearn to Hit Open Three-Pointers With Damian Lillard's Baseline Drift Drillz$md5:57bacb0e0f29349de4972bfda3191713
107934949320140207iWR)r'   r(   r)   r+   r.   r-   r,   z410 Gonec                 V  
 t          j        dd |          }|                    dd          }t          j        dd|          }t          |          }	 t	          |                                          n # t          j        j        j	        $ r Y dS w xY wt          dd	d
          }|Tt          d t          j                            |j        d                                                   D                       ni j                            dd          }t          |          

fd}i } |d          p
 |d          }|t%          d          ||d<    |d          }|||d<    |d          p  |d          p |d          p
 |d          }|bt'          |t(                    r|d         }|                                }t          j        d|          s|                    d          sdS ||d<    |d          }	|	|	|d<   |                     |          S )z
        Build a Brightcove url from a xml string containing
        <object class="BrightcoveExperience">{params}</object>
        z&(<param(?:\s+[a-zA-Z0-9_]+="[^"]*")*)>c                 2    |                      d          dz   S )Nr   z/>group)ms    `C:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/brightcove.py<lambda>z:BrightcoveLegacyIE._build_brightcove_url.<locals>.<lambda>5  s    aggajj4&7     z<--z<!--z(<object[^>]*)(xmlns=".*?")z\1N./paramname	flashVarsc              3   0   K   | ]\  }}||d          fV  dS )r   N ).0kvs      rm   	<genexpr>z;BrightcoveLegacyIE._build_brightcove_url.<locals>.<genexpr>C  sJ       R RAq AaD	R R R R R Rro   valuedata c                     | v r|          S t          dd|           }||j        d         S                     |           S )Nrp   rq   ry   )r   attribget)rq   nodedata_url_params	flashvars
object_docs     rm   
find_paramz<BrightcoveLegacyIE._build_brightcove_url.<locals>.find_paramL  sR    y   &":y&$GGD{7++"&&t,,,ro   playerIDplayerIdzCannot find player ID	playerKey@videoPlayervideoIdvideoIDz
@videoListr   zT^(?:\d+|[\da-fA-F]{8}-?[\da-fA-F]{4}-?[\da-fA-F]{4}-?[\da-fA-F]{4}-?[\da-fA-F]{12})$zref:linkBaseURL)resubreplacer   r   encodexmletreeElementTree
ParseErrorr   dicturllibparser   r}   itemsr~   r	   
isinstanceliststripmatch
startswith_make_brightcove_url)cls
object_strfv_eldata_urlr   rN   	player_id
player_keyvideo_player	link_baser   r   r   s             @@@rm   _build_brightcove_urlz(BrightcoveLegacyIE._build_brightcove_url,  s    VE77E E
  ''v66
V:E:NN
'
33
	01B1B1D1DEEJJy$/ 	 	 	FF	  
Iv{KK R R"L11%,w2GHHNNPPR R R R RII I$((44"8,,	- 	- 	- 	- 	- 	- 	- Jz**Djj.D.D	 !8999&zZ,,
!",F;!z.11ZZ	5J5JjjYbNcNcgqgqr~gg#,-- /+A'--//L Hk " " %1%<%<V%D%D t%1F>"J}--	 $-F=!''///s   !A9 9BBc                     t          j        d|          }|r'|                     |                                          S d S )Nar  (?x)customBC\.createVideo\(
                .*?                                                  # skipping width and height
                ["\'](?P<playerID>\d+)["\']\s*,\s*                   # playerID
                ["\'](?P<playerKey>AQ[^"\']{48})[^"\']*["\']\s*,\s*  # playerKey begins with AQ and is 50 characters
                                                                     # in length, however it's appended to itself
                                                                     # in places, so truncate
                ["\'](?P<videoID>\d+)["\']                           # @videoPlayer
            )r   searchr   	groupdict)r   	object_jsrl   s      rm   _build_brightcove_url_from_jsz0BrightcoveLegacyIE._build_brightcove_url_from_jsr  sO     I    	;++AKKMM:::	; 	;ro   c                 "    t          d|          S )Nz6https://c.brightcove.com/services/viewer/htmlFederated)r   )r   rN   s     rm   r   z'BrightcoveLegacyIE._make_brightcove_url  s    DfN N 	Nro   c                 D    |                      |          }|r|d         ndS )zfTry to extract the brightcove url from the webpage, returns None
        if it can't be found
        r   N)_extract_brightcove_urls)r   webpageurlss      rm   _extract_brightcove_urlz*BrightcoveLegacyIE._extract_brightcove_url  s*    
 ++G44(tAwwD(ro   c                     t          j        d|          }|r1t          |                    d                    }d|v sd|v sd|v r|gS t          j        d|          }|r)t          t          d fd|D                                 S t          j        d	|          }|r)t          t          d fd
|D                                 S d t          j        d|          D             S )z6Return a list of all Brightcove URLs from the webpage z(?x)
                <meta\s+
                    (?:property|itemprop)=([\'"])(?:og:video|embedURL)\1[^>]+
                    content=([\'"])(?P<url>https?://(?:secure|c)\.brightcove.com/(?:(?!\2).)+)\2
            r/   r   r   idVideoz(?sx)<object
            (?:
                [^>]+?class=[\'"][^>]*?BrightcoveExperience.*?[\'"] |
                [^>]*?>\s*<param\s+name="movie"\s+value="https?://[^/]*brightcove\.com/
            ).+?>\s*</object>Nc                 :    g | ]}                     |          S rt   )r   )ru   rl   r   s     rm   
<listcomp>z?BrightcoveLegacyIE._extract_brightcove_urls.<locals>.<listcomp>  s'    %T%T%Tqc&?&?&B&B%T%T%Tro   z(customBC\.createVideo\(.+?\);)c                 :    g | ]}                     |          S rt   )r   )ru   	custom_bcr   s     rm   r   z?BrightcoveLegacyIE._extract_brightcove_urls.<locals>.<listcomp>  s7     &* &* &* 11)<<&* &* &*ro   c                     g | ]\  }}|S rt   rt   )ru   _srcs      rm   r   z?BrightcoveLegacyIE._extract_brightcove_urls.<locals>.<listcomp>  s.     r r r3 r r rro   zW<iframe[^>]+src=([\'"])((?:https?:)?//link\.brightcove\.com/services/player/(?!\1).+)\1)r   r   r   rk   findallr   filter)r   r   url_mr/   matchess   `    rm   r   z+BrightcoveLegacyIE._extract_brightcove_urls  sX    	    	u{{51122C c!!Y#%5%5c9I9Iu*!
    	Wt%T%T%T%TG%T%T%TUUVVV*?II 	,t &* &* &* &*!(&* &* &* + + , , ,r r"*fho#q #q r r r 	rro   c              #      K   |                      |          }|D ]/}|                     t          |d|i          t                    V  0d S )NReferer)r   
url_resultr   r    selfr/   r   bc_urlsbc_urls        rm   _extract_from_webpagez(BrightcoveLegacyIE._extract_from_webpage  sc      //88 	] 	]F//+fy#6F"G"GI[\\\\\\	] 	]ro   c                 J   t          |i           \  }}t          j        dd|          }t          j        dd|          }|                     |          }|                    d          }t
          j                            |          }|                    d          }|r|                    dd g          d         p|                    d	|          }|d         }d
|vr0t          j	        d|          }||                    d          g|d
<   |                    d          }	|	r"|	d         
                                r|	d         }	|	s|                    d          }
|
rd|
d         v r	|
d         }
nw|                    d
          }|r`|d         
                                rFi }|r||d	<   |                     d|d         z   ||d          }|r|                     d|dd          }
|
r\|
                    d          d                             dd          }t          j        dt#          j        |                    d         }	|	rJd|	 d| }|rt'          |d|i          }|                     |t*                                          |          S t/          |          )Nz$(?<=[?&])(videoI(d|D)|idVideo|bctid)z%40videoPlayerz(?<=[?&])bckeyr   queryr   r   r   r   r   z/bcpid(\d+)r   publisherId,z1https://link.brightcove.com/services/player/bcpidF)headersfatalz.<param\s+name="playerKey"\s+value="([\w~,-]+)"z
player keyr   ~=z>Qhttps://players.brightcove.net/z$/default_default/index.html?videoId=referrer)r   r   r   _match_valid_urlrk   r   r   r   r~   r   isdigit_download_webpage_search_regexsplitr   structunpackbase64urlsafe_b64decoder   r   BrightcoveNewIEie_keyr
   )r   r/   smuggled_datamobj	query_strr   r   referervideo_idpublisher_idr   r   r   player_page
enc_pub_idbrightcove_new_urls                   rm   _real_extractz BrightcoveLegacyIE._real_extract  s   *333] f<>NPSTTf&S99$$S))JJw''	%%i00yy00 #	_iiv66q9^]=N=NyZ]=^=^G#AH&&y55#)-AE*% 99]33L /Q 7 7 9 9 /+A `"YY{33
 H#A"6"6!+AJJ %		* 5 5I  
HYq\%9%9%;%; 
H"$" 918GI.&*&<&<OR[\]R^^$gU '= 'D 'D ' H)-);); Q +\ *< *H *HJ  `!+!1!1#!6!6q!9!A!A#s!K!KJ#)=v7OPZ7[7[#\#\]^#_L _ &D|  &D  &D  zB  &D  &D" `)45G*V]I^)_)_&'9?;Q;Q;S;SU]^^^
 s###ro   N)__name__
__module____qualname__IE_NAME
_VALID_URL_TESTS_WEBPAGE_TESTSclassmethodr   r   r   r   r   r   r   rt   ro   rm   r    r    %   s       !GbJ
 T5J%x!E').	 	 K	
 	
& P%P]$')+	 	 )	
 	
" A%FE').	 		
 	
" _%,E7  !	
 	
  d &U3[')-	 	 !	
 	
( i"%  "#%
	
 
	
 y%$  "$%		
 		
 e!		
 	
EhF\ n!AA&
 
 T
   $ Y!;A&)#%	
 	
 T
 '! & *1!%% _
 
   _!<B*
 
 ;T
   G1!j ](*#%	
 	
   " 4!-3*#%*	
 	
 T
 *! ( v 6
 
 !!
 
 '   [!5;
 
 '  M!2 p;*%#	
 	
 T
  % * F!bA'%#
 
 T
  OWNr C0 C0 [C0J ; ; [;" N N [N ) ) [)  r  r [ rD] ] ]
4$ 4$ 4$ 4$ 4$ro   r    c                       e Zd Zi fdZdS )BrightcoveNewBaseIEc                 
   g i }}|                     d          pg }|D ]}|                     d          }t          |                     d                    }	|                     d          }
|	dk    s|dk    r9|
s^|                     |
|ddd	d
          \  }}|                     ||          }n|	dk    r7|
s|                     |
|dd
          \  }}|                     ||          }n|                     d          }|                     d          |                     d          }}|
s|s|r|st          |                     d          d          t          |                     d                    t          |                     d                    }t          |                     d                    ||	p|                                d}|dk    rdk    r|                    ddi           n,|                    ||                     d          d           fd}|
s|r-|                    |
p| ||
rdnd          |
rdnd d!           n"|                    || |d"          d#           |g}|d$k    s|                     d%          s|	d&k    r
|D ]}d'|d(<   |	                    |           |sf|                     d)          }|rO|d         }| 
                    |                     d*          p|                     d+          p|d,         d'-           |                    d.d            |D ]+}|                    d/i                               |           ,|                     d0g           D ]}|                     d1          d2k    rt          |                     d                    }|sAt          |                     d3                    p#t          |                     d4                    pd5                                }|                    |g                               d6|i           d
}t          |                     d7          d          }||dk    rd'}g d8}t!          |d9          rfd:|D             nd }||||||d;t#          |d<t$          hfd=t$          hfd>d?t&          ht(          t*          t(          fd@t,          hfdAt&          hfdB          S )CNsources	containertyper   m3u8M2TSr#   m3u8_nativehlsF)m3u8_idr   mpddashr   streaming_srcstream_nameapp_nameavg_bitratei  heightwidthsize)tbrfilesizer   r(   r   vcodecnonecodec)r   r   r  c                 T    t          | ot                     do d          S )Nrv   p)r   int)kindr   r  s    rm   build_format_idzGBrightcoveNewBaseIE._parse_brightcove_metadata.<locals>.build_format_id  s5    (s/E#c((~~~vG^U[R^R^R^___ro   httpzhttp-streaming)r/   	format_idsource_preferencertmp)r/   	play_pathr  WVMkey_systemsismThas_drmerrorsmessageerror_subcode
error_codeexpectedAuthorizationhttp_headerstext_tracksr
  captionssrclanglabelenr/   r`   )	)   Z   )i@     )i    )i  ih  )   i  )i   i@  )i   r&  )iV  r'  )i  i8  )poster	thumbnailc                 T    g | ]$\  }}t          j        d | d|           ||d%S )z\d+x\d+x)r/   r   r   )r   r   )ru   whthumb_base_urls      rm   r   zBBrightcoveNewBaseIE._parse_brightcove_metadata.<locals>.<listcomp>Q  sW     " " " a 6*jjQjj.AA
 
 " " "ro   )r'   
thumbnailsr`   formats	subtitlesis_liverq   r+   tags.published_at
account_id)r)   r+   r3  r,   r.   )r~   r   #_extract_m3u8_formats_and_subtitles_merge_subtitles"_extract_mpd_formats_and_subtitlesr   r   lowerupdateextendraise_no_formatspop
setdefaultr   r   appendr   r   r   strr   allr   )r   	json_datar   r   r0  r1  r   sourcer   r(   r   fmtssubsr   r   r   r   fr  r  error
text_tracktext_track_urllangr2  r`   
common_resr/  r   r  r.  s                               @@@rm   _parse_brightcove_metadataz.BrightcoveNewBaseIE._parse_brightcove_metadata  s6   --	**0b =	! =	!F

;//Ivzz&1122C**U##Cf}}	V 3 3 !EE5-e F U U
d 11)TBB		 !DDS(TZbgDhh
d 11)TBB		 &

? ; ;(.

=(A(A6::jCYCYX = + X #FJJ}$=$=tDD$VZZ%9%9::#FJJw$7$788 +FJJv,>,> ? ?!*3)//"3"3	  A::&A++HH &     HH!&"("(**W"5"5    ` ` ` ` ` `  - HH"3m%4_s5XVVHX%Y%Y25-=QQ2      HH'%0%4_V%<%<    
 s E!!VZZ%>%>!#,, ( (A#'AiLLNN4     	n]]8,,F nq	%%IIi((]EIIo,F,F]%P\J]hl & n n n 	OT*** 	= 	=ALL,,33G<<<<#--r:: 
	 
	J~~f%%33()>)>??N! 
y 9 9:: D":>>'#:#:;;D?CUUWW   r**11~3      z!:!:DAAHMMG F  F  F
!)-DEE
 &4	> " " " " !	" " " " :>	 	 $ "
 
 9 :,/ -
|<seVS&A,}o> ,se4' '  
 	
ro   N)r   r   r   rL  rt   ro   rm   r   r     s1        FH t
 t
 t
 t
 t
 t
ro   r   c                      e Zd ZdZ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 id!d"d d#d$d d#d%d d#d&d d#gZd'd(d)d*dd+d,gd-d.d/d0d1d2	d3d4d5d6d.d7d8d9d:d;dd<d.d=d>d?d@dAid:dBddCd.dDd>dEdFdAigdGdHdIdJddKdLdMdNdOdddPdQdRddSdTddUdVdWdXdYdZd d[gdd\d]d^d_dd`dadbdcdddedfdgdgZedh             Zedi             Z	dj Z
dk ZdlS )mr   zbrightcove:newzhttps?://players\.brightcove\.net/(?P<account_id>\d+)/(?P<player_id>[^/]+)_(?P<embed>[^/]+)/index\.html\?.*(?P<content_type>video|playlist)Id=(?P<video_id>\d+|ref:[^&]+)zxhttp://players.brightcove.net/929656772001/e41d32dc-ec74-459e-a845-6c69f7b724ea_default/index.html?videoId=4463358922001 c8100925723840d4b0d243f7025703be4463358922001r#   z Meet the man behind Popcorn Timez$md5:eac376a4fe366edc70279bfb681aea16gjtd@icU20150904929656772001zmincount:20)	r'   r(   r)   r+   r`   r,   r-   r.   r0  rM   rT   zyhttp://players.brightcove.net/4036320279001/5d112ed9-283f-485f-a7f9-33f42e8bc042_default/index.html?videoId=42790490780014279049078001zTitansgrave: Chapter 0gZd;h@iVrU201506064036320279001zmincount:39r9   zbhttps://players.brightcove.net/1752604059001/S13cJdUBz_default/index.html?playlistId=57183134300015718313430001zNo Audio PlaylistrG   rD   rL   T)r/   r2   r^   rN   zahttp://players.brightcove.net/5690807595001/HyZNerRl7_default/index.html?playlistId=5743160747001rI   zwhttp://players.brightcove.net/3910869709001/21519b5c-4b3b-4363-accb-bdc8f358f823_default/index.html?videoId=ref:7069442zbhttp://players.brightcove.net/710858724001/default_default/index.html?videoId=ref:event-stream-356zvhttp://players.brightcove.net/1305187701/c832abfb-641b-44eb-9da0-2fe76786505f_default/index.html?videoId=4377407326001zOhttps://nbc-2.com/weather/forecast/2022/11/16/forecast-warmest-day-of-the-week/ 2934d5372b354d27083ccf8575dbfee26315650313112z'First Alert Forecast: November 15, 2022nbc2forecast6146886170001zre:^https?://.*\.jpg$ikmtcg     ,m@20221116)	r'   r)   r(   r3  r.   r)  r,   r`   r-   )r/   r0   r2   z7https://www.gooddishtv.com/tiktok-rapping-chef-mr-pyrexztiktok-rapping-chef-mr-pyrexz3TikTok's Rapping Chef Makes Jambalaya for the Hostsr   zJust in time for Mardi Gras)r'   r)   r)  	age_limitr+   r2   6299189544001zTGD_01-032_5i+b156956597800120220228g
ףp=&k@)r'   r(   r)   r)  r,   r.   r-   r`   6305565995112z$TGD 01-087 (Airs 05.25.22)_Segment 5io|qb20220503g~jfs@)r/   r2   playlistz[http://www.delawaresportszone.com/video-st-thomas-more-earns-first-trip-to-basketball-semis 2b35148fcf48da41c9fb4591650784f35348741021001201703064191638492001i~ӼXz<VIDEO:  St. Thomas More earns first trip to basketball semis)r'   r(   r-   r.   r,   r)   zhttp://www.programme-tv.net/videos/extraits/81095-guillaume-canet-evoque-les-rumeurs-d-infidelite-de-marion-cotillard-avec-brad-pitt-dans-vivement-dimanche/zo81095-guillaume-canet-evoque-les-rumeurs-d-infidelite-de-marion-cotillard-avec-brad-pitt-dans-vivement-dimancheu   Guillaume Canet évoque les rumeurs d'infidélité de Marion Cotillard avec Brad Pitt dans Vivement Dimanche, Extraits : toutes les vidéos avec Télé-Loisirs 732d22ba3d33f2f3fc253c39f8f365235311302538001uo   Guillaume Canet évoque les rumeurs d'infidélité de Marion Cotillard avec Brad Pitt dans Vivement Dimancheu   Guillaume Canet évoque les rumeurs d'infidélité de Marion Cotillard avec Brad Pitt dans Vivement Dimanche (France 2, 5 février 2017)i,xX20170205800000640001r=   )r0   r2   rJ   )r/   r2   rb  r3   zNhttp://www.sportsnet.ca/baseball/mlb/sn-presents-russell-martin-world-citizen/ 4ae374f1f8b91c889c4b9203c8c752af4255764656001z*SN Presents: Russell Martin, World Citizenu   To understand why he was the Toronto Blue Jays’ top off-season priority is to appreciate his background and upbringing in Montreal, where he first developed his baseball skills. Written and narrated by Stephen Brunt.zRogers Sportsnet
170405087120150525iIcUrd   z*Page no longer has URL, now has javascriptc                 P    t                               | |          }|r|d         nd S )Nr   )r   r   )ier   r   s      rm   _extract_urlzBrightcoveNewIE._extract_url	  s*    77GDD(tAwwD(ro   c           	      :   g }t          j        d|          D ]4\  }}|                    |                    d          r|nd|z              5t          j        d|          D ]\  }}}}}	t	          |          }
|
                    d          }|s/|p|
                    d          }|sI|p|
                    d          pd}|	p|
                    d	          pd}	d
| d| d|	 d| }|s|                     ||d          s|                    |           |S )NzZ<iframe[^>]+src=(["\'])((?:https?:)?//players\.brightcove\.net/\d+/[^/]+/index\.html.+?)\1)zhttp:https:rs  aj  (?isx)
                    (<video(?:-js)?\s+[^>]*\bdata-video-id\s*=\s*['"]?[^>]+>)
                    (?:.*?
                        (<script[^>]+
                            src=["\'](?:https?:)?//players\.brightcove\.net/
                            (\d+)/([^/]+)_([^/]+)/index(?:\.min)?\.js
                        )
                    )?
                zdata-video-idzdata-accountzdata-playerdefaultz
data-embedr   /r   z/index.html?videoId=zpossible brightcove video)r   r   r?  r   r   r~   _is_valid_url)rp  r   entriesr   r/   video
script_tagr5  r   embedattrsr   r   s                rm   r   z(BrightcoveNewIE._extract_brightcove_urls  s     jmovx x 	[ 	[FAsNN#..1D"E"EY338VY>ZZZZ @Bz 	@ 	@ &	# &	#;E:z9e 'u--E yy11H #@uyy'@'@J !JUYY}%=%=JIAUYY|44A	EuzuuIuuPUuuksuuF  b&6&6H&A'C 'C NN6""""ro   c              #      K   |                      | |          }|D ]/}|                     t          |d|i          t                    V  0d S )Nr   )r   r   r   r   r   s        rm   r   z%BrightcoveNewIE._extract_from_webpageJ  sd      //g>> 	[ 	[F//+fz36G"H"H/ZZZZZZ	[ 	[ro   c                     t          |i           \  }                                         d                              d          d                                |                                          \  } d  j                            d          }d} fd fd}                    d	          }d
|rdnd d d| d }|rdd| ini                     d          }|r>                    |t          j	        d|          
                    d          d           t          d          D ]E}	|s |            }d}d| d<   	                      |          }
 n# t          $ r}t          |j        t                     r|j        j        dv r։                     |j        j                                                                                  d         }
|
                    d          p|
d         }|
                    d          dk    r                     |            n.|
                    d          d!k    r|sd } d            Y d }~-t          |d"           d }~ww xY w|
                    d#          }|r|d                             d          d$k    r|
d%         }d&                    fd'd(D                       }|rt          d)| d*d"                               d+         |d,         |d-         d.                   }                     |dd| id/|i0          }
|d1k    ro                      fd2t5          |
d3d4 f          D             |
                    d5          |
                    d6          |
                    d7                    S                      |
          S )8Ngeo_countriesgeo_ip_blocks)	countries	ip_blocksr   
brightcoveFc                 <    j                             d|           S )Nr  )cachestore)r+  policy_key_idr   s    rm   rn   z/BrightcoveNewIE._real_extract.<locals>.<lambda>[  s    TZ--lM1MM ro   c                     d d d d}                      | dz   
d          pi }t          |d           }|s                    | dz   
          }                    d	|d
d           }|r<                    t          |          
d          }|r|                    d          }|s                    d|dd          } 	|           |S )Nr   ru  r   zconfig.jsonFr   c                     | d         d         S )Nvideo_cloud
policy_keyrt   )r+  s    rm   rn   zKBrightcoveNewIE._real_extract.<locals>.extract_policy_key.<locals>.<lambda>b  s    !M"2<"@ ro   zindex.min.jszcatalog\(({.+?})\);catalog)rt  	policyKeyz$policyKey\s*:\s*(["\'])(?P<pk>.+?)\1z
policy keypkrj   )_download_jsonr   r   r   _parse_jsonr   r~   )base_urlconfigr  r   r  r5  rz  r   r   store_pkr   s        rm   extract_policy_keyz9BrightcoveNewIE._real_extract.<locals>.extract_policy_key]  sP   ZZZiZZRWZZZH((=((% ) A A GDF  @@B BJ ;00~-x9 9 ,,*GY - N N >".."7++XU / D DG >%,[[%=%=
! ;!%!3!3?T "4 "; ";J HZ   ro   tokenzhttps://z	edge-authedgez).api.brightcove.com/playback/v1/accounts/ru  zs/r  zBearer r   zhttps?://[^/]+r   )r   Originr   Tzapplication/json;pk=Accept)r   )i  i  r  r  r  
CLIENT_GEO)msgINVALID_POLICY_KEYr  r  TVE_AUTHcustom_fieldsz, c              3   F   K   | ]}                     |          |V  d S )N)r~   )ru   keyr   s     rm   rx   z0BrightcoveNewIE._real_extract.<locals>.<genexpr>  sT       'c 'c=K\K\]`KaKa'c'c 'c 'c 'c 'c 'cro   )
source_urlsoftware_statementz!Missing fields in smuggled data: z. This video can be only extracted from the webpage where it is embedded. Pass the URL of the embedding webpage instead of the Brightcove URLr  bcadobepassrequestoridbcadobepassresourceidr  tveToken)r   r   rb  c              3   R   K   | ]!}                     ||d                    V  "dS )r'   N)rL  )ru   vidr   r   s     rm   rx   z0BrightcoveNewIE._real_extract.<locals>.<genexpr>  sU       W W 00c$iII W W W W W Wro   videosc                     |d         S )Nr'   rt   )r   rw   s     rm   rn   z/BrightcoveNewIE._real_extract.<locals>.<lambda>  s
    AdG ro   r'   rq   r+   )r   _initialize_geo_bypassr~   r   groupsr  loadr:  r   r   rk   ranger  r	   r   causer   statusr  responsereaddecoderaise_geo_restrictedjoin_extract_mvpd_authplaylist_resultr   rL  )r   r/   content_typer  policy_key_extractedr  r  api_urlr   r   rB  er  r  r  missing_fields	tve_tokenr5  rz  r   r   r  r   r  r   s   `                @@@@@@@@rm   r   zBrightcoveNewIE._real_extractO  sa   *333]##&**?;;&**?;;%
 %
 	 	 	
 @D?T?TUX?Y?Y?`?`?b?b<
IulH%33	33Z__\=AA
$MMMMM	 	 	 	 	 	 	 	 	 	4 !!'** PE=[[v  P  Phr  P  P  vB  P  P  FN  P  P:?G?$5e$5$566R $$Z00 	NN#)$5x@@FFqII    
 q 	 	A ,//11
'+$ Cz C CGH //7/SS	!   agy11 	Aagn
6R6R $ 0 01A1F1F1H1H1O1O1Q1QS[ \ \]^ _I'mmI66Q)L:QG }}_55EE11g1>>>>"|448LLLUiL%)
  (4@@@@ x(( 	fQimmO44
BB%o6M!YY 'c 'c 'c 'cC'c 'c 'c c cN k$[ [ [ [eik k k k //l+X675623	5 5I
 ++AZAA, 	 ,  I :%%''W W W W W(X?S?S4TUUW W Wd##Y]]6%:%:m,,	. . . ..x / 2 2 	2s   ,FJC'J?JJN)r   r   r   r   r   r   r   staticmethodrq  r   r   r   rt   ro   rm   r   r   h  s#       G ~J J1!7A#%)$

 

   " K!-3 #%*$

 

   " t!(
 
  T
  s 
 I  t  H k9Fz a1!>Z(*1#%

 

	 " I0K18
 
 %'5'.)#	 	
 %?5'.)#	 	
! !F m1!%*#S
 
    n D z
 

 6% K  m')-  "
 
   ) . `1!A x*'%#	
 	
 = eaNF ) ) \) 9 9 \9v[ [ [
e2 e2 e2 e2 e2ro   r   )*r   r   r   urllib.parser   xml.etree.ElementTreer   	adobepassr   commonr   compatr   networking.exceptionsr   utilsr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   utils.traversalr   r    r   r   rt   ro   rm   <module>r     s    				          " " " " " " ! ! ! ! ! ! , , , , , , - - - - - -                                             . + * * * * *H$ H$ H$ H$ H$ H$ H$ H$Vu
 u
 u
 u
 u
+ u
 u
 u
pL2 L2 L2 L2 L2) L2 L2 L2 L2 L2ro   