Browse Source

Show percentage of DirectUnpack, when available

tags/2.2.0Alpha3
Safihre 8 years ago
parent
commit
4a21e7c217
  1. 4
      interfaces/Glitter/templates/static/javascripts/glitter.queue.js
  2. 25
      sabnzbd/directunpacker.py
  3. 4
      sabnzbd/nzbstuff.py

4
interfaces/Glitter/templates/static/javascripts/glitter.queue.js

@ -483,7 +483,7 @@ function QueueModel(parent, data) {
self.remainingMB = ko.observable(parseFloat(data.mbleft));
self.avg_age = ko.observable(data.avg_age)
self.missing = ko.observable(parseFloat(data.mbmissing))
self.direct_unpack = ko.observable(parseInt(data.direct_unpack))
self.direct_unpack = ko.observable(data.direct_unpack)
self.category = ko.observable(data.cat);
self.priority = ko.observable(parent.priorityName[data.priority]);
self.script = ko.observable(data.script);
@ -583,7 +583,7 @@ function QueueModel(parent, data) {
self.remainingMB(parseFloat(data.mbleft));
self.avg_age(data.avg_age)
self.missing(parseFloat(data.mbmissing))
self.direct_unpack(parseInt(data.direct_unpack))
self.direct_unpack(data.direct_unpack)
self.category(data.cat);
self.priority(parent.priorityName[data.priority]);
self.script(data.script);

25
sabnzbd/directunpacker.py

@ -59,6 +59,7 @@ class DirectUnpacker(threading.Thread):
self.unpack_dir_info = None
self.cur_setname = None
self.cur_volume = 0
self.total_volumes = {}
self.success_sets = []
self.next_sets = []
@ -86,18 +87,24 @@ class DirectUnpacker(threading.Thread):
return False
return True
def set_volumes_for_nzo(self):
""" Loop over all files to detect the names """
for nzf in self.nzo.files + self.nzo.finished_files:
filename = nzf.filename.lower()
nzf.setname, nzf.vol = analyze_rar_filename(filename)
if nzf.setname not in self.total_volumes:
self.total_volumes[nzf.setname] = 0
self.total_volumes[nzf.setname] += 1
def add(self, nzf):
""" Add jobs and start instance of DirectUnpack """
# Stop if something is wrong
if not self.check_requirements():
return
# Analyze the input
filename = nzf.filename.lower()
nzf.setname, nzf.vol = analyze_rar_filename(filename)
# Do we have a set yet?
if not self.cur_setname:
self.set_volumes_for_nzo()
self.cur_setname = nzf.setname
# Are we doing this set?
@ -194,7 +201,7 @@ class DirectUnpacker(threading.Thread):
# Send "Enter" to proceed, only 1 at a time via lock
CONCURRENT_LOCK.acquire()
self.active_instance.stdin.write('\n')
self.nzo.set_action_line(T('Unpacking'), '%02d' % self.cur_volume)
self.nzo.set_action_line(T('Unpacking'), self.get_formatted_stats())
logging.info('DirectUnpacked volume %s for %s', self.cur_volume, self.cur_setname)
if linebuf.endswith('\n'):
@ -286,6 +293,14 @@ class DirectUnpacker(threading.Thread):
# Reset settings
self.reset_active()
def get_formatted_stats(self):
""" Get percentage or number of rar's done """
if self.cur_setname and self.cur_setname in self.total_volumes:
# This won't work on obfuscated posts
if self.total_volumes[self.cur_setname] > self.cur_volume:
return '%.0f%%' % (100*float(self.cur_volume)/self.total_volumes[self.cur_setname])
return self.cur_volume
def analyze_rar_filename(filename):
""" Extract volume number and setname from rar-filenames

4
sabnzbd/nzbstuff.py

@ -972,9 +972,9 @@ class NzbObject(TryList):
head, vol, block = analyse_par2(name)
if head and matcher(lparset, head.lower()):
xnzf.set_par2(parset, vol, block)
self.extrapars[parset].append(xnzf)
# Don't postpone during pre-check or if all par2 should be kept
if not self.precheck and cfg.enable_par_cleanup():
self.extrapars[parset].append(xnzf)
self.files.remove(xnzf)
@synchronized(NZO_LOCK)
@ -1579,7 +1579,7 @@ class NzbObject(TryList):
self.status, self.priority,
len(self.nzo_info.get('missing_art_log', [])),
self.bytes_tried - self.bytes_downloaded,
self.direct_unpacker.cur_volume if self.direct_unpacker else 0)
self.direct_unpacker.get_formatted_stats() if self.direct_unpacker else 0)
def get_nzf_by_id(self, nzf_id):
if nzf_id in self.files_table:

Loading…
Cancel
Save