o
    ib                     @   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                   @   s\   e Zd ZdZddd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 )	DropboxIEzDhttps?://(?:www\.)?dropbox\.com/(?:(?:e/)?scl/f[io]|sh?)/(?P<id>\w+)zfhttps://www.dropbox.com/s/nelirfsxnmcfbfh/youtube-dl%20test%20video%20%27%C3%A4%22BaW_jenozKc.mp4?dl=0nelirfsxnmcfbfhmp4u%   youtube-dl test video 'ä"BaW_jenozKc)idexttitle)url	info_dictz)https://www.dropbox.com/s/nelirfsxnmcfbfhT)r   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=wcdgqangn7t3lnmmv6li9mu9hzhttps://www.dropbox.com/scl/fo/zjfqse5txqfd7twa8iewj/AOfZzSYWUSKle2HD7XF7kzQ/A-BEAT%20C.mp4?rlkey=6tg3jkp4tv6a5vt58a6dag0mm&dl=0c                 c   s0    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   L/home/ubuntu/.local/lib/python3.10/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 r6| d|d} nq'|ru| d}	|	sFtddd	| jd
|dtd| dd j||	t|ddddd}
|
ddkrotddd	| ||}g i }}d}d }| 
|D ]+}|s| jd|ddd}| jd|dd d}|sq| ||d\}}| jd|dd d} |r|t|dd id!d"d#d$ |||||d%S )&Nr   r   z/sm/passwordzcontent_id=([\w.+=/-]+)z
content ID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)is_xhrr#   
content_idpasswordr   )datastatusauthedzInvalid passwordFz(anonymous:\tanonymous)	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originalOriginalr   )r   	format_idformat_notequality)r   r   formats	subtitlesr/   )_match_valid_urlgroup_download_webpageurllibparseunquoter   ospathsplitextr   _search_regex	get_paramr   _download_jsonr	   _get_cookiesvaluer   get#_extract_m3u8_formats_and_subtitlesappendr   )r   r   mobjvideo_idr   fnr   r(   partr)   responser7   r8   has_anonymous_downloadr/   transcode_urlr   r   r   _real_extract0   sv   


	
zDropboxIE._real_extractN)__name__
__module____qualname__
_VALID_URL_TESTSr   rQ   r   r   r   r   r
      s4    r
   )r   os.pathr?   r   urllib.parser<   commonr   utilsr   r   r   r   r	   r
   r   r   r   r   <module>   s    	