Blog do Julio

Hacks, tutoriais e dicas

Amarok MySQL

| Comments

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 a performance. Tentarei detalhar a instalação nas linhas que seguem.

Instale o Amarok2 e o MySQL: # 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: # 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 4a 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: AUR - ruby1.8 1.8.7

AUR - rubygems1.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 lastfm 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.

Comments