Меnu:


Descargar letra de la canción que esta sonando

Como puedo escuchar radio desde la linea de comando?

Es muy fácil puedes utilizar:

Lo que normalmente utilizamos es el script radio.py al cual le hemos agregado nuestros streams favoritos y una modificación en la invocación del mplayer para usar pulse por defecto.

Porque escuchar radios por internet?

Cuando estamos en el proceso de aprender un idioma como el ingles, siempre es bueno mejor nuestro oído del idioma, algo que ayuda bastante es el hecho de escuchar canciones en ingles y seguirlas con la letra, por lo menos eso nos ha funcionado a nosotros de maravillas.

Tenemos ya tiempo escuchando radio por internet, aunque tenemos claro que escuchar radio mientras trabajamos no es eficiente, por la distracción que genera, mas sin embargo algunas veces debemos sacrificar un poco la eficiencia para mejorar nuestro desempeño con el idioma extranjero. Hace mas o menos un par de años si la memoria no nos falla nos percatamos de que los streams que estaban siendo reproducidos por el mplayer comenzaron a publicar el nombre de la canción que estaba siendo reproducida2. En aquel momento pensamos que podríamos hacer lo mismo que hace el Amarok, este utiliza la información de las etiquetas del mp3 para recuperar la letra de la canción que esta siendo reproducida, pero nos fue un poco difícil conseguir hacer la consulta al stream solo para traer el titulo de la canción y el artista que la entonaba, después de varios intentos fallidos tuvimos éxito en obtener la información que requeríamos del stream3. Existe para nuestro editor favorito emacs el modo emms-get-lyrics, el cual permite traer la letra de la canción que esta siendo reproducida por el emms. Así que hemos codificado una función que utiliza emms-get-lyrics como backend para traer la letra de la canción.

Como descargo la letra del stream que se esta reproduciendo?

Para nuestro ejercicio hemos seleccionado dos emisoras retro y telestereo, ambas de nuestro país la primera con sede donde inicia la patria y la segunda con cede en la capital. Ademas hemos adicionado un atajo de teclado a nuestro administrador de ventanas Openbox para llamar automáticamente a nuestro script4.

Usando emacs como scripting language

Esta sera la segunda ves en la que sugerimos utilizar emacs5, esta vez sera mucho mas sencillo ya que no tendremos ninguna interacción real con el emacs ya que simplemente lo utilizaremos como un scripting language.

Preparando el script

Para poder ejecutar nuestro script necesitamos realizar los siguientes pasos:

(defun elisp-cookbook/chomp (str)
  "Chomp leading and tailing whitespace from STR."
  (let ((s (if (symbolp str) (symbol-name str) str)))
    (replace-regexp-in-string "\\(^[[:space:]\n]*\\|[[:space:]\n]*$\\)" "" s)))

(defun kipuamutay/lyrics (icy_info)
  "get the lyrics, for use on lisp program"
  (interactive "r")
  (let* ( (artist_title               (split-string icy_info "-"))
         )
    (emms-get-lyrics (elisp-cookbook/chomp (downcase (car artist_title))) (elisp-cookbook/chomp (car (cdr artist_title))) 'emms-get-lyrics-w3m)
    )
  )

(defun kipuamutay/song ()
  "get telestereo playing song"
  (interactive)
  (let* ( (cmd "mplayer -endpos 0 -vo null -ao null  http://67.212.179.138:8300 2>&1 |grep Info")
          (cmd_output (shell-command-to-string cmd))
          (icy_info (replace-regexp-in-string "';StreamUrl='';" "" (replace-regexp-in-string "ICY Info: StreamTitle='" "" cmd_output) ))
          )
    (if icy_info
        (kipuamutay/lyrics icy_info))
    (if (not icy_info)
        (message "no Song-Lyric on stream"))
))

nota: para grabar presionar C-x C-s que equivale a save-buffer

nota: para salir presionar C-x C-c que equivale a save-buffers-kill-emacs

Ejecutando el script

También podemos utilizar el script desde el N800

Para ello tenemos 2 opciones ejecutarlo como función del bash6, o ejecutando desde el menú, a continuación detallamos la segunda opción.

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Name=X Terminal song lyrics
Comment=Terminal Emulator
Exec=/usr/bin/xterm -hold -e emacs -Q -nw --batch -l
~/.emacs.d/my-configs/rc/.emacs-rc-defuns.el -l
   ~/.emacs.d/el-get/emms-get-lyrics/emms-get-lyrics.el --eval '(progn
   (kipuamutay/song)(princ (buffer-string)))'
Icon=terminal
Terminal=false
Type=Application
Categories=System;TerminalEmulator;
X-HildonDesk-ShowInToolbar=true
X-Osso-Type=application/x-executable

Poniendo en marcha nuestras ideas.

Este articulo es un gran paso adelante desde nuestras épocas universitarias en las que comprábamos los cancioneros7 en los kioscos de periódicos. Luego pasamos a descargar las letras y almacenarlas en archivos de texto. Posteriormente los organizamos mejor utilizando lotus-notes, hasta ahora que la letra esta a un atajo de distancia. A estar pendientes, pronto escribiremos un articulo de como utilizar emacs para organizar nuestras notas e ideas, sera el primero de una serie de artículos organizamos para adentrarnos en el conocimiento de cormo usar emacs.


1. Para configurar el emms use el-get

2. Shoutcast, coloca un prefijo ICY que significa "I Can Yell", en nuestro caso el prefijo que usamos es ICY Info

3. El comando utilizado es mplayer -endpos 0 -vo null -ao null http://67.212.179.138:8300 2>&1 |grep Info

4. scripting lenguaje, la traducción seria lenguaje de guiones, se refiere a que los actores deben llevar a cabo un guión cuando actúan, en este caso el lenguaje de programación es el que ejecutara el guión especificado.

5. La primera vez fue cuando publicamos el articulo Como crear un website desde emacs de manera rapida y sencilla.

6. Instale bash, cree su archivo .bashrc y coloque una función que referencia la invocacion del script

7. A lo mejor todavía se venden hoy en día.

Last change: 22.11.2011 22:11

blog comments powered by Disqus