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
- Descargar e instalar py-libmpdclient.
- Colocar el archivo descargado en algún lugar (~/.config/openbox/scripts en el ejemplo) y darle permiso de ejecución:
- 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'>
- 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

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 :)