Mi Radio Abierta
Por Mark Nielsen
Traducción al español por Jos� Gregorio Del Sol Cobos
el día 22 de Julio 2003, para La Gaceta de Linux

  1. Introducci�n
  2. Configurando Apache
  3. Usando Grip para ripear
  4. El gui�n en Python
  5. Reproducir la Lista
  6. Conclusi�n
  7. Referencias

Introducci�n

Estoy enfermo de tanto reproducir CDs. La mitad de las canciones de un CD no valen nada. No me gusta pasar de Cd a CD una y otra vez. Estoy harto de la radio comercial con sus locutores en la est�pida crisis de la mitad de la vida que tratan de atraer a los adolescentes intentando actuar como ellos (que crezcan). Me gusta escuchar m�sica (del CD) o programas de la NPR como sonido de fondo mientras programo. Decid� desarrollar una manera de hacer que mi ordenador reprodujese canciones y programas de la NPR como si fuese una radio. Esto eliminar� los CDs y los programas de la radio comercial. Quiero que mi ordenador reproduzca este material en un orden aleatorio. Lo segundo (que no est� en este art�culo) era descargar una lista de reproducci�n de todos los programas que me gusta escuchar en la NPR (espero que alg�n d�a la NPR acepte mi oferta de desarrollar les listas de reproducci�n para sus oyentes (como mi donaci�n)).

Por ahora, estoy manteniendo las cosas realmente sencillas. En el futuro, planeo a�adir listas de reproducci�n, dar peso a las canciones, colocar material en bases de datos PostgreSQL, y cuentas, etc.

Soy muy perezoso. Tanto, que ni me molest� en mirar demasiado  los varios organizadores de mpeg basados en web para tus canciones favoritas. Simplemente quer�a algo para escupir las 200 canciones en un orden al azar para que simulase una estaci�n de radio. Primero ten�a que ripear las canciones y despu�s escribir un sencillo gui�n en Python para dividir la lista de reproducci�n.

Configurando Apache

En su servidor Linux, localice su directorio ra�z de html para su servidor httpd. En algunos sistemas, �ste est� situado en "/var/www/html". Asumiendo que es as�, haga esto:
cd /var/www/html
mkdir audio
Ahora copie todos sus mp3, rm, wav y otros ficheros de audio en el directorio "/var/www/html/audio". NOTA: no use su sevidor web para nadie m�s que usted mismo. S�lo usted puede escuchar esas canciones, o puede meterse en problemas de derechos de copia. Contacte con un abogado para los temas legales.

Para arrancar su servidor web, habitualemente puede hacer esto: "service httpd start". Si eso no funciona, mire en la documentaci�n que ven�a con su distribuci�n Linux para averiguar c�mo comenzar y parar el servicio web. Usualemente el servidor web por defecto en la mayor�a de los sistemas Linux ser� Apache.

Usando Grip para ripear

Despu�s de mirar muchos programas, Grip me pareci� el m�s f�cil de usar para ripear canciones desde un CD. Organiza las canciones por autor y album. Bonito. He aqu� los pasos que segu� para configurarlo.
  1. Descargue e instale "LAME" desde http://www.mp3dev.org. Tenga en cuenta algunos temas de patentes.
      cd /usr/local/src lynx
      --source http://twtelecom.dl.sourceforge.net/sourceforge/lame/lame-3.93.1.tar.gz >  lame-3.93.1.tar.gz
      tar -zxvf lame-3.93.1.tar.gz
      cd lame-3.93.1
      ./configure --prefix=/usr/local/lame
      make install
      ln -s /usr/local/lame/bin/lame /usr/bin/lame
      
  2. Comience Grip
  3. Configure Grip. En el men� "Configure" haga esto.
    Haga clic en Encode, elija 'lame' como el codificador. Donde dice "Encode File Format" (Codificar Formato de Archivo) aseg�rese de que especifica el directorio "/var/www/html/audio" como el directorio base. El m�o era como esto: '/var/www/html/audio/%A/%d/%t_%n.mp3'.
  4. Haga clic en "Tracks" en el men� superior y seleccione las canciones que quiere ripear.
  5. Haga clic en "Rip" en el men� superior y entonces haga clic en "Rip + Encode".

El Gui�n en Python

Coloque este gui�n en Python en "/var/www/cgi-bin/playlist.py". Ejecute este comando despu�s de ponerlo all�: "chmod 755 /var/www/cgi-bin/playlist.py". Despu�s de que haya instalado adecuadamente este gui�n de Python (por favor, use Python 2.2) y de que sepa que funciona bien, podr�a tener que cambiar la url de 127.0.0.1 a la ip de su ordenador en la red, para que los otros ordenadores de su casa puedan tambi�n reproducir la m�sica.
#!/usr/bin/python
# Aseg�rese de que la l�nea de arriba es la primera l�nea de este archivo.

### Derecho de copia bajo la GPL

  ## importamos los m�dulos de Python que necesitamos
import os, re, time, random

  ## Damos valores a algunas variables. Puede cambiar estas variables para sus necesidades. 
Home = "/var/www/html/audio"
Url_Base = "http://127.0.0.1/audio"
Song_Max = 200
List_Type = "mpegurl"

## NO CAMBIE NADA DE ABAJO A NO SER QUE SEA USTED UN EXPERTO EN PYTHON.
File_Match = re.compile('[{mp3}{rm}{wav}{ogg}{mpeg}]$')
Home_Re = re.compile('^' + Home)
List_Types = {'smil':'application/smil', 'mpegurl':'audio/x-mpegurl'}

#---------------------------------------
  ## Esta funci�n recorrer� todos los archivos que coincidan y obtendr� sus rutas absolutas.
  ## Es un m�todo recursivo.
def Dir_Contents(Item=""):
  Final_List = []  
  if Item == '': return ('')
  elif os.path.isdir(Item):
    List = os.listdir(Item)
    for Item2 in List:
      Item3 = Item + "/" + Item2
      Temp_List = Dir_Contents(Item=Item3)
      for Item4 in Temp_List: Final_List.append(Item4)
  elif os.path.isfile(Item):
    if File_Match.search(Item):   return([Item])
    else:   return([])
  return (Final_List)
      
#--------------------------

List =  Dir_Contents(Home)
List_Copy = List
  ## Aleatoriza cu�ntas veces llamamos a random.
Secs = int(time.strftime('%S')) * int(time.strftime('%H')) * int(time.strftime('%M'))
for i in range(0,Secs): random.random()

  ## Obtiene aleatoriamente un archivo cada vez hasta que no quede ningunio. 
New_List = []
while (len(List_Copy) > 0):
  Position = random.randint(0,len(List_Copy) - 1)
  New_List.append(List_Copy[Position])
  del List_Copy[Position]

  ## Rehace las url de la lista.
Urls = []
for Item in New_List:
    ## Para cada miembo en la lista, saca el prefijo del directorio Home, y le pre-coloca la url.
  Url = Url_Base + Home_Re.sub('', Item)
  Urls.append(Url)    

  ## Si superamos el n�mero de canciones que queremos escuchar,
  ## lo acabamos. Puntos de bonus si puede imaginar cu�ntas canciones
  ## hay en esta matriz cuando Song_Max = 200.
if len(New_List) > Song_Max:  New_List = New_List[0:Song_Max]

  ## Si el idiota que edit� este archivo tiene un tipo de lista no v�lido...
if not List_Types.has_key(List_Type): List_Type = 'mpegurl'
Content_Type = List_Types[List_Type]

  ### Ahora imprimimos el contenido. 
print "Content-Type: " + Content_Type + "\n\n"

if List_Type == 'mpegurl':  
  for Url in Urls: print Url
elif List_Type == 'smil':
  print "\n<smil>\n   <body>\n"
  for Item in Urls:  print "      <audio src='" + Url+ "'/>"
  print "   </body>\n</smil>\n"
else:  
  for Url in Urls: print Url


#------------------------------------------------------------------------
#                          Open Radio versi�n 1.0

#                       Copyright 2003, Mark Nielsen
#                       Todos los derechos reservados.
#    Este aviso de Copyright se copi� y modific� a partir del aviso de Copyright de Perl.
#    Este programa es software libre; usted puede redistribuirlo y/o modificarlo bajo los t�rminos
#    de, bien:

#        a)la Licencia P�blica General GNU seg�n est� publicada por la Fundaci�n del Software Libre;
           bien en la versi�n 1, o (es su opci�n) cualquier versi�n posterior, o
          
#        b)la "Licencia Art�stica" que viene con este Kit.

#    Este programa se distribuye en la esperanza de que sea �til, pero SIN NINGUNA GARANT�A; incluso sin la 
#    garant�a impl�cita de COMERCIABILIDAD o AJUSTE PARA UN PROP�SITO PARTICULAR. Vea la 
#    Licencia P�blica General GNU o la Licencia Art�stica para m�s detalles.

#    Deber�a haber recibido una copia de la Licencia Art�sitca con este kit, en el archivo llamado "Artistic".
#    Si no es as�, estar� contento de proporcionarle una. Puede mirar en http://www.perl.com para la Licencia Art�stica
Hosted by www.Geocities.ws

# Deber�a haber recibido tambi�n una copia de la Licencia P�blica general GNU junto con este programa # en el archivo llamado "Copying". Si no es as�, escriba a Free Software Foundation, Inc., Temple Place, # Suite 330, Moston, MA 02111-1307, USA, o visite su p�gina web en INternet en # http://www.gnu.org/copyleft/gpl.html.

Reproducir la Lista.

Esta peque�a instalaci�n es perfecta para m�. En el futuro, quiero crear cuentas. listas de reproducci�n, mantenerun seguimiento de qu� canciones no han sido tocadas a�n, dar peso a una canci�n, y un mont�n de cosas m�s. Por ahora, he acabado con esto y me pondr� pronto a hacer una lista de reproducci�n con mis programas de la NPR favoritos.

Tengo grandes ideas de ad�nde podr�a llevar esto. Dado que tengo un mont�n de experiencias desafortunadas con Flash, Real Player, Windows Media Player y Javascript, parece como si algo se pudiera desarrollar aqu�. Escuchabaun mont�n de cosas sobre estaciones de radio en Internet, pero parece como si ninguna se estuviera acercando al mercado directamente. Parecen haberse quedado pegadas en los viejos tiempos de la radio. Necesitan avanzar y noser constre�idas por los gigantes de los medios (legalmente). Parece como si las estaciones de radio por internet no estuviesen viendo la gran imagen. Por ahora, yo s�lo voy a desarrollar mi propia radio para m� mismo, y puedeque haga algo real mas tarde.

Referencias

  1. http://www.nostatic.org/grip/
  2. http://www.apache.org
  3. http://www.python.org
  4. http://service.real.com/help/library/earlier.html
  5. Si este art�culo cambia, estar� disponible en http://www.tcu-inc.com/Articles/34/open_radio.html

 

[BIO] Mark Nielsen trabaja en Crisp Hughes Evans. En su tiempo libre, escribe art�culos relacionados con el Software Libre (GPL) o la Literatura Libre (FDL).Por favos escr�bale a [email protected] y ponga en el Asunto "ARTICLE:" o el mensaje ser� borrado y ni se mirar� siquiera en -- para parar a los spammers.


Copyright © 2003, Mark Nielsen .Licencia de copia http://www.linuxgazette.com/copying.html
Publicado en el N�mero 92 de Linux Gazette, Julio de 2003
Hosted by www.Geocities.ws

1