aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRemita Amine <remitamine@gmail.com>2017-04-19 18:34:25 +0100
committerRemita Amine <remitamine@gmail.com>2017-04-19 18:53:15 +0100
commitea0c2f219c219de8f59f1ae82e106cec5911c56c (patch)
tree60cbd2157a86c490a7055def050dffdd3155d285
parent481ef51e2345b1b34b16148eb6e5e58e9fb45cfb (diff)
downloadyoutube-dl-ea0c2f219c219de8f59f1ae82e106cec5911c56c.tar.xz
[downloader/fragment] use a general file to store fragment download context
-rw-r--r--youtube_dl/downloader/common.py3
-rw-r--r--youtube_dl/downloader/fragment.py19
2 files changed, 15 insertions, 7 deletions
diff --git a/youtube_dl/downloader/common.py b/youtube_dl/downloader/common.py
index fdb77b620..5d6621147 100644
--- a/youtube_dl/downloader/common.py
+++ b/youtube_dl/downloader/common.py
@@ -187,6 +187,9 @@ class FileDownloader(object):
return filename[:-len('.part')]
return filename
+ def ytdl_filename(self, filename):
+ return filename + '.ytdl'
+
def try_rename(self, old_filename, new_filename):
try:
if old_filename == new_filename:
diff --git a/youtube_dl/downloader/fragment.py b/youtube_dl/downloader/fragment.py
index 44a3c1040..80bb14d61 100644
--- a/youtube_dl/downloader/fragment.py
+++ b/youtube_dl/downloader/fragment.py
@@ -3,6 +3,7 @@ from __future__ import division, unicode_literals
import os
import time
import io
+import json
from .common import FileDownloader
from .http import HttpFD
@@ -63,8 +64,10 @@ class FragmentFD(FileDownloader):
def _append_fragment(self, ctx, frag_content):
ctx['dest_stream'].write(frag_content)
if not (ctx.get('live') or ctx['tmpfilename'] == '-'):
- frag_index_stream, _ = sanitize_open(ctx['tmpfilename'] + '.fragindex', 'w')
- frag_index_stream.write(compat_str(ctx['frag_index']))
+ frag_index_stream, _ = sanitize_open(self.ytdl_filename(ctx['filename']), 'w')
+ frag_index_stream.write(json.dumps({
+ 'frag_index': ctx['frag_index']
+ }))
frag_index_stream.close()
def _prepare_frag_download(self, ctx):
@@ -94,9 +97,10 @@ class FragmentFD(FileDownloader):
if os.path.isfile(encodeFilename(tmpfilename)):
open_mode = 'ab'
resume_len = os.path.getsize(encodeFilename(tmpfilename))
- if os.path.isfile(encodeFilename(tmpfilename + '.fragindex')):
- frag_index_stream, _ = sanitize_open(tmpfilename + '.fragindex', 'r')
- frag_index = int(frag_index_stream.read())
+ ytdl_filename = encodeFilename(self.ytdl_filename(ctx['filename']))
+ if os.path.isfile(ytdl_filename):
+ frag_index_stream, _ = sanitize_open(ytdl_filename, 'r')
+ frag_index = json.loads(frag_index_stream.read())['frag_index']
frag_index_stream.close()
dest_stream, tmpfilename = sanitize_open(tmpfilename, open_mode)
@@ -167,8 +171,9 @@ class FragmentFD(FileDownloader):
def _finish_frag_download(self, ctx):
ctx['dest_stream'].close()
- if os.path.isfile(encodeFilename(ctx['tmpfilename'] + '.fragindex')):
- os.remove(encodeFilename(ctx['tmpfilename'] + '.fragindex'))
+ ytdl_filename = encodeFilename(self.ytdl_filename(ctx['filename']))
+ if os.path.isfile(ytdl_filename):
+ os.remove(ytdl_filename)
elapsed = time.time() - ctx['started']
self.try_rename(ctx['tmpfilename'], ctx['filename'])
fsize = os.path.getsize(encodeFilename(ctx['filename']))