
    iB                         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y)    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                   F    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                   j                  d       | j                   j                  t        j                  j	                  |      j
                         y )Nz	.mycdn.me)domain)	cookiejarclearurllibparseurlparsehostname)selfcdn_urls     Q/var/www/files/kim/lib/python3.12/site-packages/yt_dlp/extractor/odnoklassniki.py_clear_cookieszOdnoklassnikiIE._clear_cookies   sC     	K0FLL$9$9'$B$K$KL    c              #   X   K   t         |   ||      D ]  }t        |d|i        y w)Nreferrer)super_extract_embed_urlsr   )clsr(   webpagex	__class__s       rk   rq   z#OdnoklassnikiIE._extract_embed_urls   s4     ,S': 	4Aa*c!233	4s   '*c                     	 | j                  |      S # t        $ r+}	 | j                  |      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   sQ    	((-- 	++C00! 	s!    	A3A?AAc                 4   t        t        j                  j                  t        j                  j	                  |      j
                        j                  dd g      d         }t        |i       \  }}| j                  |      j                  dd      \  }}|rdnd}| j                  d| d| |d	|j                  d
      rd|d
   ini       }t        |t        d      h      }|dk(  r3|j                  d
      s"|dk(  r| j                  t        |d
di            S |rt        |d      d|v r| j!                          | j#                  t%        | j'                  d| d|dd            |      }	|	j                  d      r%|	j                  d      r| j)                  |	d         S |	d   }
|
j                  d      }|r| j#                  ||      }nXi }|
j                  d      }|r||d<   | j+                  t        j                  j-                  |
d         |dt/        |             }|d!   }|j                  d"      }|d#k(  r|d$   n|j                  d$      }|j                  d%      }t        |j                  d&            }|j                  d'i       }|j                  d      }|j                  d(      }t1        | j3                  d)|d*d +            }d }| j3                  d,|d-d +      }|r	|d.k(  rd/nd}t        |j                  d0            }i }t        |d1t4        2      D ]M  }|j                  d      }|s|j7                  |j                  d3      xs d4g       j9                  |d5d6       O |||||||||||d7}|d8k(  r|j;                  d9|d:   d;       |S |sJ |d<k(  r||d$<   t=        d=      }t        |d>d? f      D cg c]  }|d   d@|j                  d(      dA } }t        |dBdC      }!|!r7| j?                  | jA                  |!|d@dDdEdFG             | jC                  |!       dHD ]N  \  }"}#|j                  |#      }$|$s| j?                  | jE                  |$||"dFI             | jC                  |$       P |j                  dJ      }%|%r*| j?                  | jG                  tI        |%      dK             | D ](  }&| j'                  dL|&d   dMd +      }'|'s ||'      |&dN<   * |j                  dO      }!|!r6| j?                  | jA                  |!|d@dEdFG             | jC                  |!       |j                  dP      }(|(r| j9                  |(dQdRdS       | s&|j                  dT      })|)r| jK                  dUd       | |dV<   |S c c}w )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7videosc                     t        |d         S )Nr(   )r   )_vs     rk   <lambda>z2OdnoklassnikiIE._extract_desktop.<locals>.<lambda>r  s    +aPUhBW rm   r   )r(   r   	format_idhlsManifestUrlondemandHls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   querygetr   _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   fr   m3u8_urlr   mpd_keympd_urldash_manifestfmtfmt_typertmp_urlpayment_infos*                                             rk   rw   z OdnoklassnikiIE._extract_desktop   s:    !6!6LL!!#&,,"..1c*tf.Ea"I J
 &c2.X!2237==dGL('|W((TF!H:..9Aj9QY 45WY ) [
 W|8K'L&MNPP Z0T\5I((S:GZ:[)\]] 668GC%%'!!++@
JZ[ , 3 4 	 ::()fjj.???6%=11;'	==,''(;HD#--
3K&1]#**$$Y}%=>5'- + /H
 ! <<
+"*o"=g599WCUIIh'	uyy45h+jj&::f%%d&<&< '=$ '= 'H I 	&&G[$ ' @#vo1I k!:;
	*JZ^_ 	CggenG  !4!<bAHHJ 		 " & &$"$"
 ~%KK*[)  Ku}$!DMDE  85W*XY	[  U8v
 [ [  *:MJNN455(E=U 6 , - )V 	-OFGll7+Gt88XfE  9  C D##G,	- !%78NN422'6? @  	3C))!3u:t * -H !(!2I	3 << 67NN455(E5 6 G H)<<	*NN#  #<<6L%%&T_c%d!Yi[s   Vc                    | j                  |      }| j                  d| |d      }| j                  d|dd       }|rt        |d      | j                  d	|d
      }| j	                  t        |      |      xs i }| j                  t        |d         |d      j                  }| j                  |       ||j                  d      t        |j                  d      d      |j                  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  s$   >>#&(($XJ/- ) / ""@Wd # ,  66&&!7K9	$$\)%<hGM2	,,[j!.#$,.GIIL 	L) ]];/%immO&DDQ"'7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 4 4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	     s3     ! , $   9n
m n
rm   