Amarok con MySQL

jun. 16, 2011·
Julio Batista Silva
Julio Batista Silva
· 3 min de lectura

En Linux, mi reproductor de música favorito es MPD por su simplicidad, por ejecutarse como daemon y permitirme elegir entre varias opciones de GUI (o ninguna), pero, a veces, echo de menos algunos recursos, como contador de reproducciones, generadores de playlists, obtención de carátulas, integración con Last.fm y Wikipedia, artista “Various”, entre muchas otras funciones.
El reproductor para Linux con más funciones es, probablemente, Amarok.

Por lo general, no instalo Amarok como mi reproductor predeterminado porque es pesado, consume mucha memoria y depende de algunas bibliotecas QT. Aun así, en algún momento, abandono mis principios de simplicidad e instalo el reproductor del lobo (para volver a usar MPD después…)

Por defecto, Amarok utiliza una base de datos SQLite, que es suficiente para quien solo usa un ordenador y posee pocas canciones. No es mi caso (mi carpeta de música ronda los 600 GB).
Para personas que poseen bibliotecas grandes como la mía, utilizar MySQL puede mejorar considerablemente el rendimiento. Intentaré detallar la instalación a continuación.

Instala Amarok2 y MySQL:

sudo pacman -S amarok mysql

Configura MySQL y añade mysqld a los daemons del rc.conf.

Crea la base de datos amarokdb, crea el usuario amarok y define una contraseña:

sudo mysql -p -u root
  CREATE DATABASE amarokdb;
  USE amarokdb;
  GRANT ALL ON amarokdb.* TO amarok@'%' IDENTIFIED BY 'tu_contraseña';
  FLUSH PRIVILEGES;
  quit

Con esta configuración puedo compartir la base de datos con otras máquinas. Para permitir solo el acceso local, cambia la cuarta línea por:

GRANT ALL ON amarokdb.* TO amarok@localhost IDENTIFIED BY 'tu_contraseña';

Abre Amarok, ve a Setings… » Configure Amarok » Database y marca Use external MySQL database. Rellena la información y reinicia el programa.

Explora los miles de recursos.

Justo después de actualizar la biblioteca, utilizo un plugin que sincroniza mi playcount con el de Last.fm. El plugin se llama Klastfm y puede encontrarse aquí.

Hace ya un año que el desarrollador no actualiza el script, así que tuve que corregir algunos errores manualmente.

Primero, instala ruby 1.8.7 y rubygems-1.8:

Instala los siguientes paquetes de Ruby:

sudo gem-1.8 install activerecord mysql httparty progressbar ya2yaml —no-rdoc —no-ri

Comenta la línea #27 del archivo klastfm.rb:

line 27: #ActiveRecord::Base.logger = Logger.new('log/database.log')

En la línea 93, cambia

@lastfm.tracks_in_week(week['from'], week['to']).each do |track|

por

[*@lastfm.tracks_in_week(week['from'], week['to'])].each do |track|

Copia el archivo /config/config.yaml.example a /config/config.yaml y añade tu API de Last.fm, que puede encontrarse en http://www.last.fm/api/account.

ruby-1.8 klastfm.rb ejecuta el programa. Descargará todos tus scrobbles de Last.fm y hará un merge con la base de datos de Amarok. Esto tarda bastante, pero vale la pena.

creating a statistic entry for every track
creating stat: 100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 00:00:57

getting all tracks you ever submitted to last.fm (ca. 15050)
get playcount: 100% |ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo| Time: 01:05:29

getting all tracks played in the last 163 weeks
klastfm.rb:93:in `date_tracks': undefined method `each' for nil:NilClass (NoMethodError)oooooooooooooooooooooooooooooooooooooooooooo          | ETA:  00:01:55
        from klastfm.rb:91:in `each'
        from klastfm.rb:91:in `date_tracks'
        from klastfm.rb:144

Mantener sincronizada la base de datos es interesante, pues facilita la generación de playlists, por ejemplo.

Julio Batista Silva
Autores
Senior Cloud Developer
comments powered by Disqus