LINUX.ORG.RU

цикл, wget и yad

 , ,


0

1

Нужно чтоб по циклу качались файлы и двигался прогресс бар

url[0]="http://.../....mp4"
file[0]="0.mp4"
url[1]="http://.../....mp4"
file[1]="1.mp4"
url[2]="http://.../....mp4"
file[2]="2.mp4"
counts=10
for ((i=counts; i > 0 ; i--)); do
	echo "Download ${file[$i]}"
	wget "${url[$i]}" -cqO "${file[$i]}"
	div=$(($i % $counts));
	if [ "$div" = "0" ]; then res="0"
	else res=$(( (100 / ($div+1)) * 2 )); fi
	echo $res"%"
done | yad --progress --width=500 --height=50 --text="..." --auto-close --sticky --center

Конечно алгоритм по которому двигается прогресс бар не верный, но более похож на верный ))) вообщем нужна помощь в нем

P.S. Как изменять текст в yad'е из цикла? Например чтоб передавалось название файла?

. Как изменять текст в yad'е из цикла?

объяви и инициализируй переменную, например, TEXT, a потом подставляй там где нужно «$TEXT».

hope13 ★★★
()
Ответ на: комментарий от hope13
for ((i=counts; i > 0 ; i--)); do
	TEXT=${file[$i]}
done | yad --progress --width=500 --height=50 --text="$TEXT" --auto-close --sticky --center

Если вы имели в виду таким образом, то это я первым делом пробовал, передается только название первого файла

dog_roulis
() автор топика
Ответ на: комментарий от leader32

Но ведь тогда и yad будет запускаться по циклу и либо yad запуститься несколько раз, либо цикл не будет продолжаться пока не закрыть yad окно

dog_roulis
() автор топика
Ответ на: комментарий от dog_roulis

логично. С yad не работал, но может, там есть какой-то режим демона, который будет получать входные данные, и выводить их? Всё, я не в треде :)

leader32
()

алгоритм по которому двигается прогресс бар не верный, но более похож на верный ))) вообщем нужна помощь в нем

Какая помощь? Значения то он выводит. Хотя я бы написал иначе. Я не знаю как работает yad, но проценты классно выводить таким вот однострочником:

echo -n "percents -    "; for i in {1..100}; do sleep 0.2; echo -ne '\e[4D'; printf "% 3d%%" $i; done; echo

По аналогии можешь покурить escape-последовательности и не переводить строку каждый раз.

Я бы сделал так: 1. Формируешь список файлов. 2. Цикл: качаем каждый файл, попутно инкрементируя значение переменной, которую потом выводим в виде прогрессбара\процентов. 3. ????? 4. PROFIT!

alozovskoy ★★★★★
()
Ответ на: комментарий от alozovskoy

Что-то вообще не то что нужно )

Давольно долго всегда пользовался этим алгаритмом, и все устраивало

for i in `seq 0 $counts`; do
  echo $((100 * $i / $counts))"%"
done

Но в данном случае у меня цикл не с возрастанием, а наоборот с уменьшением

for ((i=counts; i > 0 ; i--)); do
  echo ???"%"
done

dog_roulis
() автор топика

хочешь текст в прогрессбаре - пуляй его на вход с решеткой вначале, типа echo «#$TEXT». а в последних версиях я еще и --enable-log добавил, в дополнение к прогрессбару еще и текстовое окно со всеми сообщениями

ananas ★★★★★
()
Ответ на: комментарий от ananas
yad --version
0.22.1

«#$TEXT» в сам прогресс бар добавляется, ну в смысле за место процентов показывается текст

dog_roulis
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.