🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: es.comp.os.linux.programacion
7 messages
7 total messages Started by Artabros Tue, 01 Nov 2005 10:27
Script en bash para grabar programa de radio por internet
#1566
Author: Artabros
Date: Tue, 01 Nov 2005 10:27
64 lines
2998 bytes
   Hola,

     soy aficionado a un programa de radio desde hace alg�n tiempo, pero
han retirado la emisi�n en mi zona, por lo que solo puedo escucharlo por 
internet. Adem�s, se emite a horas prohibitivas para m�, que al d�a
siguiente toca madrugar. Es por ello que me he propuesto grabarlo para
escucharlo en otro momento.
    
    Se emite en formato .asx y uso el script del final para grabarlo.
Graba el programa con algunos problemillas: por un lado no detiene la
grabaci�n a los 120 min sino que contin�a hasta que el fichero ocupa
194783607 bytes, o por lo menos me lo ha hecho las dos veces que lo
intent� grabar. �Hay alg�n l�mite en el tama�o del fifo? He mirado en
la documentaci�n de ulimit y no encuentro nada.

   Por otra parte, me gustar�a "pulir" la forma en que se detiene el 
mplayer (en el caso de que funcionase, claro xD). Me refiero a asegurarme
de que se detiene la instancia correcta del programa. No es que a esas
horas est� viendo pel�culas ni nada por el estilo, pero ser�a m�s
elegante, �no? :)

    Pues lo dicho, agradecer�a cualquier ayuda para hacer funcionar
correctamente el script. Evidentemente no es obra mia, asiq mantengo los 
cr�ditos :P   Muchas gracias y un saludo!!!

#!/bin/bash
# Script para la grabacion de un programa de radio por internet.
# Idea original de fer (www.tabernadelturco.com)
#
# Pplux (www.pplux.com)

#emisora
emisora=mms://www.los40.com/nuevo_player/m80.asx

#numero de minutos
minutos=120

#Nombre del programa
programa=jazztamosaqui

#Directorio donde grabarlo (?.? = actual)
dir=/home/datos/m80

# Nombre del fichero
nombre=${dir}/${programa}_`date +%y_%m_%d`.mp3

#Creamos un pipe
[ -e /tmp/radio_pipe ] && rm /tmp/radio_pipe
mkfifo /tmp/radio_pipe

#Lame
lame /tmp/radio_pipe $nombre 2>/dev/null 1>/dev/null &

#mplayer
mplayer -playlist $emisora -ao pcm:file=/tmp/radio_pipe 2>/dev/null </dev/null

#Esperamos el tiempo marcado
sleep $(($minutos * 60))

#acabamos con el mplayer
kill `ps | grep mplayer | awk '{ print $1 }'`

#borramos el pipe
rm /tmp/radio_pipe
Re: Script en bash para grabar programa de radio por internet
#1572
Author: Claudio
Date: Wed, 02 Nov 2005 01:07
19 lines
1491 bytes
On 2005-11-01, Artabros <terra.artabra@gmail.com> wrote:

Una pregunta:

> #mplayer
> mplayer -playlist $emisora -ao pcm:file=/tmp/radio_pipe 2>/dev/null </dev/null
>
> #Esperamos el tiempo marcado
> sleep $(($minutos * 60))

esto espera $minutos despu�s de acabar el mplayer � no ?

> #acabamos con el mplayer
> kill `ps | grep mplayer | awk '{ print $1 }'`

Entonces � por qu� lo matas ?

Un saludo.
--claudio--
Re: Script en bash para grabar programa de radio por internet
#1573
Author: Artabros
Date: Wed, 02 Nov 2005 07:11
36 lines
2563 bytes
El Wed, 02 Nov 2005 01:07:04 +0000, Claudio escribi�:
> On 2005-11-01, Artabros <terra.artabra@gmail.com> wrote:
>>#mplayer
>>mplayer -playlist $emisora -ao pcm:file=/tmp/radio_pipe 2>/dev/null
>></dev/null
>> #Esperamos el tiempo marcado
>> sleep $(($minutos * 60))
> 
> esto espera $minutos despu�s de acabar el mplayer � no ?
> 
>> #acabamos con el mplayer
>> kill `ps | grep mplayer | awk '{ print $1 }'`
> 
> Entonces � por qu� lo matas ?

   Hola,

     mi intenci�n es grabar �nicamente $minutos min. de programa (es
decir, lo que dura). Date cuenta que quiero meter este script en el cron
para que se ejecute solo y, a la hora que termina el programa, yo ya estoy
durmiendo. Es por ello que debe detenerse solo, aunque ya te digo que no
funciona como deber�a. El sleep deber�a detener la ejecuci�n del script
durante esos minutos indicados (mientras sigue grabando) y luego enviar un
kill al mplayer para detenerlo. Sin embargo, ni funciona ese kill ni me
parece una soluci�n eficiente (imagina que por lo q sea coincide que ese
dia estoy despierto y viendo un video cualquiera o escuchando ese programa
con otra instancia del mplayer...)

    El caso es q curiosamente el mplayer se detiene (o al menos lo hizo
las dos veces que lo intent�), pero bien pasados los $minutos y
siempre con el  mismo tama�o de fichero resultante, como ya dije. No
s�... parece m�s que se detiene por alg�n l�mite en el tama�o
de1 fichero que por otra cosa. Sin embargo 194783607 bytes (unos 186Mb) no
me suena a l�mite de ning�n tipo  :?

   Muchas gracias y saludos!!
Re: Script en bash para grabar programa de radio por internet
#1437
Author: Claudio
Date: Wed, 02 Nov 2005 08:18
34 lines
2100 bytes
On 2005-11-02, Artabros <terra.artabra@gmail.com> wrote:
> El Wed, 02 Nov 2005 01:07:04 +0000, Claudio escribi�:
>> On 2005-11-01, Artabros <terra.artabra@gmail.com> wrote:
>>>#mplayer
>>>mplayer -playlist $emisora -ao pcm:file=/tmp/radio_pipe 2>/dev/null
>>></dev/null
>>> #Esperamos el tiempo marcado
>>> sleep $(($minutos * 60))
>> 
>> esto espera $minutos despu�s de acabar el mplayer � no ?
>> 
>>> #acabamos con el mplayer
>>> kill `ps | grep mplayer | awk '{ print $1 }'`
>> 
>> Entonces � por qu� lo matas ?
>
>     El caso es q curiosamente el mplayer se detiene (o al menos lo hizo
> las dos veces que lo intent�), pero bien pasados los $minutos

Claro. mplayer graba todo lo que tenga que grabar, acaba, despu�s
esperas $minutos y despu�s intentas matar una cosa que no existe, porque
ya acab� hace tiempo. Yo creo que deber�as probar este esquema:

<sin-probar>

mplayer -bla blabla &
MPID=$!
sleep $minutos
kill $MPID

</sin probar>

Un saludo.
--claudio--
Re: Script en bash para grabar programa de radio por internet
#1440
Author: AnimAlf
Date: Wed, 02 Nov 2005 17:24
49 lines
2505 bytes
El mié, 02-11-2005 a las 08:11 +0100, Artabros escribió:
>    Hola,
hola
> 
>      mi intención es grabar únicamente $minutos min. de programa (es
> decir, lo que dura). Date cuenta que quiero meter este script en el cron
> para que se ejecute solo y, a la hora que termina el programa, yo ya estoy
> durmiendo.

puedes forzarlo a morir. en C sería

#include <time.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>

#define _HORA_FIN_ 18
#define _MIN_FIN_ 17

/* falta asignar a $emisora */

int main(void) {
   int pid;
   struct tm *tptr;
   time_t t;
   pid=fork();
   if (pid == 0){ 
      execlp("mplayer", "mplayer", "-playlist $emisora", "-ao
pcm:file=/tmp/radio_pipe 2",NULL);
   } else {
      do {
	 t = time(NULL);
         tptr = localtime(&t);
         sleep(5);
	 printf("\nhora actual: %d:%d   vs   %d:%d\n",
		tptr->tm_hour,tptr->tm_min,_HORA_FIN_,_MIN_FIN_);
      } while ((tptr->tm_hour<(int)_HORA_FIN_) &&
(tptr->tm_min<=(int)_MIN_FIN_));
      kill(pid,SIGTERM);
      printf("\ntodo termino bien. %d:%d \n
\n",tptr->tm_hour,tptr->tm_min);
   }
   return 0;
}

Saludos
Re: Script en bash para grabar programa de radio por internet
#1441
Author: AnimAlf
Date: Wed, 02 Nov 2005 17:40
45 lines
2523 bytes
El mié, 02-11-2005 a las 08:11 +0100, Artabros escribió:
>     El caso es q curiosamente el mplayer se detiene (o al menos lo hizo
> las dos veces que lo intenté), pero bien pasados los $minutos y
> siempre con el  mismo tamaño de fichero resultante, como ya dije. No
> sé... parece más que se detiene por algún límite en el tamaño
> de1 fichero que por otra cosa. Sin embargo 194783607 bytes (unos 186Mb) no
> me suena a límite de ningún tipo  :?

Puedes matarlo si no ha obedecido, en C lo haría así
#include <time.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>

#define _HORA_FIN_ 18
#define _MIN_FIN_ 17

/* falta asignar $emisora */

int main(void) {
   int pid;
   struct tm *tptr;
   time_t t;
   pid=fork();
   if (pid == 0){ 
      execlp("mplayer", "mplayer", "-playlist $emisora", "-ao
pcm:file=/tmp/radio_pipe 2",NULL);
   } else {
      do {
         t = time(NULL);
         tptr = localtime(&t);
         sleep(5);
      } while ((tptr->tm_hour<(int)_HORA_FIN_) &&
(tptr->tm_min<=(int)_MIN_FIN_));
      kill(pid,SIGTERM);
      printf("\ntodo termino bien. %d:%d \n
\n",tptr->tm_hour,tptr->tm_min);
   }
   return 0;
}

Saludos
Re: Script en bash para grabar programa de radio por internet
#1401
Author: JC
Date: Thu, 01 Dec 2005 12:37
99 lines
4601 bytes
Hola

Esto... �de verdad funciona? yo lo intento y nada (tengo mplayer, lame y 
todo lo necesario instalado)

Me crea la pipe en tmp, pero nada mas. se me queda como en stand-by todo 
despues de cargar la cache (el mplayer), y ponerme:

==========================================================================
Trying to force audio codec driver family libmad...
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 22050 Hz, 2 ch, s16le, 20.0 kbit/2.84% (ratio: 2501->88200)
Selected audio codec: [ffwmav2] afm:ffmpeg (DivX audio v2 (FFmpeg))
==========================================================================
Building audio filter chain for 22050Hz/2ch/s16le -> 0Hz/0ch/??...
[AO PCM] File: /tmp/radio_pipe (WAVE)
PCM: Samplerate: 22050Hz Channels: Stereo Format s16le
[AO PCM] Info: fastest dumping is achieved with -vc dummy -vo null
PCM: Info: to write WAVE files use -waveheader (default).


Y pasa del pipe (o al menos este no crece). Cuando acabo el mplayer, el 
lame no me crea nada tampoco.

un saludo

Artabros wrote:
>    Hola,
> 
>      soy aficionado a un programa de radio desde hace alg�n tiempo, pero
> han retirado la emisi�n en mi zona, por lo que solo puedo escucharlo por 
> internet. Adem�s, se emite a horas prohibitivas para m�, que al d�a
> siguiente toca madrugar. Es por ello que me he propuesto grabarlo para
> escucharlo en otro momento.
>     
>     Se emite en formato .asx y uso el script del final para grabarlo.
> Graba el programa con algunos problemillas: por un lado no detiene la
> grabaci�n a los 120 min sino que contin�a hasta que el fichero ocupa
> 194783607 bytes, o por lo menos me lo ha hecho las dos veces que lo
> intent� grabar. �Hay alg�n l�mite en el tama�o del fifo? He mirado en
> la documentaci�n de ulimit y no encuentro nada.
> 
>    Por otra parte, me gustar�a "pulir" la forma en que se detiene el 
> mplayer (en el caso de que funcionase, claro xD). Me refiero a asegurarme
> de que se detiene la instancia correcta del programa. No es que a esas
> horas est� viendo pel�culas ni nada por el estilo, pero ser�a m�s
> elegante, �no? :)
> 
>     Pues lo dicho, agradecer�a cualquier ayuda para hacer funcionar
> correctamente el script. Evidentemente no es obra mia, asiq mantengo los 
> cr�ditos :P   Muchas gracias y un saludo!!!
> 
> #!/bin/bash


> # Script para la grabacion de un programa de radio por internet.
> # Idea original de fer (www.tabernadelturco.com)
> #
> # Pplux (www.pplux.com)
> 
> #emisora
> emisora=mms://www.los40.com/nuevo_player/m80.asx
> 
> #numero de minutos
> minutos=120
> 
> #Nombre del programa
> programa=jazztamosaqui
> 
> #Directorio donde grabarlo (?.? = actual)
> dir=/home/datos/m80
> 
> # Nombre del fichero
> nombre=${dir}/${programa}_`date +%y_%m_%d`.mp3
> 
> #Creamos un pipe
> [ -e /tmp/radio_pipe ] && rm /tmp/radio_pipe
> mkfifo /tmp/radio_pipe
> 
> #Lame
> lame /tmp/radio_pipe $nombre 2>/dev/null 1>/dev/null &
> 
> #mplayer
> mplayer -playlist $emisora -ao pcm:file=/tmp/radio_pipe 2>/dev/null </dev/null
> 
> #Esperamos el tiempo marcado
> sleep $(($minutos * 60))
> 
> #acabamos con el mplayer
> kill `ps | grep mplayer | awk '{ print $1 }'`
> 
> #borramos el pipe
> rm /tmp/radio_pipe
> 


-- 
---------------------------------------------------------------
Apagar el ordenador en el bot�n 'inicio' es un contrasentido
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads