Un rabanitosend-fruit

otro blog mandando fruta

Tango Feed Icon

about:author

Pipe Menu para OB3: Directorios de MPD


Este es mi primer script en Python, basado en ob-mpd-0.3.py. Por supuesto, espero comentarios, ideas y puteadas en este post.

 

mpd-ls-0.0.2

El objetivo de este script es crear un Pipe Menu de OpenBox que muestre los directorios existentes en la base de datos de MPD y permita agregarlos a la lista de reproducción actual. Es la primera versión, la 0.0.1 :), por lo que no hay muchas funcionalidades, pero voy a ir agregando unas cuantas (tratando de no perder simplicidad, claro.)

 

Descarga e instalación

Icon
mpd-ls-001.py
  1. Descargar e instalar py-libmpdclient.
  2. Colocar el archivo descargado en algún lugar (~/.config/openbox/scripts en el ejemplo) y darle permiso de ejecución:
    • chmod +x mpd-ls-0.0.1.py
  3. Crear el Pipe Menu en ~/.config/openbox/menu.xml donde sea conveniente:
    • <menu id='mpd-ls' label='mpd-ls' execute='~/.config/openbox/scripts/mpd-ls-0.0.1.py'>
  4. Y reconfigurar el menú :)

 

Las features

  • Crea un item del menú por cada directorio en la base de datos de MPD, al clickearlo, se agrega a la lista de reproducción.
  • Crea un submenú si el límite maxItems es superado.

 

Próximamente

  • Crear submenúes si la lista de directorios sobrepasa un límite dado.
  • Menú para playlists.
  • Submenúes para sub-directorios.
  • Capturas del menú.
  • Instrucciones en inglés. Sorry!

 

Captura

openbox root-menu

 

Dependencias

 

Notas de la versión

0.0.2

Sigo teniendo el mismo problema con mpdclient.py, aunque escape los espacios ("\ " en lugar de " ").

0.0.1

Si revisan el código, verán que el comando para agregar el directorio a la lista es mpc add en lugar de usar las funciones de mpdclient.py. Esto es porque al intentar agregar un directorio con espacios (por ejemplo: "Jose Larralde") o guiones bajos ("joy_division") mpdclient agrega también otros directorios, o la bd completa. Intenté con el siguiente script y sigo obteniendo el mismo "error", por lo que deduje que el problema no se generaba en el menú de OB:

#!/usr/bin/env python
 
import mpdclient, os, sys
 
con = mpdclient.MpdController()
 
try:
    if (sys.argv[1] == "add") and sys.argv[2]:
        con.add(sys.argv[2])
except IndexError:
    pass

Feedback

Please :)