#!/usr/bin/env python
# -*- coding: utf-8 -*-
-from __future__ import with_statement
-from __future__ import absolute_import
-
__authors__ = (
'Ricardo Garcia Gonzalez',
'Danny Colligan',
from .update import update_self
from .version import __version__
from .FileDownloader import *
-from .InfoExtractors import gen_extractors
+from .extractor import gen_extractors
+from .YoutubeDL import YoutubeDL
from .PostProcessor import *
def parseOpts(overrideArguments=None):
action='store_true', dest='writesubtitles',
help='write subtitle file (currently youtube only)', default=False)
video_format.add_option('--only-sub',
- action='store_true', dest='onlysubtitles',
- help='downloads only the subtitles (no video)', default=False)
+ action='store_true', dest='skip_download',
+ help='[deprecated] alias of --skip-download', default=False)
video_format.add_option('--all-subs',
action='store_true', dest='allsubtitles',
help='downloads all the available subtitles of the video (currently youtube only)', default=False)
action='store_true', dest='listsubtitles',
help='lists all available subtitles for the video (currently youtube only)', default=False)
video_format.add_option('--sub-format',
- action='store', dest='subtitlesformat', metavar='LANG',
+ action='store', dest='subtitlesformat', metavar='FORMAT',
help='subtitle format [srt/sbv] (default=srt) (currently youtube only)', default='srt')
video_format.add_option('--sub-lang', '--srt-lang',
action='store', dest='subtitleslang', metavar='LANG',
# General configuration
cookie_processor = compat_urllib_request.HTTPCookieProcessor(jar)
- if opts.proxy:
- proxies = {'http': opts.proxy, 'https': opts.proxy}
+ if opts.proxy is not None:
+ if opts.proxy == '':
+ proxies = {}
+ else:
+ proxies = {'http': opts.proxy, 'https': opts.proxy}
else:
proxies = compat_urllib_request.getproxies()
# Set HTTPS proxy to HTTP one if given (https://github.com/rg3/youtube-dl/issues/805)
if opts.usenetrc and (opts.username is not None or opts.password is not None):
parser.error(u'using .netrc conflicts with giving username/password')
if opts.password is not None and opts.username is None:
- parser.error(u'account username missing')
+ print(u'WARNING: account username missing')
if opts.outtmpl is not None and (opts.usetitle or opts.autonumber or opts.useid):
parser.error(u'using output template conflicts with using title, video ID or auto number')
if opts.usetitle and opts.useid:
or (opts.autonumber and u'%(autonumber)s-%(id)s.%(ext)s')
or u'%(title)s-%(id)s.%(ext)s')
- # File downloader
- fd = FileDownloader({
+ # YoutubeDL
+ ydl = YoutubeDL({
'usenetrc': opts.usenetrc,
'username': opts.username,
'password': opts.password,
'writeinfojson': opts.writeinfojson,
'writethumbnail': opts.writethumbnail,
'writesubtitles': opts.writesubtitles,
- 'onlysubtitles': opts.onlysubtitles,
'allsubtitles': opts.allsubtitles,
'listsubtitles': opts.listsubtitles,
'subtitlesformat': opts.subtitlesformat,
})
if opts.verbose:
- fd.to_screen(u'[debug] youtube-dl version ' + __version__)
+ ydl.to_screen(u'[debug] youtube-dl version ' + __version__)
try:
sp = subprocess.Popen(['git', 'rev-parse', '--short', 'HEAD'], stdout=subprocess.PIPE, stderr=subprocess.PIPE,
cwd=os.path.dirname(os.path.abspath(__file__)))
out, err = sp.communicate()
out = out.decode().strip()
if re.match('[0-9a-f]+', out):
- fd.to_screen(u'[debug] Git HEAD: ' + out)
+ ydl.to_screen(u'[debug] Git HEAD: ' + out)
except:
pass
- fd.to_screen(u'[debug] Python version %s - %s' %(platform.python_version(), platform.platform()))
- fd.to_screen(u'[debug] Proxy map: ' + str(proxy_handler.proxies))
+ ydl.to_screen(u'[debug] Python version %s - %s' %(platform.python_version(), platform.platform()))
+ ydl.to_screen(u'[debug] Proxy map: ' + str(proxy_handler.proxies))
for extractor in extractors:
- fd.add_info_extractor(extractor)
+ ydl.add_info_extractor(extractor)
# PostProcessors
if opts.extractaudio:
- fd.add_post_processor(FFmpegExtractAudioPP(preferredcodec=opts.audioformat, preferredquality=opts.audioquality, nopostoverwrites=opts.nopostoverwrites))
+ ydl.add_post_processor(FFmpegExtractAudioPP(preferredcodec=opts.audioformat, preferredquality=opts.audioquality, nopostoverwrites=opts.nopostoverwrites))
if opts.recodevideo:
- fd.add_post_processor(FFmpegVideoConvertor(preferedformat=opts.recodevideo))
+ ydl.add_post_processor(FFmpegVideoConvertor(preferedformat=opts.recodevideo))
# Update version
if opts.update_self:
- update_self(fd.to_screen, opts.verbose, sys.argv[0])
+ update_self(ydl.to_screen, opts.verbose, sys.argv[0])
# Maybe do nothing
if len(all_urls) < 1:
sys.exit()
try:
- retcode = fd.download(all_urls)
+ retcode = ydl.download(all_urls)
except MaxDownloadsReached:
- fd.to_screen(u'--max-download limit reached, aborting.')
+ ydl.to_screen(u'--max-download limit reached, aborting.')
retcode = 101
# Dump cookie jar if requested