Как использовать индикатор прогресса zenity с cclive

Я пытался использовать индикатор прогресса zenity с cclive. Я пишу сценарий для загрузки файлов веб-видео и хочу увидеть ход загрузки.

Но когда я пытаюсь что-то вроде

$cclive <url> 2>&1 | zenity --progress

Но когда я запускаю командную строку, но это не похоже на работу. Любая идея о том, как я могу это сделать?

BR,

[Edit]

cclive имеют такой вид вывода:

cclive http://www.youtube.com/watch?v=youtubevideo

Checking ... .......... ..........done.
youtubevideo.flv 2.5M 75.8K/s 00:09:29 5% 

Так что я нужно отправить последнюю часть в sdout, но я не знаю как. И еще, что касается пульсаций, мы не можем видеть прогресс этой опции, и мне это действительно нужно ... Так что я не буду использовать пульсат для этого сценария.


считают, что вставка | zenity --progress после команд не будет работать.

Вы знаете, что он загружается только в конце загрузки.

Я пытаюсь использовать zenity с параметром --percentage, и я знаю лучший способ проверить состояние процесса.

В моем скрипте я знаю размер файла.

size_t=$theoretical_size_of file     # I don't know where are from you take FULL size     of your file. I know it in myself script.
size_r=`du -b /tmp/$filename`
perc=$[$size_t/$size_r*100] 

Где я должен написать zenity --progress --percentage=$perc

И я думаю, что это должен быть цикл, потому что du -b постоянно меняется ...

4
задан 3 February 2012 в 15:54

1 ответ

Я не знаю, как работает cclive, но для того, чтобы zenity отображал индикатор выполнения, нужно отправить проценты на стандартный вывод.

Вот пример:

# This works:
(for i in $(seq 0 3 100); do echo "$i"; sleep 0.1; done) | zenity --progress

# This doesn't:
(for i in $(seq 0 3 100); do echo "hi"; sleep 0.1; done) | zenity --progress

Если вы не можете договориться о cclive, вам придется согласиться на

zenity --progress --pulsate
<час>

Редактировать

]

Основываясь на комментариях, вот дополнительная информация. Я не могу дать вам точный ответ, так как, очевидно, cclive не работает на Маверике. Во всяком случае, я получаю ошибки только при попытке его использовать.

Первое, что вам нужно сделать, это заставить cclive напечатать процент где-нибудь. Я предполагаю, что файл журнала будет печатать такой процент, но я не могу проверить это. Затем вам нужно проанализировать этот вывод и отправить его в zenity. Вот пример (непроверенный, или курс) сценария:

#!/bin/bash

url="$1"
tmp="/tmp/cclive.log"

mkfifo "$tmp"
cclive --background --logfile="$tmp" "$url"
egrep '[0-9]+% 

Если вывод cclive имеет другой формат, просто отрегулируйте сценарий соответствующим образом. Если cclive не выгружает проценты в лог-файл, попробуйте изменить команду cclive на:

cclive "$url" > "$tmp" &

И последнее: вам, вероятно, не следует отправлять stderr из stdout (2>&1). Zenity будет использовать стандартный вывод, но вы, вероятно, не хотите, чтобы он принимал все сообщения об ошибках.

Редактировать 2

Возможно, вам придется добавить awk где-нибудь в конвейере, чтобы вы могли выделить процент. Основной синтаксис:

awk '{print $1}' # change $1 to the correct space-separated field

При тестировании я не мог заставить его работать правильно, но так как я не могу заставить cclive работать, я не могу действительно устранить его.

< "$tmp" | zenity --progress rm "$tmp"

Если вывод cclive имеет другой формат, просто отрегулируйте сценарий соответствующим образом. Если cclive не выгружает проценты в лог-файл, попробуйте изменить команду cclive на:

cclive "$url" > "$tmp" &

И последнее: вам, вероятно, не следует отправлять stderr из stdout (2>&1). Zenity будет использовать стандартный вывод, но вы, вероятно, не хотите, чтобы он принимал все сообщения об ошибках.

Редактировать 2

Возможно, вам придется добавить awk где-нибудь в конвейере, чтобы вы могли выделить процент. Основной синтаксис:

awk '{print $1}' # change $1 to the correct space-separated field

При тестировании я не мог заставить его работать правильно, но так как я не могу заставить cclive работать, я не могу действительно устранить его.

0
ответ дан 3 February 2012 в 15:54

Другие вопросы по тегам:

Похожие вопросы: