U
    gTC                     @   st   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	 d	eZdS )
    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                       s  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)d6d7d8dd9d:d;d<d=dd>ed?ed@dAedBdCdDdEgdFedGdHdIgdJdKdLdMdNdOddPdQdRdSdTddUd4dJidVdWdXdYdZdd[d\d]d^dd_d`daddbdcdddedfdd]eedgd4dJidhdidJdjdkdJdjdldJdjdmdJdjdndJdjdodJdjdpdJdjdqdJdjdrdsddtdudvddwdxdygZdzd{dd|d}d~dddxddgZ	dd Z
e fddZdd Zdd Zdd Z  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/1484130554189Z1keok9mp4i`\zre:^https?://.*\.jpg$u   Народная забаваZNevataZ20181223r   znevata.sg)\( @)idext	timestamp
view_count	thumbnailtitleuploaderupload_date	age_limituploader_id
like_countdurationZrepost_count)noteurl	info_dictzvk.com embeddedz!https://ok.ru/video/3568183087575z-165101755_456243749z
-165101755   i4aZ20220122)	r   r   r   r   r   r   r   r   r   zvk extractor error)r    r!   r"   skipzhttp://ok.ru/video/20079905452Z 8f477d8931c531374a3e36daec617b2cZ20079905452webmuH   Культура меняет нас (прекрасный ролик!))d   Z20141207Z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)formatZhttp_headers)r!   md5r"   paramsz.http://ok.ru/video/63567059965189-0?fromTime=5Z 2bae2f58eefe1b3d26f3926c4a64d2f3z63567059965189-0u.   Девушка без комплексов ...   Z20150518Z534380003155u'   ☭ Андрей Мещанинов ☭   )r   r   r   r   r   r   r   r   r   r   
start_timeZskip_downloadZm3u8z!https://ok.ru/video/3952212382174Z 5fb5f83ce16cb212d6bf887282b5da53Z5axVgHHDBvUzQYoutube-dl 101: What is it and HOW to use it! Full Download Walkthrough and Guidez$md5:b57209eeb9d5c2f20c984dfb58862097zLod MerZ575186401502i  Z20210405Znot_livez}https://i.mycdn.me/i?r=AEHujHvw2RjEbemUCNEorZbxYpb_p_9AcN2FmGik64Krkcmz37YtlY093oAM5-HIEAt7Zi9s0CiBOSDmbngC-I-k&fn=external_8z$https://www.youtube.com/@MrKewlkid94z
youtube-dlzyoutube playlistszdownload videoszdownload audioZUCVGtvURtEURYHtJFUegdSugpublicz8https://www.youtube.com/channel/UCVGtvURtEURYHtJFUegdSugZ	EducationTZBornToReact)r   r   r   descriptionr   r   r   r   r   Zcomment_countZlive_statusr   r   Zuploader_urlZchannel_follower_counttagsZ
channel_idr   ZavailabilityZchannel_url
categoriesZplayable_in_embedZchannel)r!   r(   r"   z#http://ok.ru/video/62036049272859-0z62036049272859-0u   МУЗЫКА     ДОЖДЯ .z$md5:6f1867132bd96e33bf53eda1091e8ed0Z20120106Z473534735899u	   МARINA D)r   r   r   r.   r   r   r   r   zVideo has not been found)r!   r"   r)   r$   z Only available in mobile webpagez#https://m.ok.ru/video/2361249957145Z2361249957145u#   Быковское крещениеg'1\@z*re:^https?://i\.mycdn\.me/videoPreview\?.+)r   r   r   r   r   	subtitlesz!https://ok.ru/video/4249587550747Z4249587550747z;Small Country An African Childhood (2020) (1080p) +subtitlezSunflower MoviesZ595802161179Z20220816iH  )r   r   r   r   r   r   r   r   r   r   r1   )r    r!   r"   r)   z2http://ok.ru/web-api/video/moviePlayer/20079905452)r!   Z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/2932705602075Z2932705602075zlhttps://i.mycdn.me/videoPreview?id=1369902483995&type=37&idx=2&tkn=fqlnoQD_xwq5ovIlKfgNyU08qmM&fn=external_8u   Boosty для тебя!Z597811038747#   )r   r   r   r   r   r   r   )r!   r"   zGhttps://boosty.to/ikakprosto/posts/56cedaca-b56a-4dfd-b3ed-98c79cfa0167Z3950343629563zmhttps://i.mycdn.me/videoPreview?id=2776238394107&type=37&idx=11&tkn=F3ejkUFcpuI4DnMRxrDGcH5YcmM&fn=external_8u   Заяц Бусти.mp4Z571368965883i(  zSite no longer embeds)r!   r"   r$   c                 C   s*   | j jdd | j jtj|jd d S )Nz	.mycdn.me)domain)	cookiejarclearurllibparseurlparsehostname)selfZcdn_url r;   B/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/odnoklassniki.py_clear_cookies   s    zOdnoklassnikiIE._clear_cookiesc                 #   s(   t  ||D ]}t|d|iV  qd S )Nreferrer)super_extract_embed_urlsr   )clsr!   webpagex	__class__r;   r<   r@      s    z#OdnoklassnikiIE._extract_embed_urlsc                 C   sb   z|  |W S  tk
r\ } z2z| |W  W Y S  tk
rJ   |Y nX W 5 d }~X Y nX d S )N)_extract_desktopr   _extract_mobile)r:   r!   er;   r;   r<   _real_extract   s    zOdnoklassnikiIE._real_extractc           )      C   s  t tjtj|jdd gd }t|i \}}| |	dd\}}|rTdnd}| j
d| d| |d	|d
rd|d
 ini d}| jd|dd d}|dkr|d
s|dkr| t|d
diS |rt|dd| t| jd| d|ddd|}	|	dr(|	dr(| |	d S |	d }
|
d}|rN| ||}n>i }|
d}|rj||d< | jtj|
d |dt|d }|d! }|d"}|d#kr|d$ n|d$}|d%}t |d&}|d'i }|d}|d(}t| jd)|d*d d}d }| jd+|d,d d}|r6|d-kr2d.nd}t |d/}i }t|d0td1D ]>}|d}|snqV||d2pd3g |d4d5 qV|||||||||||d6}|d7kr|d8|d9 d: |S |d;kr|d8|d9 d: |S |s t|d<kr||d$< td=}d>d? t|d@dAdB fD }t|dCdD} | rn|| j| |dEdFdGdHdI |  |  dJD ]<\}!}"||"}#|#rr|| j!|#||!dHdK |  |# qr|dL}$|$r|| "t#|$dM |D ].}%| jdN|%d dOd d}&|&r||&|%dP< q|dQ} | r>|| j| |dEdGdHdI |  |  |dR}'|'r`||'dSdTdU |s|dV}(|(r| j$dWdd ||dX< |S )YNZfromTimer   r   embedZ
videoembedvideozhttps://ok.ru//zDownloading desktop webpager>   Z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>{.+?z.+?})(?P=quote)player)groupZisExternalPlayerr!   	flashvarsmetadatalocationzst.locationZmetadataUrlzDownloading metadata JSON)datamovieproviderZUPLOADED_ODKLr   Zposterr   authornamezya:ovs:upload_datezupload datezya:ovs:adultz	age limittrue   Z	likeCount)rY   ZsubtitleTracks.)Zexpected_typelanguageenZvtt)r!   r   )r   r   r   r   r   r   r   r   r   r,   r1   Z
OPEN_GRAPHZurl_transparentZ	contentId)_typer!   ZUSER_YOUTUBEZLIVE_TV_APP)40123567c                 S   s"   g | ]}|d  d| ddqS )r!   r   r\   )r!   r   	format_id)get).0fr;   r;   r<   
<listcomp>v  s
   z4OdnoklassnikiIE._extract_desktop.<locals>.<listcomp>Zvideosc                 S   s   t |d S )Nr!   )r   )_vr;   r;   r<   <lambda>z      z2OdnoklassnikiIE._extract_desktop.<locals>.<lambda>ZhlsManifestUrlZondemandHlsr   Zm3u8_nativeZhlsF)Zm3u8_idfatal))ZdashZondemandDash)r%   ZmetadataWebmUrl)mpd_idrs   ZmetadataEmbeddedZmpdz\btype[/=](\d)zformat typequalityZhlsMasterPlaylistUrlZrtmpUrlZrtmpZflv)r!   rj   r   ZpaymentInfoz,This video is paid, subscribe to download itformats)%r	   r6   r7   parse_qsr8   queryrk   r   Z_match_valid_urlrT   _download_webpage_search_regexrF   r   r   _parse_jsonr   Z
url_resultZ_download_jsonunquoter   r   Z_html_search_metar   dict
setdefaultappendupdateAssertionErrorr
   extendZ_extract_m3u8_formatsr=   Z_extract_mpd_formatsZ_parse_mpd_formatsr   Zraise_no_formats))r:   r!   r,   Zsmuggledvideo_idZis_embedmoderB   rN   rS   rU   rV   rX   Zst_locationrY   rZ   r   r   r   r[   r   r   r   r   Zadultr   r1   subZsub_urlinforu   rv   Zm3u8_urlrt   Zmpd_keyZmpd_urlZdash_manifestfmtZfmt_typeZrtmp_urlZpayment_infor;   r;   r<   rF      sf       
  

 



      




    

   
   
    


z OdnoklassnikiIE._extract_desktopc                 C   s   |  |}| jd| |dd}| jd|dd d}|rBt|dd| d	|d
}| t||pbi }| t|d |dj}| 	| ||
dt|
ddd|
dd|ddgdS )Nzhttp://m.ok.ru/video/zDownloading mobile webpage)r    u1   видео</a>\s*<div\s+class="empty">(.+?)</div>rN   rO   TrQ   zdata-video="(.+?)"z	json dataZvideoSrczRequesting download URLZ	videoNameZvideoDurationi  )ZscaleZvideoPosterSrcZmobiler   )rj   r!   r   )r   r   r   r   rv   )Z	_match_idry   rz   r   r{   r   Z_request_webpager   r!   r=   rk   r   )r:   r!   r   rB   rN   Z	json_dataZredirect_urlr;   r;   r<   rG     sH    
      
zOdnoklassnikiIE._extract_mobile)__name__
__module____qualname__Z
_VALID_URLZ_EMBED_REGEXintstrr}   Z_TESTSZ_WEBPAGE_TESTSr=   classmethodr@   rI   rF   rG   __classcell__r;   r;   rD   r<   r      s|  
    :	
 /r   )urllib.parser6   commonr   compatr   Z
networkingr   utilsr   r   r	   r
   r   r   r   r   r   r   r   r   r;   r;   r;   r<   <module>   s
   4