dropbox.py (1299B)
1 # coding: utf-8 2 from __future__ import unicode_literals 3 4 import os.path 5 import re 6 7 from .common import InfoExtractor 8 from ..compat import compat_urllib_parse_unquote 9 from ..utils import url_basename 10 11 12 class DropboxIE(InfoExtractor): 13 _VALID_URL = r'https?://(?:www\.)?dropbox[.]com/sh?/(?P<id>[a-zA-Z0-9]{15})/.*' 14 _TESTS = [ 15 { 16 'url': 'https://www.dropbox.com/s/nelirfsxnmcfbfh/youtube-dl%20test%20video%20%27%C3%A4%22BaW_jenozKc.mp4?dl=0', 17 'info_dict': { 18 'id': 'nelirfsxnmcfbfh', 19 'ext': 'mp4', 20 'title': 'youtube-dl test video \'รค"BaW_jenozKc' 21 } 22 }, { 23 'url': 'https://www.dropbox.com/sh/662glsejgzoj9sr/AAByil3FGH9KFNZ13e08eSa1a/Pregame%20Ceremony%20Program%20PA%2020140518.m4v', 24 'only_matching': True, 25 }, 26 ] 27 28 def _real_extract(self, url): 29 mobj = re.match(self._VALID_URL, url) 30 video_id = mobj.group('id') 31 fn = compat_urllib_parse_unquote(url_basename(url)) 32 title = os.path.splitext(fn)[0] 33 video_url = re.sub(r'[?&]dl=0', '', url) 34 video_url += ('?' if '?' not in video_url else '&') + 'dl=1' 35 36 return { 37 'id': video_id, 38 'title': title, 39 'url': video_url, 40 }