Portál AbcLinuxu, 12. května 2025 08:07

Dotaz: menici se vystup programu | grep

5.3.2006 21:42 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
menici se vystup programu | grep
Přečteno: 229×
Odpovědět | Admin
Zdravim

Potrebuju vystup programu oggenc rozparsovat a procenta ktery to ukazuje posilat do dalsiho prikazu.

Vystup z oggenc:
Otevírám pomocí modulu wav: WAV file reader
Kóduji "05 - Skladba  5.wav" do
       "05 - Skladba  5.ogg"
při kvalitě 3,00
        [ 14,9%] [ 0m20s zbývá] \
Meni se procenta a cas. Jedine co me zajima jsou procenta zaokrouhleny na cely cisla a potrebuju je poslat sem:

dcop kdialog-11289 ProgressDialog setProgress _procenta_

Zkousel jsem grep i 2> do pojmenovane roury a na ni pak pustit grep ale nejde nic.

O co se snazim je snad jasne, takze kdyby to slo i nejak, bylo by to prima. Cela tahle sranda je service-menu pro KDE. V soucasnosti nechavam spoustet "xterm -e oggenc file.wav", ale kamarad to chce jeste vice eye-candy.

Diky moc vsem.

Zdenek
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

6.3.2006 10:16 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: menici se vystup programu | grep
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkus si to poslat do souboru a pak snad pochopíš co máš dělat.
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
6.3.2006 11:23 alex
Rozbalit Rozbalit vše Re: menici se vystup programu | grep
Odpovědět | | Sbalit | Link | Blokovat | Admin
oggenc zvuk.wav 2>&1 | perl -0xD -ne 'print "$1\n" if /\[\s*(\d+)\.\d*%\]/'
6.3.2006 13:06 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
Rozbalit Rozbalit vše Re: menici se vystup programu | grep
Odpovědět | | Sbalit | Link | Blokovat | Admin
Perl bohuzel nepomohl, nenapsalo to nic, zkousel jsem s tim laborovat a zacal psat prazdne radky. Kdyby aspon ty procenta psal na nove radky, pak uz by to bylo jednoduchy.

Posilat do souboru jsem to zkousel, vysledek je tento:

oggenc wav.wav 2> oggout

Otevírám pomocí modulu wav: WAV file reader
Kóduji "05 - Skladba  5.wav" do
       "05 - Skladba  5.ogg"
při kvalitě 3,00
^      [  0,2%] [ 0m46s zbývá] |^    [  0,5%] [ 0m36s
zbývá] /^ [ 0,8%] [ 0m30s zbývá] -^ [ 1,1%
] [ .....
Je to zalomeny schvalne, jinak je to jeden radek.

Zkousel jsem to posilat do pojemnovane roury a catem cist ale vysledek byl identicky. Hrabat do zdrojaku oggencu se mi tedy ksutecne nechce, trivialni skript by byl vazanej na upravenej oggenc. Chtelo by to neco na prekodovani tech znaku aby to misto CR delalo CRLF.

Zdenek
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
6.3.2006 13:18 alex
Rozbalit Rozbalit vše Re: menici se vystup programu | grep
Omlouvam se, nevsiml jsem si, ze pouzivate ceskou locales, a proto u vas cisla maji carku, nikoliv tecku. Tento skript by mel vypisovat jenom procenta a fungovat jak s teckou, tak i s carkou.
oggenc zvuk.wav 2>&1 | perl -0xD -ne 'print "$1\n" if /\[\s*(\d+).*?%\]/'
6.3.2006 13:52 alex
Rozbalit Rozbalit vše Re: menici se vystup programu | grep
Asi nejlepsi cesta je pouzit standartni modul DCOP, ale slo by to osetrit i pomoci volani externiho programu dcop. Napriklad,
# skript v bash'e
DCOP="dcop kdialog-$pid ProgressDialog setProgress";
oggenc $soubor.wav 2>&1 | \
  perl -0xD -ne 'if(/\[\s*(\d+).*?%\]/)' \
             -e '{next if $old==$1;$old=$1;'"system(qq($DCOP \$1))}"
6.3.2006 14:40 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
Rozbalit Rozbalit vše Re: menici se vystup programu | grep
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dekuji milionkrat. Zkousel jsem v v prvnim perlovym pripade kterej nefungoval vyhodit if a to co je zanim a nechat jen 'print "$1\n"' ale to nejak nefungovalo, asi spatne perlim.

Jeste jednou diky, zrejme vyuziju i ten vylepsenej dcop, at to nemusej bejt dve vlakna.
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
6.3.2006 20:56 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
Rozbalit Rozbalit vše Re: menici se vystup programu | grep
Odpovědět | | Sbalit | Link | Blokovat | Admin
Takze takhle je to komplet...

#!/bin/bash

DIALOGPID=`kdialog --progressbar "Kóduji $1 do OGGu." | cut -d "(" -f 2 | cut -d "-" -f 2 | cut -d "," -f 1`

dcop kdialog-$DIALOGPID ProgressDialog setAutoClose true

DCOP="dcop kdialog-$DIALOGPID ProgressDialog setProgress"; oggenc $1 2>&1 | perl -0xD -ne 'if(/\[\s*(\d+).*?%\]/)' -e '{next if $old==$1;$old=$1;'"system(qq($DCOP \$1))}"

dcop kdialog-$DIALOGPID ProgressDialog close > /dev/null 2> /dev/null
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
6.3.2006 21:29 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
Rozbalit Rozbalit vše Re: menici se vystup programu | grep
fixed:

#!/bin/bash

DIALOGPID=`kdialog --progressbar "Kóduji $1 do OGGu." | cut -d "(" -f 2 | cut -d "-" -f 2 | cut -d "," -f 1`

DCOP="dcop kdialog-$DIALOGPID ProgressDialog setProgress"; oggenc -q 6 "$1" 2>&1 | perl -0xD -ne 'if(/\[\s*(\d+).*?%\]/)' -e '{next if $old==$1;$old=$1;'"system(qq($DCOP \$1))}"

dcop kdialog-$DIALOGPID ProgressDialog close > /dev/null 2> /dev/null
www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
6.3.2006 23:19 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše Re: menici se vystup programu | grep
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zjistit, cim detekovat jedno prekresleni oggenc indikatoru procent a pak neco na zpusob

( oggenc kandidatka.mp3.wav 2>&1 ) | ( while read -d ']' -a LN; do echo ${LN[2]} ; done; )

by mohlo pomoci?
-- OldFrog

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.