我正在尝试为我的更新脚本添加一个下载栏,但我无法完成如何执行此操作。奇怪的是,目前在调试过程中存在下载栏:
https://github.com/JMSwag/PyUpdater/blob/master/pyupdater/client/downloader.py
DEBUG:pyupdater.client.downloader:{'total': 11128343, 'downloaded': 16385, 'status': 'downloading', 'percent_complete': '0.1', 'time': '05:36'}
DEBUG:pyupdater.client.downloader:Block size: 43553
DEBUG:pyupdater.client.downloader:{'total': 11128343, 'downloaded': 49153, 'status': 'downloading', 'percent_complete': '0.4', 'time': '04:42'}
DEBUG:pyupdater.client.downloader:Block size: 43515
我已经查看了他们的downloader.py并尝试创建各种进度条。关于如何实现这一点的任何想法? 目前显示一个栏(已完成),但没有进度条显示它必须走多长时间。
def check_for_update():
bar = progressbar.ProgressBar()
for i in bar(range(100)):
time.sleep(0.0)
def cb(status):
zz = status['downloaded'] * 100.0 / status['total']
zz = bar.update(status.the_dwad)
print(zz)
import os
import sys
from contextlib import contextmanager
import sys
import os
stdout_save = sys.stdout
sys.stdout = open(os.devnull, 'w')
client = Client(ClientConfig(), refresh=True, progress_hooks=[cb], headers={'basic_auth': 'brofewfefwefewef:EKAXsWkdt5H6yJEmtexN'})
似乎:def cb(status):没有被调用
如果需要复制here,我还会提供完整的脚本和其他信息
答案 0 :(得分:0)
代码几乎没有问题。
status.the_dwad
以下是我运行的代码
import urllib3.poolmanager
orig_urlopen = urllib3.poolmanager.PoolManager.urlopen
def new_urlopen(self, method, url, redirect=True, **kw):
if "s3.amazonaws.com" in url and 'authorization' in self.headers:
self.headers.pop('authorization')
return orig_urlopen(self, method, url, redirect, **kw)
urllib3.poolmanager.PoolManager.urlopen = new_urlopen
import logging
# logging.basicConfig(level=logging.DEBUG)
import http.client as http_client
# http_client.HTTPConnection.debuglevel = 1
import logging
from selenium import webdriver
# logging.basicConfig(level=logging.DEBUG)
from client_config import ClientConfig
from pyupdater.client import Client, AppUpdate
import progressbar
import sys
bar = None
def check_for_update():
def cb(status):
global bar
if bar is None:
bar = progressbar.ProgressBar(widgets=[progressbar.Percentage(), progressbar.Bar()], fd=sys.stdout).start()
zz = float(status['percent_complete'])
bar.update(zz)
# sys.stdout = open(os.devnull, 'w')
client = Client(ClientConfig(), refresh=True,
headers={'basic_auth': 'brofewfefwefewef:EKAXsWkdt5H6yJEmtexN'})
client.platform = "win"
app_update = client.update_check(ClientConfig.APP_NAME, ClientConfig.APP_VERSION, channel='stable')
if app_update is not None:
app_update.progress_hooks.append(cb)
if app_update.download():
if isinstance(app_update, AppUpdate):
app_update.extract_restart()
return True
else:
app_update.extract()
return True
return False
def main():
print('Current version is ', ClientConfig.APP_VERSION)
if check_for_update():
print('there\'s a new update :D')
driver = webdriver.Firefox()
driver.get('https://www.youtube.com/')
if __name__ == "__main__":
main()