
    biB                         d dl 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 ddlmZmZ  G d	 d
e          ZdS )    N   )InfoExtractor   )compat_etree_fromstring)HEADRequest)
ExtractorErrorfloat_or_noneint_or_none	qualitiessmuggle_urlunescapeHTMLunified_strdateunsmuggle_urlurl_or_noneurlencode_postdata)find_elementtraverse_objc                   L    e Zd ZdZdgZdddddedd	d
dddededdddddddddeeed	ddddddded d!d"d#edd$
d%d&d'id(d)d*d+d,dd-ed.d/d0d1edd2d3d4d5id)d6d7i d8d9d:dd;d<d=d>d?d@dAdBdCdDdEddFdGdHedIdJdKedLdMdNdOdPedQg dRdSdTedUdVdWgdXdYdZd[d\d]dd^d_d`dadbddcd4dXidddedfdgdhddidjdkdlddmdndoddpdqdrdsdtddkeedud4dXidvdwdXdxdydXdxdzdXdxd{dXdxd|dXdxd}dXdxd~dXdxddXdxddddddddddgZdddddddddddgZ	d Z
e fd            Zd Zd Zd Z xZS )OdnoklassnikiIEa  (?x)
                https?://
                    (?:(?:www|m|mobile)\.)?
                    (?:odnoklassniki|ok)\.ru/
                    (?:
                        video(?P<embed>embed)?/|
                        web-api/video/moviePlayer/|
                        live/|
                        dk\?.*?st\.mvId=
                    )
                    (?P<id>[\d-]+)
                zW<iframe[^>]+src=(["\'])(?P<url>(?:https?:)?//(?:odnoklassniki|ok)\.ru/videoembed/.+?)\1zCoub embeddedz http://ok.ru/video/14841305541891keok9mp4i`\zre:^https?://.*\.jpg$u   Народная забаваNevata20181223r   znevata.sg)\( @)idext	timestamp
view_count	thumbnailtitleuploaderupload_date	age_limituploader_id
like_countdurationrepost_count)noteurl	info_dictzvk.com embeddedz!https://ok.ru/video/3568183087575z-165101755_456243749z
-165101755   i4a20220122)	r   r   r#   r%   r   r!   r   r   r    zvk extractor error)r'   r(   r)   skipzhttp://ok.ru/video/20079905452 8f477d8931c531374a3e36daec617b2c20079905452webmuH   Культура меняет нас (прекрасный ролик!))d   20141207330537914540u)   Виталий Добровольский)
r   r   r   r   r%   r!   r#   r    r$   r"   zbv[ext=webm]z
User-AgentzDMozilla/5.0 (Windows NT 10.0; rv:102.0) Gecko/20100101 Firefox/102.0)formathttp_headers)r(   md5r)   paramsz.http://ok.ru/video/63567059965189-0?fromTime=5 2bae2f58eefe1b3d26f3926c4a64d2f3z63567059965189-0u.   Девушка без комплексов ...   20150518534380003155u'   ☭ Андрей Мещанинов ☭   )r   r   r   r   r%   r!   r#   r    r$   r"   
start_timeskip_downloadm3u8z!https://ok.ru/video/3952212382174 5fb5f83ce16cb212d6bf887282b5da53r   5axVgHHDBvUr   r   zQYoutube-dl 101: What is it and HOW to use it! Full Download Walkthrough and Guidedescriptionz$md5:b57209eeb9d5c2f20c984dfb58862097r    zLod Merr#   575186401502r%   i  r"   r!   20210405comment_countlive_statusnot_liver   r   z}https://i.mycdn.me/i?r=AEHujHvw2RjEbemUCNEorZbxYpb_p_9AcN2FmGik64Krkcmz37YtlY093oAM5-HIEAt7Zi9s0CiBOSDmbngC-I-k&fn=external_8uploader_urlz$https://www.youtube.com/@MrKewlkid94channel_follower_counttags)z
youtube-dlzyoutube playlistszdownload videoszdownload audio
channel_idUCVGtvURtEURYHtJFUegdSugpublicz8https://www.youtube.com/channel/UCVGtvURtEURYHtJFUegdSug	EducationTBornToReact)r$   availabilitychannel_url
categoriesplayable_in_embedchannel)r(   r5   r)   z#http://ok.ru/video/62036049272859-0z62036049272859-0u   МУЗЫКА     ДОЖДЯ .z$md5:6f1867132bd96e33bf53eda1091e8ed020120106473534735899u	   МARINA D)r   r   r   rA   r!   r#   r    r"   zVideo has not been found)r(   r)   r6   r,   z Only available in mobile webpagez#https://m.ok.ru/video/23612499571452361249957145u#   Быковское крещениеg'1\@z*re:^https?://i\.mycdn\.me/videoPreview\?.+)r   r   r   r%   r   	subtitlesz!https://ok.ru/video/42495875507474249587550747z;Small Country An African Childhood (2020) (1080p) +subtitlezSunflower Movies59580216117920220816iH  )r   r   r   r    r#   r!   r%   r"   r   r$   rW   )r'   r(   r)   r6   z2http://ok.ru/web-api/video/moviePlayer/20079905452)r(   only_matchingz"http://www.ok.ru/video/20648036891z'http://www.ok.ru/videoembed/20648036891z http://m.ok.ru/video/20079905452z%http://mobile.ok.ru/video/20079905452z#https://www.ok.ru/live/484531969818a  https://m.ok.ru/dk?st.cmd=movieLayer&st.discId=863789452017&st.retLoc=friend&st.rtu=%2Fdk%3Fst.cmd%3DfriendMovies%26st.mode%3Down%26st.mrkId%3D%257B%2522uploadedMovieMarker%2522%253A%257B%2522marker%2522%253A%25221519410114503%2522%252C%2522hasMore%2522%253Atrue%257D%252C%2522sharedMovieMarker%2522%253A%257B%2522marker%2522%253Anull%252C%2522hasMore%2522%253Afalse%257D%257D%26st.friendId%3D561722190321%26st.frwd%3Don%26_prevCmd%3DfriendMovies%26tkn%3D7257&st.discType=MOVIE&st.mvId=863789452017&_prevCmd=friendMovies&tkn=3648#lst#z https://ok.ru/video/954886983203z&https://ok.ru/videoembed/29327056020752932705602075zlhttps://i.mycdn.me/videoPreview?id=1369902483995&type=37&idx=2&tkn=fqlnoQD_xwq5ovIlKfgNyU08qmM&fn=external_8u   Boosty для тебя!597811038747#   )r   r   r   r   r#   r$   r%   )r(   r)   zGhttps://boosty.to/ikakprosto/posts/56cedaca-b56a-4dfd-b3ed-98c79cfa01673950343629563zmhttps://i.mycdn.me/videoPreview?id=2776238394107&type=37&idx=11&tkn=F3ejkUFcpuI4DnMRxrDGcH5YcmM&fn=external_8u   Заяц Бусти.mp4571368965883i(  zSite no longer embeds)r(   r)   r,   c                     | j                             d           | j                             t          j                            |          j                   d S )Nz	.mycdn.me)domain)	cookiejarclearurllibparseurlparsehostname)selfcdn_urls     X/DATA/AppData/hermes/venv/lib/python3.11/site-packages/yt_dlp/extractor/odnoklassniki.py_clear_cookieszOdnoklassnikiIE._clear_cookies   sO     	K000FL$9$9'$B$B$KLLLLL    c              #   ~   K   t                                          ||          D ]}t          |d|i          V  d S )Nreferrer)super_extract_embed_urlsr   )clsr(   webpagex	__class__s       rk   rq   z#OdnoklassnikiIE._extract_embed_urls   sR      ,,S':: 	4 	4Aa*c!2333333	4 	4rm   c                     	 |                      |          S # t          $ r0}	 |                     |          cY d }~S # t          $ r |w xY wd }~ww xY w)N)_extract_desktopr   _extract_mobile)ri   r(   es      rk   _real_extractzOdnoklassnikiIE._real_extract   s    	((--- 	 	 	++C00000000!   	s#    
A<AA		AAc                 <   t          t          j                            t          j                            |          j                                      dd g          d                   }t          |i           \  }}|                     |          	                    dd          \  }}|rdnd}| 
                    d| d| |d	|                    d
          r
d|d
         ini           }t          |t          d          h          }|dk    r@|                    d
          s+|dk    r%|                     t          |d
di                    S |rt          |d          d|v r|                                  |                     t%          |                     d| d|dd                    |          }	|	                    d          r0|	                    d          r|                     |	d                   S |	d         }
|
                    d          }|r|                     ||          }ngi }|
                    d          }|r||d<   |                     t          j                            |
d                   |dt/          |                     }|d!         }|                    d"          }|d#k    r|d$         n|                    d$          }|                    d%          }t          |                    d&                    }|                    d'i           }|                    d          }|                    d(          }t1          |                     d)|d*d +                    }d }|                     d,|d-d +          }|r
|d.k    rd/nd}t          |                    d0                    }i }t          |d1t4          2          D ][}|                    d          }|s|                    |                    d3          pd4g                               |d5d6           \|||||||||||d7}|d8k    r |                    d9|d:         d;           |S |sJ |d<k    r||d$<   t=          d=          }d> t          |d?d@ f          D             }t          |dAdB          } | rC|                    |                      | |dCdDdEdFG                     | !                    |            dHD ]]\  }!}"|                    |"          }#|#rA|                    | "                    |#||!dFI                     | !                    |#           ^|                    dJ          }$|$r6|                    | #                    tI          |$          dK                     |D ]1}%|                     dL|%d         dMd +          }&|&r ||&          |%dN<   2|                    dO          } | rB|                    |                      | |dCdEdFG                     | !                    |            |                    dP          }'|'r|                    |'dQdRdS           |s.|                    dT          }(|(r| %                    dUd           ||dV<   |S )WNfromTimer   r   embed
videoembedvideozhttps://ok.ru//zDownloading desktop webpagero   Referer)r'   headersvp_video_stub_txt)rr   z9The author of this video has not been found or is blockedzhttps://boosty.toTexpectedz)>Access to this video is restricted</div>z,data-options=(?P<quote>["\'])(?P<player>{.+?z.+?})(?P=quote)player)groupisExternalPlayerr(   	flashvarsmetadatalocationzst.locationmetadataUrlzDownloading metadata JSON)datamovieproviderUPLOADED_ODKLr   posterr%   authornamezya:ovs:upload_datezupload datedefaultzya:ovs:adultz	age limittrue   	likeCount)r   subtitleTracks.)expected_typelanguageenvtt)r(   r   )r   r   r   r%   r!   r    r#   r$   r"   r<   rW   USER_YOUTUBEurl_transparent	contentId)_typer(   LIVE_TV_APP)40123567c                 L    g | ]!}|d          d|                     d          d"S )r(   r   r   )r(   r   	format_id)get).0fs     rk   
<listcomp>z4OdnoklassnikiIE._extract_desktop.<locals>.<listcomp>n  sN     [ [ [  U8v
 
 [ [ [rm   videosc                 ,    t          |d                   S )Nr(   )r   )_vs     rk   <lambda>z2OdnoklassnikiIE._extract_desktop.<locals>.<lambda>r  s    +aPUhBWBW rm   hlsManifestUrlondemandHlsr   m3u8_nativehlsF)m3u8_idfatal))dashondemandDash)r/   metadataWebmUrl)mpd_idr   metadataEmbeddedmpdz\btype[/=](\d)zformat typequalityhlsMasterPlaylistUrlrtmpUrlrtmpflv)r(   r   r   paymentInfoz,This video is paid, subscribe to download itformats)&r
   re   rf   parse_qsrg   queryr   r   _match_valid_urlr   _download_webpager   r   rw   r   r   raise_login_required_parse_jsonr   _search_regex
url_result_download_jsonunquoter   r   _html_search_metadict
setdefaultappendupdater   extend_extract_m3u8_formatsrl   _extract_mpd_formats_parse_mpd_formatsr   raise_no_formats))ri   r(   r<   smuggledvideo_idis_embedmoders   errorr   r   r   r   st_locationr   r   r   r   r%   r   r#   r    r!   r"   adultr$   rW   subsub_urlinfor   r   m3u8_urlr   mpd_keympd_urldash_manifestfmtfmt_typertmp_urlpayment_infos)                                            rk   rw   z OdnoklassnikiIE._extract_desktop   s    !6!6L!!#&&,". "..1c*tf.E.Ea"I J J
 &c2..X!22377==dGLL('4||W((.T..H...9Aj9Q9QYY 455WY ) [ [
 W|8K'L'L'L&MNNPPP Z00 Q59\5I5I((S:GZ:[)\)\]]] 	( 66668GCC%%'''!!++[[[[ , 3 3 4 4 	  ::()) 	2fjj.?.? 	2??6%=111;'	==,, 
	/''(;;HHD#--
33K 2&1]#**$$Y}%=>>5'-- + / /H
 ! <<
++"*o"="=g599WCUCUIIh''	uyy4455h++jj&&::f%%%d&<&< '=$ '= 'H 'H I I 	&&G[$ ' @ @ 	5#voo1I k!:!:;;
	*JZ^___ 	 	CggennG   !4!4!<bAAHHJ J     " & &$"$"
 
 ~%%KK*[)     Ku}$$!DMDEE[ [  85W5W*XYY	[ [ [  *:MJJ 	*NN455(E=U 6 , , - - - )))V 	- 	-OFGll7++G -t88XfE  9  C  C D D D##G,,, %788 	@NN422'66? ? @ @ @  	3 	3C))!3u:t * - -H  3!(!2!2I << 677 	*NN455(E5 6 G G H H H)))<<	** 	NN#      	e#<<66L e%%&T_c%ddd!Yrm   c                 d   |                      |          }|                     d| |d          }|                     d|dd           }|rt          |d          |                     d	|d
          }|                     t          |          |          pi }|                     t          |d                   |d          j        }| 	                    |           ||
                    d          t          |
                    d          d          |
                    d          d|ddgdS )Nzhttps://m.ok.ru/video/zDownloading mobile webpage)r'   u1   видео</a>\s*<div\s+class="empty">(.+?)</div>r   r   Tr   zdata-video="(.+?)"z	json datavideoSrczRequesting download URL	videoNamevideoDurationi  )scalevideoPosterSrcmobiler   )r   r(   r   )r   r   r%   r   r   )	_match_idr   r   r   r   r   _request_webpager   r(   rl   r   r	   )ri   r(   r   rs   r   	json_dataredirect_urls          rk   rx   zOdnoklassnikiIE._extract_mobile  sp   >>#&&((/X//- ) / / ""@Wd # , ,  	7 6666&&!7K9 9	$$\)%<%<hGGM2	,,[j!.# .#$,.GI IIL 	L))) ]];//%immO&D&DDQQQ"'788%#  

 

 
	
rm   )__name__
__module____qualname__
_VALID_URL_EMBED_REGEXintstrr   _TESTS_WEBPAGE_TESTSrl   classmethodrq   rz   rw   rx   __classcell__)ru   s   @rk   r   r      s       J ooL1#14 %%
 
 & "2('#%

 

 % " 01_%)C
 
 %)+qr
 
! , @1$E%)A
 
 #F+# ( 31
-
5
 h
 A	

 	
 >
 
 
 :
 S
 :
 #
   Y
 B
 %c
  \\\!
" 4#
$ $U&-!%$/
 
 
	 > 5$4A%)#	
 	
 T
 +! $ 34!: F
 

 
 2!R*)%F
 
 T
! ( D  4  9  2  7  5  h 
 2 
 8! H.)
 
 WvFr Y! I.)
 
 (  NM M M 4 4 4 4 [4  d d dL
 
 
 
 
 
 
rm   r   )urllib.parsere   commonr   compatr   
networkingr   utilsr   r	   r
   r   r   r   r   r   r   r   utils.traversalr   r   r    rm   rk   <module>r     s       ! ! ! ! ! ! , , , , , , $ $ $ $ $ $                        9 8 8 8 8 8 8 8n
 n
 n
 n
 n
m n
 n
 n
 n
 n
rm   