
    yfC                         d dl ZddlmZ ddlmZmZmZ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compat_parse_qscompat_urllib_parse_unquotecompat_urllib_parse_urlparse)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*   r7   r+   z#http://ok.ru/video/62036049272859-0z62036049272859-0u   МУЗЫКА     ДОЖДЯ .z$md5:6f1867132bd96e33bf53eda1091e8ed020120106473534735899u	   МARINA D)r   r   r!   rC   r#   r%   r"   r$   zVideo has not been found)r*   r+   r8   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&   rY   )r)   r*   r+   r8   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     @/usr/lib/python3/dist-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       rm   rs   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)rk   r*   es      rm   _real_extractzOdnoklassnikiIE._real_extract   sQ    	((-- 	++C00! 	s!    	A3A?AAc                 
   t        t        t        |      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      | j                  t        | j                  d|z  |dd            |      }	|	j	                  d      r%|	j	                  d      r| j                  |	d         S |	d   }
|
j	                  d      }|r| j                  ||      }nDi }|
j	                  d      }|r||d<   | j!                  t#        |
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	                  d.            }i }t+        |d/t,        0      D ]M  }|j	                  d      }|s|j/                  |j	                  d1      xs d2g       j1                  |d3d4       O |||||||||||d5}|d6k(  r|j3                  d7|d8   d9       |S |d:k(  r|j3                  d7|d8   d9       |S |sJ |d;k(  r||d#<   t5        d<      }t+        |d=d> f      D cg c]  }|d   d?|j	                  d'      d@ } }t+        |dAdB      }!|!r7| j7                  | j9                  |!|d?dCdDdEF             | j;                  |!       dGD ]N  \  }"}#|j	                  |#      }$|$s| j7                  | j=                  |$||"dEH             | j;                  |$       P |j	                  dI      }%|%r*| j7                  | j?                  tA        |%      dJ             | D ](  }&| j                  dK|&d   dLd       }'|'s ||'      |&dM<   * |j	                  dN      }!|!r6| j7                  | j9                  |!|d?dDdEF             | j;                  |!       |j	                  dO      }(|(r| j1                  |(dPdQdR       | s&|j	                  dS      })|)r| jC                  dTd       | |dU<   |S c c}w )VNfromTimer   r   embed
videoembedvideozhttps://ok.ru//zDownloading desktop webpagerq   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=data-options=(?P<quote>["\'])(?P<player>{.+?%s.+?})(?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>   rY   
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     rm   <lambda>z2OdnoklassnikiIE._extract_desktop.<locals>.<lambda>  s    +aPUhBW ro   r   )r*   r   	format_idhlsManifestUrlondemandHlsm3u8_nativehlsF)m3u8_idfatal))dashondemandDash)r1   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   r   r	   querygetr   _match_valid_urlr   _download_webpage_search_regexry   r   r   _parse_jsonr   
url_result_download_jsonr   r   r   _html_search_metar   dict
setdefaultappendupdater   extend_extract_m3u8_formatsrn   _extract_mpd_formats_parse_mpd_formatsr   raise_no_formats)*rk   r*   r>   smuggledvideo_idis_embedmoderu   r   r   r   r   r   st_locationr   r   r!   r    r'   r   r%   r"   r#   r$   adultr&   rY   subsub_urlinfor   fr   m3u8_urlr   mpd_keympd_urldash_manifestfmtfmt_typertmp_urlpayment_infos*                                             rm   ry   z OdnoklassnikiIE._extract_desktop  s;    (-33"558SdV5LQ"P Q
 &c2.X!2237==dGL('|W((TF!H:..9Aj9QY 45WY ) [
 "";Wd # , PP Z0T\5I((S:GZ:[)\]] 66!!++PS[[ , 3 4 	 ::()fjj.???6%=11;'	==,''(;HD#--
3K&1]#**+Im,DE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   U c                    | j                  |      }| j                  d|z  |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http://m.ok.ru/video/%sz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*   rn   r   r   )rk   r*   r   ru   r   	json_dataredirect_urls          rm   rz   zOdnoklassnikiIE._extract_mobile  s"   >>#&((%0(- ) / ""@Wd # ,  66&&!7K9	$$\)%<hGM2	,,[j!.#$,.GIIL 	L) ]];/%immO&DDQ"'78%# 

 
	
ro   )__name__
__module____qualname__
_VALID_URL_EMBED_REGEXintstrr   _TESTS_WEBPAGE_TESTSrn   classmethodrs   r|   ry   rz   __classcell__)rw   s   @rm   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l\
ro   r   )urllib.parserg   commonr   compatr   r   r   r	   
networkingr
   utilsr   r   r   r   r   r   r   r   r   r   r   r    ro   rm   <module>r     s<     !  %   v
m v
ro   