added progres reporting

This commit is contained in:
deezerdl 2017-05-29 10:00:16 +00:00 committed by GitHub
parent 12ca30db87
commit e6414d00fc

View File

@ -3,15 +3,18 @@ from __future__ import unicode_literals
from ..blowfish import blowfish_cbc_decrypt
from .common import FileDownloader
from ..utils import sanitized_Request
import time
def decryptfile(fh, key, fo):
def decryptfile(fh, key, fo, progress, data_len):
"""
Decrypt data from file <fh>, and write to file <fo>.
decrypt using blowfish with <key>.
Only every third 2048 byte block is encrypted.
"""
i = 0
byte_counter = 0
tstart = time.time()
while True:
data = fh.read(2048)
if not data:
@ -22,6 +25,16 @@ def decryptfile(fh, key, fo):
fo.write(data)
i += 1
byte_counter += len(data)
progress._hook_progress({
'status': 'downloading',
'downloaded_bytes': byte_counter,
'total_bytes': data_len,
'eta': progress.calc_eta(tstart, time.time(), data_len, byte_counter),
'speed': progress.calc_speed(tstart, time.time(), byte_counter),
})
class DeezerDownloader(FileDownloader):
def real_download(self, filename, info_dict):
@ -30,4 +43,4 @@ class DeezerDownloader(FileDownloader):
data = self.ydl.urlopen(request)
with open(filename, "wb") as fo:
decryptfile(data, info_dict['key'], fo)
decryptfile(data, info_dict['key'], fo, self, int(data.info().get('Content-length', 0)))