Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Ayuda script de bash
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Spanish
View previous topic :: View next topic  
Author Message
edgar_uriel84
Guru
Guru


Joined: 21 Dec 2008
Posts: 485
Location: Tultitlan, México

PostPosted: Sat Jan 19, 2013 5:10 am    Post subject: Ayuda script de bash Reply with quote

Hola, acabo de hacer un pequeño script de bash para grabar radio por internet (usando mplayer) que pienso agregarlo a cron para que funcione automáticamente. El problema que tengo es que el parámetro -endpos no funciona, cuando lo pruebo en consola directamente sirve bien, pero dentro del script no, lo que se de bash scripting es limitado, supongo que debo manejar un PID y terminarlo manualmente... leeré guías de bash pero si alguien sugiere o sabe una solución dejo el script:

Code:

#!/bin/bash

help() {
    echo "Script que sintoniza un streaming"
    echo "radio [OPCIONES]"
    echo "Opciones:"
    echo "-m <MODE>  Opciones: silent  - Graba todo el tiempo"
    echo "                     capture (default) - Comienza la grabación al teclear C"
    echo "                               y termina presionando C nuevamente. OJO:"
    echo "                               ¡PRESIONAR NUEVAMENTE REESCRIBIRÁ EL ARCHIVO!"
    echo "-t <TIME>  Tiempo de duración de la ejecución. Dado en segundos"
    echo "           Valores clave: 1[m]=6[s] 1[h]=3600[s]"
    echo "           Convertir HH:MM:SS a seg en Bash:"
    echo '           echo $(($(date -ud "HH:MM:SS" +%s)%86400))'
    echo "-f <FILE>  Archivo donde se guardará la grabación. El formato será:"
    echo "           <FILE>-YYYYMMDD-HHMMSS"
    echo "-s <URL>   Estación a sintonizar, default: http://74.86.83.83:8130 (Opus IMER 94.5)"
    exit 0
}
set_mode() {
    if [[ $MODE = "silent" ]]
    then
   OPTIONS="-dumpstream"
    elif [[ $MODE = "capture" || -z $MODE ]]
    then
   OPTIONS="-capture"
    else
   help
    fi
}
# TODO: Aceptar valores HH:MM:SS
set_time() {
    if [[ -z $TIME ]]
    then
   OPTIONS="$OPTIONS"
    elif [[ $TIME -gt 0 ]]
    then
       OPTIONS="$OPTIONS -endpos $TIME"
    else
   help
    fi
}
# Begin Script
PLAYER=mplayer2
STATION=http://74.86.83.83:8130
FILE=Opus
if [[ $1 == "-h" ]]; then
    help
else
    while getopts m:t:s:f: option
    do
   case "${option}"
            in
            m) MODE=${OPTARG} ;;
            t) TIME=${OPTARG} ;;
            s) STATION=${OPTARG} ;;
       f) FILE=${OPTARG} ;;
   esac
    done
    set_mode
    set_time
    FILE_NAME=$HOME/Desktop/$FILE-`date +%Y%m%d-%H%M%S`
    DEFAULT_OPTS="-dumpfile ${FILE_NAME} $STATION"
    # echo $PLAYER $OPTIONS $DEFAULT_OPTS #Ver que comando se ejecuta
    exec $PLAYER $OPTIONS $DEFAULT_OPTS
    exit 0
fi
# End Script


Para aquellos que si saben escribir scripts, una disculpa por el uso indiscriminado de sentencias if, prometo cambiarlas un día a switch o algo más bonito.

Gracias de antemano
_________________
Algún día habrá una persona mejor que yo, pero esa persona no eres tú ni ese momento es ahora.
Back to top
View user's profile Send private message
opotonil
l33t
l33t


Joined: 17 Jun 2005
Posts: 801
Location: 127.0.0.1

PostPosted: Sat Jan 19, 2013 7:02 pm    Post subject: Reply with quote

Creo que no es problema del script, sino de mplayer:
Quote:

Complaints/Known Bugs

some complaints/known bugs about mplayer and mencoder

-oac mp3lame -lameopts abr/vbr causes desync in videos
-dumpstream and -endpos or -frames dont work together
cant save/encode video and play at the same time with one mplayer/mencoder instance
playlists require -playlist switch (mplayer should detect playlists!)
cant edit gui.conf while gmplayer is running
opening multiple files causes multiple gmplayer/mplayer instancess
-cache affects -ss accuracy

http://wiki.multimedia.cx/index.php?title=MPlayer_FAQ#Complaints.2FKnown_Bugs

Aqui lo solucionan matando el proceso tras un "sleep":
http://lists.mplayerhq.hu/pipermail/mplayer-users/2012-November/085628.html

Salu2.
_________________
Localnet
Films Localnet
Back to top
View user's profile Send private message
Arctic
Apprentice
Apprentice


Joined: 04 Jul 2011
Posts: 207

PostPosted: Mon Jan 21, 2013 2:26 am    Post subject: Re: Ayuda script de bash Reply with quote

edgar_uriel84 wrote:
Hola, acabo de hacer un pequeño script de bash para grabar radio por internet (usando mplayer) que pienso agregarlo a cron para que funcione automáticamente. El problema que tengo es que el parámetro -endpos no funciona, cuando lo pruebo en consola directamente sirve bien, pero dentro del script no, lo que se de bash scripting es limitado, supongo que debo manejar un PID y terminarlo manualmente... leeré guías de bash pero si alguien sugiere o sabe una solución dejo el script:

Code:

#!/bin/bash

help() {
    echo "Script que sintoniza un streaming"
    echo "radio [OPCIONES]"
    echo "Opciones:"
    echo "-m <MODE>  Opciones: silent  - Graba todo el tiempo"
    echo "                     capture (default) - Comienza la grabación al teclear C"
    echo "                               y termina presionando C nuevamente. OJO:"
    echo "                               ¡PRESIONAR NUEVAMENTE REESCRIBIRÁ EL ARCHIVO!"
    echo "-t <TIME>  Tiempo de duración de la ejecución. Dado en segundos"
    echo "           Valores clave: 1[m]=6[s] 1[h]=3600[s]"
    echo "           Convertir HH:MM:SS a seg en Bash:"
    echo '           echo $(($(date -ud "HH:MM:SS" +%s)%86400))'
    echo "-f <FILE>  Archivo donde se guardará la grabación. El formato será:"
    echo "           <FILE>-YYYYMMDD-HHMMSS"
    echo "-s <URL>   Estación a sintonizar, default: http://74.86.83.83:8130 (Opus IMER 94.5)"
    exit 0
}
set_mode() {
    if [[ $MODE = "silent" ]]
    then
   OPTIONS="-dumpstream"
    elif [[ $MODE = "capture" || -z $MODE ]]
    then
   OPTIONS="-capture"
    else
   help
    fi
}
# TODO: Aceptar valores HH:MM:SS
set_time() {
    if [[ -z $TIME ]]
    then
   OPTIONS="$OPTIONS"
    elif [[ $TIME -gt 0 ]]
    then
       OPTIONS="$OPTIONS -endpos $TIME"
    else
   help
    fi
}
# Begin Script
PLAYER=mplayer2
STATION=http://74.86.83.83:8130
FILE=Opus
if [[ $1 == "-h" ]]; then
    help
else
    while getopts m:t:s:f: option
    do
   case "${option}"
            in
            m) MODE=${OPTARG} ;;
            t) TIME=${OPTARG} ;;
            s) STATION=${OPTARG} ;;
       f) FILE=${OPTARG} ;;
   esac
    done
    set_mode
    set_time
    FILE_NAME=$HOME/Desktop/$FILE-`date +%Y%m%d-%H%M%S`
    DEFAULT_OPTS="-dumpfile ${FILE_NAME} $STATION"
    # echo $PLAYER $OPTIONS $DEFAULT_OPTS #Ver que comando se ejecuta
    exec $PLAYER $OPTIONS $DEFAULT_OPTS
    exit 0
fi
# End Script


Para aquellos que si saben escribir scripts, una disculpa por el uso indiscriminado de sentencias if, prometo cambiarlas un día a switch o algo más bonito.

Gracias de antemano


Siempre hay quien hace las cosas mejor y no por eso hay que estar disculpándose, gracias por compartilo.

Salu2
_________________
ln -s /user/artic /user/arctic
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Spanish All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum