diff options
Diffstat (limited to 'youtube_dl/downloader/fragment.py')
| -rw-r--r-- | youtube_dl/downloader/fragment.py | 19 | 
1 files changed, 12 insertions, 7 deletions
| 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'])) | 
