web-dev-qa-db-ja.com

ccliveでZenityプログレスバーを使用する方法

私はccliveでzenityプログレスバーを使用しようとしました。 Webビデオファイルをダウンロードするスクリプトを作成していますが、ダウンロードの進行状況を確認したいと思います。

しかし、私が何かをしようとすると

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

しかし、コマンドラインを実行しても動作しないようです。どうすればそれができるのでしょうか?

BR、

[編集]

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の貼り付けは機能しないと思います。

ダウンロードの最後にのみロードされることを知っています。

--percentageパラメーターでzenityを使用しようとしましたが、プロセスの状態をチェックする最良の方法を知っています。

私のスクリプトでは、ファイルのサイズを知っています。

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
Winael

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

編集

コメントに基づいて、ここに追加情報があります。 Maverickでccliveが破損しているようですので、正確な答えはできません。とにかく、使用しようとするとエラーが発生するだけです。

最初に行う必要があるのは、ccliveを取得して、どこかにパーセンテージを出力することです。私は、ログファイルがそのようなパーセンテージを印刷すると仮定していますが、それをテストすることはできません。次に、その出力を解析し、zenityに送信する必要があります。次に、サンプル(未テスト、またはコース)スクリプトを示します。

#!/bin/bash

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

mkfifo "$tmp"
cclive --background --logfile="$tmp" "$url"
egrep '[0-9]+%$' < "$tmp" | zenity --progress
rm "$tmp"

ccliveの出力の形式が異なる場合は、必要に応じてスクリプトを調整してください。 ccliveがログファイルにパーセンテージをダンプしない場合、ccliveコマンドを次のように変更してみてください。

cclive "$url" > "$tmp" &

最後に、stderrをstdout(2>&1)。 Zenityはstdoutを消費しますが、おそらくすべてのエラーメッセージを食べたくないでしょう。

編集2

パイプラインのどこかにawkをスローして、パーセンテージを分離する必要がある場合があります。基本的な構文は次のとおりです。

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

テストでは、正しく動作させることはできませんでしたが、ccliveを動作させることができないため、実際にトラブルシューティングすることはできません。

2
Scott Severance