U
    g5                     @   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   </tmp/pip-unpacked-wheel-q5ljy6pj/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|krT| td|dd d|} qqT| j|d d	d
ksd|kr(|r| jd|ddditd| dd j| d|d||dd}	|	ddkrtdddn| ddstddd| ||}g i  }
}d}d }| |D ]d}|s`| jd |d!dd	}| jd"|d#d d	}|s|qD| ||d$\}
}| jd%|d&d d	} qqD|r|
t|d'd(id)d*d+d, |||
||d-S ).Nr   r   Zvideopasswordz/sm/passwordz#https://www.dropbox.com/sm/password?r   )query)defaultzDropbox - Password Requiredz Enter the password for this linkzhttps://www.dropbox.com/sm/authzPOSTing video passwordzcontent-typez0application/x-www-form-urlencoded; charset=UTF-8truezhttps://www.dropbox.comtzcontent_id=([\w.+=/-]+)["\']z
content id)Zis_xhrr!   Z
content_idpasswordr   )headersdatastatusZauthedzInvalid passwordT)expectedzhttps://dropbox.comZsm_authz9Password protected video, use --video-password <password>Fz(anonymous:\tanonymous)Z	anonymousz%\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splitext	get_paramr   r   	partitionZ_og_search_titleZ_download_jsonr	   Z_get_cookiesvalueZ_search_regexgetr   Z#_extract_m3u8_formats_and_subtitlesappendr   )r   r   ZmobjZvideo_idr   fnr   r"   partresponser+   r,   Zhas_anonymous_downloadr'   Ztranscode_urlr   r   r   _real_extract-   s    


   
         
zDropboxIE._real_extractN)__name__
__module____qualname__Z
_VALID_URLZ_TESTSr   r<   r   r   r   r   r
      s,   r
   )r   os.pathr1   r   urllib.parser.   commonr   utilsr   r   r   r   r	   r
   r   r   r   r   <module>   s   	