Alguém pode dar uma força com o Zenity (janela de progresso)

Iniciado por velox256, 09 de Junho de 2009, 22:15

tópico anterior - próximo tópico

velox256

Moçada, eu estava querendo botar uma janela de progresso nesse script de conversão de vídeo usando o Zenity mas confesso que sou um zero à esquerda em programação e scripts. Alguém pode dar uma força aí? O script é:

Citar#! /bin/sh
if [ "$2" = "" ]; then
   ffmpeg-amv -i "$1" -s 160x120 -r 16 -ac 1 -ar 22050 -qmin 3 -qmax 3 $1.amv
fi

Por exemplo, eu uso o script abaixo para converter mp3 pra wma e esse tem janela de progresso:

Citar#!/bin/bash

for i in *.mp3
do o=`basename "$i" .mp3`
ffmpeg -y -i "$i" -acodec wmav2 "$o".wma 2>&1 | zenity --progress --pulsate --title="Convertendo" --text="$o" --auto-close
done

Eu tentei juntar os dois mas num rodou, hehehehe... Alguma ajuda aí?
Computador perereca, com disco perereca, monitor perereca e sistema super xuxu. Visitem a minha página em http://sidserra.k6.com.br ou meu blog em http://sidserra.blogspot.com.br.

clcampos

Acho que o comando esta certo. Veja aqui onde também uso.

Só tem uma coisa, para tarefas rápidas ele realmente não vai aparecer.
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

raidicar

#! /bin/sh
if [ "$2" = "" ]; then
   ffmpeg-amv -i "$1" -s 160x120 -r 16 -ac 1 -ar 22050 -qmin 3 -qmax 3 $1.amv 2>&1 | zenity --progress --pulsate --title="Convertendo" --text="$o" --auto-close
fi

Nao vejo por que nao funcionar, se a tarefa e executada muito rapido, tira o --auto-close para ver a janela.
Ou voce quer outro tipo de barra de progresso?
Quem ama extremamente, deixa de viver em si e vive no que ama. Na vida três coisas são certas, o amor, a morte e o Linux !
Se Platão disse, então realmente sofremos de uma perigosa doença mental.

velox256

Legal, funcionou, não estava aparecendo a janela e nem convertendo pq ficaram faltando dois caracteres, hehehehe... Mas não dava pra fazer uma janela de progresso mais incrementada, tipo mostrando a evolução da tarefa? Só de ficar naquele vai e vem já valeu, mas se fosse possível um indicador de progresso poderia dar uma noção de qto tempo a tarefa duraria. O --percentage não serve pq ele só serve pra mostrar a barra de progresso fixa de determinado tamanho inicial.

Mas já valeu o que está mostrado aqui, valeu!



Citação de: raidicar online 10 de Junho de 2009, 00:21
#! /bin/sh
if [ "$2" = "" ]; then
   ffmpeg-amv -i "$1" -s 160x120 -r 16 -ac 1 -ar 22050 -qmin 3 -qmax 3 $1.amv 2>&1 | zenity --progress --pulsate --title="Convertendo" --text="$o" --auto-close
fi

Nao vejo por que nao funcionar, se a tarefa e executada muito rapido, tira o --auto-close para ver a janela.
Ou voce quer outro tipo de barra de progresso?

Computador perereca, com disco perereca, monitor perereca e sistema super xuxu. Visitem a minha página em http://sidserra.k6.com.br ou meu blog em http://sidserra.blogspot.com.br.

raidicar

#4
Não seria somente a barra de progresso, sem nenhum adereço? ou seja, apenas sem o complemento --pulsate?
zenity --progress --title="Convertendo" --text="$o" --auto-close
Ou eu entendi errado?
Quem ama extremamente, deixa de viver em si e vive no que ama. Na vida três coisas são certas, o amor, a morte e o Linux !
Se Platão disse, então realmente sofremos de uma perigosa doença mental.

velox256

Não é isso, eu quero a janela de progresso, mas esse do zenity em modo --pulsate a barra só fica pra lá e pra cá, sem dar uma noção de tempo do progresso da conversão. Por exemplo, vc sabe a quantas anda o carregamento do sistema qdo aparece aquela barra de progresso do Ubuntu, certo? Ou qdo se está baixando alguma coisa, a janela de progresso do download vai sendo completada de acordo com o passar do download, ou seja, uma barra vai se 'iluminando' do início até o fim de acordo com o andamento do download, dando uma noção de tempo de qto tempo falta pra terminar a tarefa; em vez de barra de progresso, poderia ser algo mostrando em porcentagem também, é isso que eu quero.


Citação de: raidicar online 10 de Junho de 2009, 22:20
Não seria somente a barra de progresso, sem nenhum adereço? ou seja, apenas sem o complemento --pulsate?
zenity --progress --title="Convertendo" --text="$o" --auto-close
Ou eu entendi errado?
Computador perereca, com disco perereca, monitor perereca e sistema super xuxu. Visitem a minha página em http://sidserra.k6.com.br ou meu blog em http://sidserra.blogspot.com.br.

Gunfree

É porque você não está indicando o progresso ao zenity, use o --percentage=0 (para iniciar em 0%)
Linux Registered User: #491793

velox256

Já fiz isso e o máximo que esse parâmetro faz é colocar uma barra de progresso já "iluminada" mas que não acompanha a evolução da tarefa, ou seja, se eu colocar em 20% (--percentage=20), a janela com a barra de progresso vai aparecer com o tamanho fixo inicial de 20% e não progride, permanece nos mesmos 20% ao final da tarefa.


Citação de: Gunfree online 11 de Junho de 2009, 03:15
É porque você não está indicando o progresso ao zenity, use o --percentage=0 (para iniciar em 0%)
Computador perereca, com disco perereca, monitor perereca e sistema super xuxu. Visitem a minha página em http://sidserra.k6.com.br ou meu blog em http://sidserra.blogspot.com.br.

Gunfree

Eu fiz um teste simples e consegui fazer a barra rodar com o progress.
Roda aí e veja se é o que você deseja.
$ for i in 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100; do echo $i; echo "# $i%"; sleep 1; done | zenity --progress --title='Progresso'

Se for, basta adaptar pro que você quer.

Linux Registered User: #491793

velox256

Eu "melhorei" o script, mas ainda não consegui fazer uma barra de progressos mostrando a qtas anda REALMENTE o trabalho de conversão:

Citar#! /bin/sh
cropesq=$(zenity --entry --text "Digite o valor do crop esquerdo"); echo $cropesq
cropdir=$(zenity --entry --text "Digite o valor do crop direito"); echo $cropdir
resol=$(zenity --entry --text "Digite o valor da resolução desejada" --entry-text "160x120"); echo $resol
quad=$(zenity --entry --text "Digite o valor do FPS do vídeo de saída" --entry-text "16"); echo $quad
if [ "$2" = "" ]; then
   ffmpeg-amv -i "$1" -croptop 0 -cropbottom 0 -cropleft $cropesq -cropright $cropdir -s $resol -r $quad -ac 1 -ar 22050 -qmin 3 -qmax 3 $1.amv 2>&1 | zenity --progress --pulsate --title="Convertendo" --text="$1" --auto-close
fi

Pelo que eu li, tenho que "ecoar" alguma coisa, vou continuar pesquisando...
Computador perereca, com disco perereca, monitor perereca e sistema super xuxu. Visitem a minha página em http://sidserra.k6.com.br ou meu blog em http://sidserra.blogspot.com.br.

Gunfree

Exatamente. Que tal cuspir pro zenity (dentro do for), o andamento do tamanho do arquivo? Acho que se você conseguir fazer isso, resolveria.

[]'s
Linux Registered User: #491793