Amarok MySQL
No Linux, meu player de música favorito é o MPD por sua simplicidade, por rodar como daemon e me
permitir escolher entre várias opções de GUI (ou nenhuma), mas, às vezes, sinto falta de alguns
recursos, como contador de número de execuções, geradores de playlists, obtenção de capas,
integração com Last.fm e Wikipedia, artista “Various”, entre muitas outras funções.
O player para Linux com mais recursos é, provavelmente, o Amarok.
Geralmente eu só não instalo o Amarok para como meu player padrão, pois ele é pesado, consome muita memória e depende de algumas bibliotecas QT. Mas mesmo assim, em algum ponto, abandono meus princípios de simplicidade e instalo o player do lobo (para voltar a usar MPD depois…)
Por default, o Amarok utiliza um banco de dados SQLite, que é suficiente para quem só usa um
computador e possui poucas músicas. Não é o meu caso (minha pasta de músicas está beirando os
600GB).
Para pessoas que possuem grandes bibliotecas como a minha, utilizar o mySQL pode melhorar
consideravelmente o desempenho. Tentarei detalhar a instalação nas linhas que seguem.
Instale o Amarok2 e o MySQL:
sudo pacman -S amarok mysql
Configure o MySQL e adicione mysqld
aos daemons do rc.conf
Crie o banco de dados amarokdb
, crie o usuário amarok
e defina uma senha:
sudo mysql -p -u root
CREATE DATABASE amarokdb;
USE amarokdb;
GRANT ALL ON amarokdb.* TO amarok@'%' IDENTIFIED BY 'sua_senha';
FLUSH PRIVILEGES;
quit
Com essa configuração eu posso compartilhar o banco de dados com outras máquinas. Para permitir apenas acesso local troque a quarta linha por:
GRANT ALL ON amarokdb.* TO amarok@localhost IDENTIFIED BY 'sua_senha';
Abra o Amarok, vá em Setings…
» Configure Amarok
» Database
e marque
Use external MySQL database
. Preencha as informações e reinicie o programa.
Explore os milhares de recursos.
Logo após configurar atualizar a biblioteca, utilizo um plugin que sincroniza meu playcount com o
do Last.fm. O plugin chama-se Klastfm
e pode ser encontrado
aqui.
Já faz um ano que o desenvolvedor não atualiza o script, então tive que corrigir alguns erros manualmente.
Primeiro, instale o ruby 1.8.7 e o rubygems-1.8:
Instale os seguintes pacotes do Ruby:
sudo gem-1.8 install activerecord mysql httparty progressbar ya2yaml —no-rdoc —no-ri
Comente a linha #27 do arquivo klastfm.rb
:
line 27: #ActiveRecord::Base.logger = Logger.new('log/database.log')
Na linha 93, troque
@lastfm.tracks_in_week(week['from'], week['to']).each do |track|
por
[*@lastfm.tracks_in_week(week['from'], week['to'])].each do |track|
Copie o arquivo /config/config.yaml.example
para /config/config.yaml
e adicione sua API do
Last.fm, que pode ser encontrada em
http://www.last.fm/api/account.
ruby-1.8 klastfm.rb
executa o programa. Ele irá baixar todos os seus scrobbles do Last.fm e fazer
um merge com o banco de dados do Amarok. Isso demora bastante, mas vale a 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
Manter o banco de dados sincronizado é interessante, pois facilita a geração de playlists, por exemplo.