mirror of
https://gitlab.com/dstftw/youtube-dl.git
synced 2020-11-16 09:42:26 +00:00
Merge remote-tracking branch 'jtwaleson/master'
This commit is contained in:
commit
27f8b0994e
|
@ -142,7 +142,7 @@ def win_service_set_status(handle, status_code):
|
||||||
|
|
||||||
def win_service_main(service_name, real_main, argc, argv_raw):
|
def win_service_main(service_name, real_main, argc, argv_raw):
|
||||||
try:
|
try:
|
||||||
#args = [argv_raw[i].value for i in range(argc)]
|
# args = [argv_raw[i].value for i in range(argc)]
|
||||||
stop_event = threading.Event()
|
stop_event = threading.Event()
|
||||||
handler = HandlerEx(functools.partial(stop_event, win_service_handler))
|
handler = HandlerEx(functools.partial(stop_event, win_service_handler))
|
||||||
h = advapi32.RegisterServiceCtrlHandlerExW(service_name, handler, None)
|
h = advapi32.RegisterServiceCtrlHandlerExW(service_name, handler, None)
|
||||||
|
|
|
@ -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 = [{
|
||||||
|
|
Loading…
Reference in a new issue