
    VGhC                     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	m
Z
mZmZmZmZmZmZmZ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traverse_objunescapeHTMLunified_strdateunsmuggle_urlurl_or_noneurlencode_postdatac                   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'   r4   r(   z#http://ok.ru/video/62036049272859-0z62036049272859-0u   МУЗЫКА     ДОЖДЯ .z$md5:6f1867132bd96e33bf53eda1091e8ed020120106473534735899u	   МARINA D)r   r   r   r@   r    r"   r   r!   zVideo has not been found)r'   r(   r5   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#   rV   )r&   r'   r(   r5   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     g/var/www/it7/html/youtubeDownloader/venv/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       rj   rp   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)rh   r'   es      rj   _real_extractzOdnoklassnikiIE._real_extract   sQ    	((-- 	++C00! 	s!    	A3A?AAc                 l   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       }| j                  d|dd       }|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)      }t-        | j/                  d*|d+d             }d }| j/                  d,|d-d       }|r	|d.k(  rd/nd}t        |j                  d0            }i }t1        |d1t2        2      D ]M  }|j                  d      }|s|j5                  |j                  d3      xs d4g       j7                  |d5d6       O |||||||||||d7}|d8k(  r|j9                  d9|d:   d;       |S |d<k(  r|j9                  d9|d:   d;       |S |sJ |d=k(  r||d%<   t;        d>      }t1        |d?d@ f      D cg c]  }|d   dA|j                  d)      dB } }t1        |dCdD      }!|!r7| j=                  | j?                  |!|dAdEdFdGH             | jA                  |!       dID ]N  \  }"}#|j                  |#      }$|$s| j=                  | jC                  |$||"dGJ             | jA                  |$       P |j                  dK      }%|%r*| j=                  | jE                  tG        |%      dL             | D ](  }&| j                  dM|&d   dNd       }'|'s ||'      |&dO<   * |j                  dP      }!|!r6| j=                  | j?                  |!|dAdFdGH             | jA                  |!       |j                  dQ      }(|(r| j7                  |(dRdSdT       | s&|j                  dU      })|)r| jI                  dVd       | |dW<   |S c c}w )XNfromTimer   r   embed
videoembedvideozhttps://ok.ru//zDownloading desktop webpagern   Referer)r&   headersz,[^>]+class="vp_video_stub_txt"[^>]*>([^<]+)<errordefaultz9The 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 datez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;   rV   
OPEN_GRAPHurl_transparent	contentId)_typer'   USER_YOUTUBELIVE_TV_APP)40123567videosc                     t        |d         S )Nr'   )r   )_vs     rj   <lambda>z2OdnoklassnikiIE._extract_desktop.<locals>.<lambda>|  s    +aPUhBW rl   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
   rd   re   parse_qsrf   querygetr   _match_valid_urlr   _download_webpage_search_regexrv   r   r   raise_login_required_parse_jsonr   
url_result_download_jsonunquoter   r   _html_search_metar   dict
setdefaultappendupdater   extend_extract_m3u8_formatsrk   _extract_mpd_formats_parse_mpd_formatsr   raise_no_formats)*rh   r'   r;   smuggledvideo_idis_embedmoderr   r   r   r   r   r   st_locationr   r   r   r   r$   r   r"   r   r    r!   adultr#   rV   subsub_urlinfor   fr   m3u8_urlr   mpd_keympd_urldash_manifestfmtfmt_typertmp_urlpayment_infos*                                             rj   rv   z OdnoklassnikiIE._extract_desktop   sq    !6!6LL!!#&,,"..1c*tf.Ea"I J
 &c2.X!2237==dGL('|W((TF!H:..9Aj9QY 45WY ) [
 "";Wd # , 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~%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   -V1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'   rk   r   r	   )rh   r'   r   rr   r   	json_dataredirect_urls          rj   rw   zOdnoklassnikiIE._extract_mobile  s$   >>#&(($XJ/- ) / ""@Wd # ,  66&&!7K9	$$\)%<hGM2	,,[j!.#$,.GIIL 	L) ]];/%immO&DDQ"'78%# 

 
	
rl   )__name__
__module____qualname__
_VALID_URL_EMBED_REGEXintstrr   _TESTS_WEBPAGE_TESTSrk   classmethodrp   ry   rv   rw   __classcell__)rt   s   @rj   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n`
rl   r   )urllib.parserd   commonr   compatr   
networkingr   utilsr   r	   r
   r   r   r   r   r   r   r   r   r    rl   rj   <module>r     s3     ! , $   x
m x
rl   