diff --git a/you_get/common.py b/you_get/common.py index f78355a7046af9ad24ad1d12ccd391a8f98f8fd7..e2ab59a22ed0fa6cff36f69f769355764bde641f 100644 --- a/you_get/common.py +++ b/you_get/common.py @@ -132,9 +132,17 @@ def url_info(url, faker = False): if type in mapping: ext = mapping[type] else: - ext = None + type = None + filename = parse.unquote(r1(r'filename="?(.+)"?', headers['content-disposition'])) + if len(filename.split('.')) > 1: + ext = filename.split('.')[-1] + else: + ext = None - size = int(headers['content-length']) + if headers['transfer-encoding'] != 'chunked': + size = int(headers['content-length']) + else: + size = None return type, ext, size @@ -357,7 +365,6 @@ def download_urls(urls, title, ext, total_size, output_dir = '.', refer = None, print('Real URLs:\n', urls, '\n') return - #assert ext in ('3gp', 'flv', 'mp4', 'webm') if not total_size: try: total_size = urls_size(urls) @@ -506,7 +513,7 @@ def playlist_not_supported(name): def print_info(site_info, title, type, size): if type in ['3gp']: type = 'video/3gpp' - elif type in ['asf']: + elif type in ['asf', 'wmv']: type = 'video/x-ms-asf' elif type in ['flv', 'f4v']: type = 'video/x-flv' diff --git a/you_get/downloader/googleplus.py b/you_get/downloader/googleplus.py index 27789e96d9719653871e414b6e6bc0221ce35060..6b9257fac5839d6e16e1c840661acb1616357ddb 100644 --- a/you_get/downloader/googleplus.py +++ b/you_get/downloader/googleplus.py @@ -20,8 +20,10 @@ def googleplus_download(url, output_dir = '.', merge = True, info_only = False): html = get_html(url2) html = parse.unquote(html.replace('\/', '/')) - real_url = unicodize(r1(r'"(https://video.googleusercontent.com/[^"]*)"', html).replace('\/', '/')) - if not real_url: + real_url = unicodize(r1(r'"(https://video.googleusercontent.com/[^"]*)",1\]', html).replace('\/', '/')) + if real_url: + type, ext, size = url_info(real_url) + if not real_url or not size: url_data = re.findall(r'(\[[^\[\"]+\"http://redirector.googlevideo.com/.*\"\])', html) for itag in [ '38', @@ -46,10 +48,12 @@ def googleplus_download(url, output_dir = '.', merge = True, info_only = False): break real_url = unicodize(real_url) - _, _, size = url_info(real_url) - type, ext = 'video/mp4', 'mp4' + type, ext, size = url_info(real_url) - print_info(site_info, title, type, size) + if not ext: + ext = 'mp4' + + print_info(site_info, title, ext, size) if not info_only: download_urls([real_url], title, ext, size, output_dir, merge = merge)