ループ内で tqdm を適切にネストする方法がわかりません。xmlrpc インターフェイスを介して aria2 ダウンロードの進行状況を取得しようとしています。tqdm は進行状況を読み取ることができますが、更新のたびにそれを新しい行に配置するため、端末にスパムが送信されます。コードは次のとおりです。
s = xmlrpc.client.ServerProxy("http://localhost:6800/rpc")
r = s.aria2.addUri(["http://ipv4.download.thinkbroadband.com/100MB.zip"],
{"dir": "/Downloads/ariatest"})
while True:
globalstat = s.aria2.getGlobalStat()
activeglobal = int(globalstat['numActive'])
activeconnections = s.aria2.tellActive()
if activeglobal > 0:
totalLength = int(activeconnections[0]['totalLength'])
completedLength = int(activeconnections[0]['completedLength'])
with tqdm(total=totalLength, unit='B', unit_scale=True, unit_divisor=1024, leave=True) as pbar:
pbar.update(completedLength)
time.sleep(0.1)
else:
print('all done')
break
そしてそれが与えるものは次のとおりです:
26%|██▌ | 6.38M/25.0M [00:00<00:00, 890GB/s]
26%|██▌ | 6.42M/25.0M [00:00<00:00, 843GB/s]
26%|██▌ | 6.46M/25.0M [00:00<00:00, 874GB/s]
26%|██▌ | 6.48M/25.0M [00:00<00:00, 877GB/s]
26%|██▌ | 6.51M/25.0M [00:00<00:00, 597GB/s]
26%|██▌ | 6.54M/25.0M [00:00<00:00, 654GB/s]
26%|██▋ | 6.58M/25.0M [00:00<00:00, 839GB/s]
26%|██▋ | 6.62M/25.0M [00:00<00:00, 963GB/s]
27%|██▋ | 6.67M/25.0M [00:00<00:00, 931GB/s]
今のところ、最初の aria2 ダウンロード、つまり activeconnections[0] を使用していますが、最終的には、xmlrpc 応答リストにあるダウンロードごとにプログレスバーを生成することが目標です。
本当にありがとう。