o
    iB                     @   s   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
 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                       sF  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	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/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&   r3   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'   r4   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"   rU   )r%   r&   r'   r4   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                 C   s*   | j jdd | j jtj|jd d S )Nz	.mycdn.me)domain)	cookiejarclearurllibparseurlparsehostname)selfcdn_url rh   R/home/ubuntu/.local/lib/python3.10/site-packages/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__rh   ri   rm      s   z#OdnoklassnikiIE._extract_embed_urlsc                 C   sR   z|  |W S  ty( } zz| |W W  Y d }~S  ty#   |w d }~ww )N)_extract_desktopr   _extract_mobile)rf   r&   erh   rh   ri   _real_extract   s   zOdnoklassnikiIE._real_extractc           )      C   st  t tjtj|jdd gd }t|i \}}| |	dd\}}|r*dnd}| j
d| d| |d	|d
rBd|d
 ini d}t|tddh}|dkrf|d
sf|dkrf| t|d
diS |rnt|ddd|v rv|   | t| jd| d|ddd|}	|	dr|	dr| |	d S |	d }
|
d}|r| ||}ni }|
d}|r||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+}|r|d.krd/nd}t |d0}i }t|d1td2D ]}|d}|s:q.||d3pCd4g |d5d6 q.|||||||||||d7}|d8krm|d9|d: d; |S |srJ |d<kr{||d$< td=}d>d? t|d@dAdB fD }t|dCdD} | r|| j | |dEdFdGdHdI | !|  dJD ]\}!}"||"}#|#r|| j"|#||!dHdK | !|# q|dL}$|$r|| #t$|$dM |D ]}%| jdN|%d dOd d+}&|&r||&|%dP< q|dQ} | r|| j | |dEdGdHdI | !|  |dR}'|'r"||'dSdTdU |s4|dV}(|(r4| j%dWdd ||dX< |S )YNfromTimer   r   embed
videoembedvideozhttps://ok.ru//zDownloading desktop webpagerk   Referer)r%   headersvp_video_stub_txt)rn   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:   rU   USER_YOUTUBEurl_transparent	contentId)_typer&   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frh   rh   ri   
<listcomp>n  s    
z4OdnoklassnikiIE._extract_desktop.<locals>.<listcomp>videosc                 S   s   t |d S )Nr&   )r   )_vrh   rh   ri   <lambda>r  s    z2OdnoklassnikiIE._extract_desktop.<locals>.<lambda>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	   rb   rc   parse_qsrd   queryr   r   _match_valid_urlr   _download_webpager   r   rs   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_formatsrj   _extract_mpd_formats_parse_mpd_formatsr   raise_no_formats))rf   r&   r:   smuggledvideo_idis_embedmodero   errorr   r   r   r   st_locationr   r   r   r   r#   r   r!   r   r   r    adultr"   rU   subsub_urlinfor   r   m3u8_urlr   mpd_keympd_urldash_manifestfmtfmt_typertmp_urlpayment_inforh   rh   ri   rs      s   



















z OdnoklassnikiIE._extract_desktopc                 C   s   |  |}| jd| |dd}| jd|dd d}|r!t|dd| d	|d
}| t||p1i }| t|d |dj}| 	| ||
dt|
d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&   rj   r   r   )rf   r&   r   ro   r   	json_dataredirect_urlrh   rh   ri   rt     s@   


zOdnoklassnikiIE._extract_mobile)__name__
__module____qualname__
_VALID_URL_EMBED_REGEXintstrr   _TESTS_WEBPAGE_TESTSrj   classmethodrm   rv   rs   rt   __classcell__rh   rh   rq   ri   r      s   	
  :	
 'r   )urllib.parserb   commonr   compatr   
networkingr   utilsr   r   r	   r
   r   r   r   r   r   r   utils.traversalr   r   r   rh   rh   rh   ri   <module>   s    0