Merge remote-tracking branch 'jtwaleson/master'
This commit is contained in:
		| @@ -30,7 +30,6 @@ def build_completion(opt_parser): | |||||||
|     for group in opt_parser.option_groups: |     for group in opt_parser.option_groups: | ||||||
|         for option in group.option_list: |         for option in group.option_list: | ||||||
|             long_option = option.get_opt_string().strip('-') |             long_option = option.get_opt_string().strip('-') | ||||||
|             help_msg = shell_quote([option.help]) |  | ||||||
|             complete_cmd = ['complete', '--command', 'youtube-dl', '--long-option', long_option] |             complete_cmd = ['complete', '--command', 'youtube-dl', '--long-option', long_option] | ||||||
|             if option._short_opts: |             if option._short_opts: | ||||||
|                 complete_cmd += ['--short-option', option._short_opts[0].strip('-')] |                 complete_cmd += ['--short-option', option._short_opts[0].strip('-')] | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								setup.py
									
									
									
									
									
								
							| @@ -4,7 +4,6 @@ | |||||||
| from __future__ import print_function | from __future__ import print_function | ||||||
|  |  | ||||||
| import os.path | import os.path | ||||||
| import pkg_resources |  | ||||||
| import warnings | import warnings | ||||||
| import sys | import sys | ||||||
|  |  | ||||||
|   | |||||||
| @@ -701,13 +701,15 @@ class YoutubeDL(object): | |||||||
|                 'It needs to be updated.' % ie_result.get('extractor')) |                 'It needs to be updated.' % ie_result.get('extractor')) | ||||||
|  |  | ||||||
|             def _fixup(r): |             def _fixup(r): | ||||||
|                 self.add_extra_info(r, |                 self.add_extra_info( | ||||||
|  |                     r, | ||||||
|                     { |                     { | ||||||
|                         'extractor': ie_result['extractor'], |                         'extractor': ie_result['extractor'], | ||||||
|                         'webpage_url': ie_result['webpage_url'], |                         'webpage_url': ie_result['webpage_url'], | ||||||
|                         'webpage_url_basename': url_basename(ie_result['webpage_url']), |                         'webpage_url_basename': url_basename(ie_result['webpage_url']), | ||||||
|                         'extractor_key': ie_result['extractor_key'], |                         'extractor_key': ie_result['extractor_key'], | ||||||
|                     }) |                     } | ||||||
|  |                 ) | ||||||
|                 return r |                 return r | ||||||
|             ie_result['entries'] = [ |             ie_result['entries'] = [ | ||||||
|                 self.process_ie_result(_fixup(r), download, extra_info) |                 self.process_ie_result(_fixup(r), download, extra_info) | ||||||
|   | |||||||
| @@ -225,13 +225,15 @@ class F4mFD(FileDownloader): | |||||||
|         self.to_screen('[download] Downloading f4m manifest') |         self.to_screen('[download] Downloading f4m manifest') | ||||||
|         manifest = self.ydl.urlopen(man_url).read() |         manifest = self.ydl.urlopen(man_url).read() | ||||||
|         self.report_destination(filename) |         self.report_destination(filename) | ||||||
|         http_dl = HttpQuietDownloader(self.ydl, |         http_dl = HttpQuietDownloader( | ||||||
|  |             self.ydl, | ||||||
|             { |             { | ||||||
|                 'continuedl': True, |                 'continuedl': True, | ||||||
|                 'quiet': True, |                 'quiet': True, | ||||||
|                 'noprogress': True, |                 'noprogress': True, | ||||||
|                 'test': self.params.get('test', False), |                 'test': self.params.get('test', False), | ||||||
|             }) |             } | ||||||
|  |         ) | ||||||
|  |  | ||||||
|         doc = etree.fromstring(manifest) |         doc = etree.fromstring(manifest) | ||||||
|         formats = [(int(f.attrib.get('bitrate', -1)), f) for f in doc.findall(_add_ns('media'))] |         formats = [(int(f.attrib.get('bitrate', -1)), f) for f in doc.findall(_add_ns('media'))] | ||||||
|   | |||||||
| @@ -25,8 +25,7 @@ class CNNIE(InfoExtractor): | |||||||
|             'duration': 135, |             'duration': 135, | ||||||
|             'upload_date': '20130609', |             'upload_date': '20130609', | ||||||
|         }, |         }, | ||||||
|     }, |     }, { | ||||||
|     { |  | ||||||
|         "url": "http://edition.cnn.com/video/?/video/us/2013/08/21/sot-student-gives-epic-speech.georgia-institute-of-technology&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+rss%2Fcnn_topstories+%28RSS%3A+Top+Stories%29", |         "url": "http://edition.cnn.com/video/?/video/us/2013/08/21/sot-student-gives-epic-speech.georgia-institute-of-technology&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+rss%2Fcnn_topstories+%28RSS%3A+Top+Stories%29", | ||||||
|         "md5": "b5cc60c60a3477d185af8f19a2a26f4e", |         "md5": "b5cc60c60a3477d185af8f19a2a26f4e", | ||||||
|         "info_dict": { |         "info_dict": { | ||||||
|   | |||||||
| @@ -10,7 +10,8 @@ from ..utils import int_or_none | |||||||
| class CollegeHumorIE(InfoExtractor): | class CollegeHumorIE(InfoExtractor): | ||||||
|     _VALID_URL = r'^(?:https?://)?(?:www\.)?collegehumor\.com/(video|embed|e)/(?P<videoid>[0-9]+)/?(?P<shorttitle>.*)$' |     _VALID_URL = r'^(?:https?://)?(?:www\.)?collegehumor\.com/(video|embed|e)/(?P<videoid>[0-9]+)/?(?P<shorttitle>.*)$' | ||||||
|  |  | ||||||
|     _TESTS = [{ |     _TESTS = [ | ||||||
|  |         { | ||||||
|             'url': 'http://www.collegehumor.com/video/6902724/comic-con-cosplay-catastrophe', |             'url': 'http://www.collegehumor.com/video/6902724/comic-con-cosplay-catastrophe', | ||||||
|             'md5': 'dcc0f5c1c8be98dc33889a191f4c26bd', |             'md5': 'dcc0f5c1c8be98dc33889a191f4c26bd', | ||||||
|             'info_dict': { |             'info_dict': { | ||||||
| @@ -21,8 +22,7 @@ class CollegeHumorIE(InfoExtractor): | |||||||
|                 'age_limit': 13, |                 'age_limit': 13, | ||||||
|                 'duration': 187, |                 'duration': 187, | ||||||
|             }, |             }, | ||||||
|     }, |         }, { | ||||||
|     { |  | ||||||
|             'url': 'http://www.collegehumor.com/video/3505939/font-conference', |             'url': 'http://www.collegehumor.com/video/3505939/font-conference', | ||||||
|             'md5': '72fa701d8ef38664a4dbb9e2ab721816', |             'md5': '72fa701d8ef38664a4dbb9e2ab721816', | ||||||
|             'info_dict': { |             'info_dict': { | ||||||
| @@ -33,9 +33,8 @@ class CollegeHumorIE(InfoExtractor): | |||||||
|                 'age_limit': 10, |                 'age_limit': 10, | ||||||
|                 'duration': 179, |                 'duration': 179, | ||||||
|             }, |             }, | ||||||
|     }, |         }, { | ||||||
|             # embedded youtube video |             # embedded youtube video | ||||||
|     { |  | ||||||
|             'url': 'http://www.collegehumor.com/embed/6950306', |             'url': 'http://www.collegehumor.com/embed/6950306', | ||||||
|             'info_dict': { |             'info_dict': { | ||||||
|                 'id': 'Z-bao9fg6Yc', |                 'id': 'Z-bao9fg6Yc', | ||||||
|   | |||||||
| @@ -11,15 +11,15 @@ from ..utils import url_basename | |||||||
|  |  | ||||||
| class DropboxIE(InfoExtractor): | class DropboxIE(InfoExtractor): | ||||||
|     _VALID_URL = r'https?://(?:www\.)?dropbox[.]com/sh?/(?P<id>[a-zA-Z0-9]{15})/.*' |     _VALID_URL = r'https?://(?:www\.)?dropbox[.]com/sh?/(?P<id>[a-zA-Z0-9]{15})/.*' | ||||||
|     _TESTS = [{ |     _TESTS = [ | ||||||
|  |         { | ||||||
|             'url': 'https://www.dropbox.com/s/nelirfsxnmcfbfh/youtube-dl%20test%20video%20%27%C3%A4%22BaW_jenozKc.mp4?dl=0', |             'url': 'https://www.dropbox.com/s/nelirfsxnmcfbfh/youtube-dl%20test%20video%20%27%C3%A4%22BaW_jenozKc.mp4?dl=0', | ||||||
|             'info_dict': { |             'info_dict': { | ||||||
|                 'id': 'nelirfsxnmcfbfh', |                 'id': 'nelirfsxnmcfbfh', | ||||||
|                 'ext': 'mp4', |                 'ext': 'mp4', | ||||||
|                 'title': 'youtube-dl test video \'ä"BaW_jenozKc' |                 'title': 'youtube-dl test video \'ä"BaW_jenozKc' | ||||||
|             } |             } | ||||||
|     }, |         }, { | ||||||
|     { |  | ||||||
|             'url': 'https://www.dropbox.com/sh/662glsejgzoj9sr/AAByil3FGH9KFNZ13e08eSa1a/Pregame%20Ceremony%20Program%20PA%2020140518.m4v', |             'url': 'https://www.dropbox.com/sh/662glsejgzoj9sr/AAByil3FGH9KFNZ13e08eSa1a/Pregame%20Ceremony%20Program%20PA%2020140518.m4v', | ||||||
|             'only_matching': True, |             'only_matching': True, | ||||||
|         }, |         }, | ||||||
|   | |||||||
| @@ -58,9 +58,13 @@ class InternetVideoArchiveIE(InfoExtractor): | |||||||
|         item = info.find('channel/item') |         item = info.find('channel/item') | ||||||
|  |  | ||||||
|         def _bp(p): |         def _bp(p): | ||||||
|             return xpath_with_ns(p, |             return xpath_with_ns( | ||||||
|                 {'media': 'http://search.yahoo.com/mrss/', |                 p, | ||||||
|                 'jwplayer': 'http://developer.longtailvideo.com/trac/wiki/FlashFormats'}) |                 { | ||||||
|  |                     'media': 'http://search.yahoo.com/mrss/', | ||||||
|  |                     'jwplayer': 'http://developer.longtailvideo.com/trac/wiki/FlashFormats', | ||||||
|  |                 } | ||||||
|  |             ) | ||||||
|         formats = [] |         formats = [] | ||||||
|         for content in item.findall(_bp('media:group/media:content')): |         for content in item.findall(_bp('media:group/media:content')): | ||||||
|             attr = content.attrib |             attr = content.attrib | ||||||
|   | |||||||
| @@ -13,8 +13,10 @@ class KickStarterIE(InfoExtractor): | |||||||
|             'id': '1404461844', |             'id': '1404461844', | ||||||
|             'ext': 'mp4', |             'ext': 'mp4', | ||||||
|             'title': 'Intersection: The Story of Josh Grant by Kyle Cowling', |             'title': 'Intersection: The Story of Josh Grant by Kyle Cowling', | ||||||
|             'description': 'A unique motocross documentary that examines the ' |             'description': ( | ||||||
|                 'life and mind of one of sports most elite athletes: Josh Grant.', |                 'A unique motocross documentary that examines the ' | ||||||
|  |                 'life and mind of one of sports most elite athletes: Josh Grant.' | ||||||
|  |             ), | ||||||
|         }, |         }, | ||||||
|     }, { |     }, { | ||||||
|         'note': 'Embedded video (not using the native kickstarter video service)', |         'note': 'Embedded video (not using the native kickstarter video service)', | ||||||
|   | |||||||
| @@ -27,8 +27,7 @@ class NineGagIE(InfoExtractor): | |||||||
|             "thumbnail": "re:^https?://", |             "thumbnail": "re:^https?://", | ||||||
|         }, |         }, | ||||||
|         'add_ie': ['Youtube'] |         'add_ie': ['Youtube'] | ||||||
|     }, |     }, { | ||||||
|     { |  | ||||||
|         'url': 'http://9gag.tv/p/KklwM/alternate-banned-opening-scene-of-gravity?ref=fsidebar', |         'url': 'http://9gag.tv/p/KklwM/alternate-banned-opening-scene-of-gravity?ref=fsidebar', | ||||||
|         'info_dict': { |         'info_dict': { | ||||||
|             'id': 'KklwM', |             'id': 'KklwM', | ||||||
|   | |||||||
| @@ -27,8 +27,7 @@ class SBSIE(InfoExtractor): | |||||||
|             'thumbnail': 're:http://.*\.jpg', |             'thumbnail': 're:http://.*\.jpg', | ||||||
|         }, |         }, | ||||||
|         'add_ies': ['generic'], |         'add_ies': ['generic'], | ||||||
|     }, |     }, { | ||||||
|     { |  | ||||||
|         'url': 'http://www.sbs.com.au/ondemand/video/320403011771/Dingo-Conservation-The-Feed', |         'url': 'http://www.sbs.com.au/ondemand/video/320403011771/Dingo-Conservation-The-Feed', | ||||||
|         'only_matching': True, |         'only_matching': True, | ||||||
|     }] |     }] | ||||||
|   | |||||||
| @@ -16,8 +16,7 @@ class TeamcocoIE(InfoExtractor): | |||||||
|                 'title': 'Conan Becomes A Mary Kay Beauty Consultant', |                 'title': 'Conan Becomes A Mary Kay Beauty Consultant', | ||||||
|                 'description': 'Mary Kay is perhaps the most trusted name in female beauty, so of course Conan is a natural choice to sell their products.' |                 'description': 'Mary Kay is perhaps the most trusted name in female beauty, so of course Conan is a natural choice to sell their products.' | ||||||
|             } |             } | ||||||
|     }, |         }, { | ||||||
|     { |  | ||||||
|             'url': 'http://teamcoco.com/video/louis-ck-interview-george-w-bush', |             'url': 'http://teamcoco.com/video/louis-ck-interview-george-w-bush', | ||||||
|             'file': '19705.mp4', |             'file': '19705.mp4', | ||||||
|             'md5': 'cde9ba0fa3506f5f017ce11ead928f9a', |             'md5': 'cde9ba0fa3506f5f017ce11ead928f9a', | ||||||
|   | |||||||
| @@ -175,7 +175,7 @@ class VKIE(InfoExtractor): | |||||||
|         upload_date = None |         upload_date = None | ||||||
|         mobj = re.search(r'id="mv_date_wrap".*?Added ([a-zA-Z]+ [0-9]+), ([0-9]+) at', info_page) |         mobj = re.search(r'id="mv_date_wrap".*?Added ([a-zA-Z]+ [0-9]+), ([0-9]+) at', info_page) | ||||||
|         if mobj is not None: |         if mobj is not None: | ||||||
|             x = mobj.group(1) + ' ' + mobj.group(2) |             mobj.group(1) + ' ' + mobj.group(2) | ||||||
|             upload_date = unified_strdate(mobj.group(1) + ' ' + mobj.group(2)) |             upload_date = unified_strdate(mobj.group(1) + ' ' + mobj.group(2)) | ||||||
|  |  | ||||||
|         formats = [{ |         formats = [{ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister