aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/downloader
diff options
context:
space:
mode:
authorPhilipp Hagemeister <phihag@phihag.de>2015-01-24 13:33:45 +0100
committerPhilipp Hagemeister <phihag@phihag.de>2015-01-24 13:33:45 +0100
commit384b62028a4c3c35727d714ccfc9944a36934069 (patch)
tree76006b906a04a54e0d076e1feb47188f64c281f3 /youtube_dl/downloader
parentb95aab8482881e8b1f7fba856da816a2dbc50d0f (diff)
[downloader/external] Add curl and aria2c (Closes #182)
Diffstat (limited to 'youtube_dl/downloader')
-rw-r--r--youtube_dl/downloader/external.py27
1 files changed, 25 insertions, 2 deletions
diff --git a/youtube_dl/downloader/external.py b/youtube_dl/downloader/external.py
index c05596255..7ebe40096 100644
--- a/youtube_dl/downloader/external.py
+++ b/youtube_dl/downloader/external.py
@@ -97,13 +97,22 @@ class ExternalFD(FileDownloader):
self._debug_cmd(cmd, subprocess_encoding)
p = subprocess.Popen(
- cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- stdout, stderr = p.communicate()
+ cmd, stderr=subprocess.PIPE)
+ _, stderr = p.communicate()
if p.returncode != 0:
self.to_stderr(stderr)
return p.returncode
+class CurlFD(ExternalFD):
+ def _make_cmd(self, tmpfilename, info_dict):
+ cmd = [self.exe, '-o', tmpfilename]
+ for key, val in self._calc_headers(info_dict).items():
+ cmd += ['--header', '%s: %s' % (key, val)]
+ cmd += ['--', info_dict['url']]
+ return cmd
+
+
class WgetFD(ExternalFD):
def _make_cmd(self, tmpfilename, info_dict):
cmd = [self.exe, '-O', tmpfilename, '-nv', '--no-cookies']
@@ -113,6 +122,20 @@ class WgetFD(ExternalFD):
return cmd
+class Aria2cFD(ExternalFD):
+ def _make_cmd(self, tmpfilename, info_dict):
+ cmd = [
+ self.exe, '-c',
+ '--min-split-size', '1M', '--max-connection-per-server', '4']
+ dn = os.path.dirname(tmpfilename)
+ if dn:
+ cmd += ['--dir', dn]
+ cmd += ['--out', os.path.basename(tmpfilename)]
+ for key, val in self._calc_headers(info_dict).items():
+ cmd += ['--header', '%s: %s' % (key, val)]
+ cmd += ['--', info_dict['url']]
+ return cmd
+
_BY_NAME = dict(
(klass.get_basename(), klass)
for name, klass in globals().items()