def print_progress(): #the factor of width used for progress bar percent_bar_factor = 0.4 width = util.get_terminal_size()[1] - 5 bar_count = (int(width * percent_bar_factor) - 2 / 10 ) # number of percent bar #line = log.hl(u' %s\n'% ('-'*90), 'cyan') line = log.hl(u' %s\n' % ('+' * width), 'cyan') sep = log.hl(u' %s\n' % ('=' * width), 'cyan') sys.stdout.write(u'\x1b[2J\x1b[H') #clear screen sys.stdout.write(line) header = u' 保存目录:[%s] | 线程池:[%d]\n' % (config.DOWNLOAD_DIR, config.THREAD_POOL_SIZE) #header = util.ljust(header, width) sys.stdout.write(log.hl(u' %s' % header, 'warning')) sys.stdout.write(line) fmt_progress = '%s [%s] %.1f%%\n' all_p = [] #all progress bars, filled by following for loop sum_percent = 0 # total percent for running job total_percent = 0 for filename, percent in progress.items(): sum_percent += percent bar = util.ljust('=' * int(percent * bar_count), bar_count) per100 = percent * 100 single_p = fmt_progress % \ (util.rjust(filename,(width - bar_count -10)), bar, per100) # the -10 is for the xx.x% and [ and ] all_p.append(log.hl(single_p, 'green')) #calculate total progress percent total_percent = float(sum_percent + done) / total #global progress g_text = u'总进度[%d/%d]:' % (done, total) g_bar = util.ljust('#' * int(total_percent * bar_count), bar_count) g_progress = fmt_progress % \ (util.rjust(g_text,(width - bar_count -10)), g_bar, 100*total_percent) # the -10 is for the xx.x% and [ and ] #output all total progress bars sys.stdout.write(log.hl(u'%s' % g_progress, 'red')) sys.stdout.write(sep) #output all downloads' progress bars sys.stdout.write(''.join(all_p)) if len(done2show): sys.stdout.write(line) sys.stdout.write( log.hl(u' 最近%d个完成任务:\n' % config.SHOW_DONE_NUMBER, 'warning')) sys.stdout.write(line) #display finished jobs for d in done2show: sys.stdout.write(log.hl(u' √ %s\n' % d, 'cyan')) sys.stdout.flush()
def print_progress(): #the factor of width used for progress bar percent_bar_factor = 0.4 width = util.get_terminal_size()[1] -5 bar_count = (int(width*percent_bar_factor)-2/10) # number of percent bar #line = log.hl(u' %s\n'% ('-'*90), 'cyan') line = log.hl(u' %s\n'% ('+'*width), 'cyan') sep = log.hl(u' %s\n'% ('='*width), 'cyan') sys.stdout.write(u'\x1b[2J\x1b[H') #clear screen sys.stdout.write(line) header = msg.fmt_dl_header % (config.DOWNLOAD_DIR, config.THREAD_POOL_SIZE) #header = util.ljust(header, width) sys.stdout.write(log.hl(u' %s'%header,'warning')) sys.stdout.write(line) fmt_progress = '%s [%s] %.1f%%\n' all_p = [] #all progress bars, filled by following for loop sum_percent = 0 # total percent for running job total_percent = 0 for filename, percent in progress.items(): sum_percent += percent bar = util.ljust('=' * int(percent * bar_count), bar_count) per100 = percent * 100 single_p = fmt_progress % \ (util.rjust(filename,(width - bar_count -10)), bar, per100) # the -10 is for the xx.x% and [ and ] all_p.append(log.hl(single_p,'green')) #calculate total progress percent total_percent = float(sum_percent+done)/total #global progress g_text = msg.fmt_dl_progress % (done, total) g_bar = util.ljust('#' * int(total_percent* bar_count), bar_count) g_progress = fmt_progress % \ (util.rjust(g_text,(width - bar_count -10)), g_bar, 100*total_percent) # the -10 is for the xx.x% and [ and ] #output all total progress bars sys.stdout.write(log.hl(u'%s'%g_progress, 'red')) sys.stdout.write(sep) #output all downloads' progress bars sys.stdout.write(''.join(all_p)) if len(done2show): sys.stdout.write(line) sys.stdout.write(log.hl(msg.fmt_dl_last_finished % config.SHOW_DONE_NUMBER,'warning')) sys.stdout.write(line) #display finished jobs for d in done2show: sys.stdout.write(log.hl(u' √ %s\n'% d,'cyan')) sys.stdout.write(line) sys.stdout.flush()
def print_progress(): #the factor of width used for progress bar percent_bar_factor = 0.4 width = util.get_terminal_size()[1] -5 bar_count = (int(width*percent_bar_factor)-2/10) # number of percent bar #line = log.hl(u' %s\n'% ('-'*90), 'cyan') line = log.hl(u' %s\n'% ('+'*width), 'cyan') sys.stdout.write(u'\x1b[2J\x1b[H') #clear screen sys.stdout.write(line) header = u' 保存目录:[%s] | 线程池:[%d] | 总进度:[%d/%d]\n'% (config.DOWNLOAD_DIR, config.THREAD_POOL_SIZE,done,total) header = util.rjust(header, width) sys.stdout.write(log.hl(u' %s'%header,'warning')) sys.stdout.write(line) for filename, percent in progress.items(): bar = util.ljust('=' * int(percent * bar_count), bar_count) per100 = percent * 100 single_p = "%s [%s] %.1f%%\n" % \ (util.rjust(filename,(width - bar_count -10)), bar, per100) # the -10 is for the xx.x% and [ and ] sys.stdout.write(log.hl(single_p,'green')) if len(done2show): sys.stdout.write(line) sys.stdout.write(log.hl(util.rjust(u'最近完成(只显示%d个):\n'% config.SHOW_DONE_NUMBER, width),'warning')) sys.stdout.write(line) #display finished jobs for d in done2show: sys.stdout.write(log.hl(u' √ %s\n'% d,'cyan')) sys.stdout.flush()
def print_progress(): """ print progress info """ #the factor of width used for progress bar percent_bar_factor = 0.4 width = util.get_terminal_size()[1] -5 bar_count = (int(width*percent_bar_factor)-2/10) # number of percent bar #line = log.hl(u' %s\n'% ('-'*90), 'cyan') line = log.hl(u' %s\n'% ('+'*width), 'cyan') sep = log.hl(u' %s\n'% ('='*width), 'cyan') sys.stdout.write(u'\x1b[2J\x1b[H') #clear screen sys.stdout.write(line) header = msg.fmt_dl_header % (config.DOWNLOAD_DIR, config.THREAD_POOL_SIZE) #header = util.ljust(header, width) sys.stdout.write(log.hl(u' %s'%header,'warning')) sys.stdout.write(line) fmt_progress = '%s [%s] %.1f%% (%dkib/s)\n' all_p = [] #all progress bars, filled by following for loop sum_percent = 0 # total percent for running job sum_rate = 0 # total rate for running job total_percent = 0 for filename, prog_obj in progress.items(): percent = prog_obj.percent() rate = prog_obj.rate() #sum for the total progress sum_percent += percent sum_rate += rate bar = util.ljust('=' * int(percent * bar_count), bar_count) per100 = percent * 100 single_p = fmt_progress % \ (util.rjust(filename,(width - bar_count -22)), bar, per100,rate) # the -20 is for the xx.x% and [ and ] xx.xkb/s (spaces) all_p.append(log.hl(single_p,'green')) #calculate total progress percent total_percent = float(sum_percent+done)/total #global progress g_text = msg.fmt_dl_progress % (done, total) g_bar = util.ljust('#' * int(total_percent* bar_count), bar_count) g_progress = fmt_progress % \ (util.rjust(g_text,(width - bar_count -22)), g_bar, 100*total_percent,sum_rate) # the -20 is for the xx.x% and [ and ] xx.xkb/s (spaces) #output all total progress bars sys.stdout.write(log.hl(u'%s'%g_progress, 'red')) sys.stdout.write(sep) #output all downloads' progress bars sys.stdout.write(''.join(all_p)) # finished jobs if len(done2show): sys.stdout.write(line) sys.stdout.write(log.hl(msg.fmt_dl_last_finished % config.SHOW_DONE_NUMBER,'warning')) sys.stdout.write(line) #display finished jobs for d in done2show: sys.stdout.write(log.hl(u' √ %s\n'% d,'cyan')) #failed downloads if len(failed_list): sys.stdout.write(line) sys.stdout.write(log.hl(msg.fmt_dl_failed_jobs,'error')) sys.stdout.write(line) #display failed jobs for failed_song in failed_list: sys.stdout.write(log.hl(u' ✘ %s\n' % failed_song.filename,'red')) sys.stdout.write(line) sys.stdout.flush()
def print_progress(self): self.__update_status() def output(txt): sys.stdout.write(txt) width = util.get_terminal_size()[1] - 5 bar_count = (int(width * self.__class__.percent_bar_factor) - 2 / 10 ) # number of percent bar line = log.hl(u' %s\n' % ('+' * width), 'cyan') sep = log.hl(u' %s\n' % ('=' * width), 'cyan') output(u'\x1b[2J\x1b[H') #clear screen sys.stdout.write(line) header = fmt_dl_header % (self.title, self.pool_size) sys.stdout.write(log.hl(u' %s' % header, 'warning')) sys.stdout.write(line) all_p = [] #all progress bars, filled by following for loop sum_percent = 0 # total percent for running job sum_rate = 0 # total rate for running job total_percent = 0 for job in [j for j in self.jobs if j.status == JobStatus.Running]: prog_obj = job.progress percent = prog_obj.percent() #sum for the total progress sum_percent += percent bar = util.ljust('=' * int(percent * bar_count), bar_count) per100 = percent * 100 single_p = fmt_progress % \ (util.rjust(prog_obj.name,(width - bar_count)-32), bar, per100) # the -20 is for the xx.x% and [ and ] xx.xkb/s (spaces) all_p.append(log.hl(single_p, 'green')) #calculate total progress percent total_percent = float(sum_percent + self.done) / self.total #global progress g_text = fmt_dl_progress % (self.done, self.total) g_bar = util.ljust('#' * int(total_percent * bar_count), bar_count) g_progress = fmt_progress % \ (util.rjust(g_text,(width - bar_count - 32)), g_bar, 100*total_percent) # the -20 is for the xx.x% and [ and ] xx.xkb/s (spaces) #output all total progress bars sys.stdout.write(log.hl(u'%s' % g_progress, 'red')) sys.stdout.write(sep) #output all downloads' progress bars sys.stdout.write(''.join(all_p)) # finished jobs if len(self.done2show): sys.stdout.write(line) sys.stdout.write( log.hl(fmt_dl_last_finished % SHOW_DONE_NUMBER, 'warning')) sys.stdout.write(line) #display finished jobs for job in self.done2show: sys.stdout.write(log.hl(u' √ %s\n' % job.name, 'cyan')) #failed downloads if len(self.failed_list): sys.stdout.write(line) sys.stdout.write(log.hl(fmt_dl_failed_jobs, 'error')) sys.stdout.write(line) #display failed jobs for failed_job in self.failed_list: sys.stdout.write(log.hl(u' ✘ %s\n' % failed_job.name, 'red')) sys.stdout.write(line) sys.stdout.flush()