a
    h                     @   s\   d dl Z d dlZd dlZd dlZddlmZ ddlm	Z	m
Z
mZmZmZ G dd deZdS )    N   )InfoExtractor   )ExtractorError
update_urlupdate_url_queryurl_basenameurlencode_postdatac                   @   sT   e Zd ZdZdddddddd	d
dd	d
dd	d
dd	d
gZdd Zdd ZdS )	DropboxIEzAhttps?://(?:www\.)?dropbox\.com/(?:(?:e/)?scl/fi|sh?)/(?P<id>\w+)zfhttps://www.dropbox.com/s/nelirfsxnmcfbfh/youtube-dl%20test%20video%20%27%C3%A4%22BaW_jenozKc.mp4?dl=0Znelirfsxnmcfbfhmp4u%   youtube-dl test video 'ä"BaW_jenozKc)idexttitle)urlZ	info_dictz)https://www.dropbox.com/s/nelirfsxnmcfbfhT)r   Zonly_matchingz`https://www.dropbox.com/sh/2mgpiuq7kv8nqdf/AABy-fW4dkydT4GmWi2mdOUDa?dl=0&preview=Drone+Shot.mp4zfhttps://www.dropbox.com/scl/fi/r2kd2skcy5ylbbta5y1pz/DJI_0003.MP4?dl=0&rlkey=wcdgqangn7t3lnmmv6li9mu9hzhhttps://www.dropbox.com/e/scl/fi/r2kd2skcy5ylbbta5y1pz/DJI_0003.MP4?dl=0&rlkey=wcdgqangn7t3lnmmv6li9mu9hc                 c   s.   t td|D ]}t|ddV  qd S )Nz=registerStreamedPrefetch\s*\(\s*"[\w/+=]+"\s*,\s*"([\w/+=]+)"zutf-8ignore)reversedrefindallbase64	b64decodedecode)selfwebpageencoded r   M/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/dropbox.py_yield_decoded_parts)   s    zDropboxIE._yield_decoded_partsc                 C   s  |  |}|d}| ||}tjt|}tj	|d }d }| 
|D ]}d|v rN| d|d} qnqN|r| d}	|	stddd	| jd
|dtd| dd j||	t|ddddd}
|
ddkrtddd	| ||}g i  }}d}d }| 
|D ]d}|s"| jd|ddd}| jd|dd d}|s>q| ||d\}}| jd|dd d} qlq|r|t|dd id!d"d#d$ |||||d%S )&Nr   r   z/sm/passwordzcontent_id=([\w.+=/-]+)z
content IDZvideopasswordz9Password protected video, use --video-password <password>T)expectedzhttps://www.dropbox.com/sm/authzPOSTing video passwordtruezhttps://www.dropbox.comt )schemenetloc)Zis_xhrr   
content_idpasswordr   )datastatusZauthedzInvalid passwordFz(anonymous:\tanonymous)Z	anonymous)defaultz&\n.?(https://[^\x03\x08\x12\n]+\.m3u8)ztranscode urlr   z;(https://www\.dropbox\.com/temp_thumb_from_token/[\w/?&=]+)	thumbnaildl1originalZOriginalr   )r   Z	format_idZformat_noteZquality)r   r   formats	subtitlesr(   )Z_match_valid_urlgroupZ_download_webpageurllibparseunquoter   ospathsplitextr   Z_search_regex	get_paramr   Z_download_jsonr	   Z_get_cookiesvaluer   getZ#_extract_m3u8_formats_and_subtitlesappendr   )r   r   ZmobjZvideo_idr   fnr   r#   partr$   responser,   r-   Zhas_anonymous_downloadr(   Ztranscode_urlr   r   r   _real_extract-   st    


	

zDropboxIE._real_extractN)__name__
__module____qualname__Z
_VALID_URLZ_TESTSr   r<   r   r   r   r   r
      s,   r
   )r   os.pathr2   r   urllib.parser/   commonr   utilsr   r   r   r   r	   r
   r   r   r   r   <module>   s   	