Como remover faixas duplicadas do Banshee?

Respostas:

7

Isto é um bug conhecido que foi corrigido nas versões mais recentes do Banshee.

Você pode usar a versão mais recente do Banshee no Banshee PPA :

sudo add-apt-repository ppa:banshee-team/ppa
sudo apt-get update && sudo apt-get upgrade

Como eu assino um bug?

Sid
fonte
1
Não tive a impressão de que essa pergunta estivesse se referindo especificamente a esse bug. Você pode acabar com faixas duplicadas na sua biblioteca, mesmo que nunca tenha encontrado esse bug de importação / nova verificação, e não tenho certeza de como removê-las automaticamente agora que a opção não está mais disponível na extensão Mirage.
Michael Martin-Smucker
3

Localize o banco de dados sqlite3 (~ / .config / banshee-1 / banshee.db) e execute a seguinte consulta:

delete from coretracks where TrackID in
(
  select trackid from 
     (
      select TrackID as trackid, count(TrackID) as c from coretracks 
      group by TitleLowered,ArtistID,AlbumID,Title
     )
  where c > 1
);

PS Use o comando "sqlite3" para abrir o banco de dados, e não apenas "sqlite".

PPS Eu tive que executar a consulta várias vezes, cada execução exclui apenas uma duplicata adicional. Isso acontece porque a seleção interna apenas devolve o ID de uma faixa excedente para cada combinação de Título / Artista / Álbum.

donbicca
fonte
2

Esta resposta usa python para acessar o banco de dados banshee e, em seguida, execute a ação sql que o donbicca lista com um toque. Em vez de ter que executar o código sql várias vezes, pedi ao python que repetisse o código sql pelo número de instâncias existentes no código sql. Você só precisa executar esse código uma vez. Você precisa substituir o caminho inicial (substitua "/ home / JONDOE" pelo caminho inicial).

#!/usr/bin/env python

import sqlite3

#open database to determine number of rows to loop over

db = sqlite3.connect('/home/me/.config/banshee-1/banshee.db')
cursor = db.cursor()

a = cursor.execute('SELECT TrackID from coretracks group by TitleLowered,ArtistID,AlbumID,Title')
a_trackid = a.fetchall()
db.close()

#Close database to ensure results do not impact future results. Then reopen database

db = sqlite3.connect('/home/me/.config/banshee-1/banshee.db')
cursor = db.cursor()
sql = ('DELETE from coretracks where TrackID in (SELECT TrackID from (SELECT TrackID as trackid, count(TrackID) as g from coretracks group by TitleLowered,ArtistID,AlbumID,Title) where g > 1)')

for i in a_trackid:
    cursor.execute(sql)

db.commit()
db.close()
branch.lizard
fonte
2

Outra alternativa para remover a música duplicqtes do banco de dados banshee sqlite:

cd /home/youruser/.config/banshee-1/

Fechar Banshee PRIMEIRO! Faça backup do seu banco de dados:

cp banshee.db banshee.db.bck

Caso você não tenha o sqlite instalado:

sudo apt-get install sqlite3

DB aberto:

sqlite3 banshee.db

Digite esta consulta:

DELETE FROM coretracks WHERE TrackID NOT IN (SELECT MIN(TrackID) FROM coretracks GROUP BY TitleLowered, ArtistID,AlbumID,Title);

Saída:

.q

Você está pronto, abra o Banshee e verifique o resultado.

LG
fonte
Eu tive um problema semelhante e isso corrigiu perfeitamente para mim. Obrigado.
SeveralBlueberries