Risposte:
È un bug noto che è stato corretto nelle versioni più recenti di Banshee.
È possibile utilizzare l'ultima versione di Banshee dal PPA Banshee :
sudo add-apt-repository ppa:banshee-team/ppa
sudo apt-get update && sudo apt-get upgrade
Individua il database sqlite3 (~ / .config / banshee-1 / banshee.db) ed esegui la seguente query:
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 Utilizzare il comando "sqlite3" per aprire il database e non solo "sqlite".
PPS Ho dovuto eseguire la query più volte, ogni esecuzione elimina solo un ulteriore duplicato. Ciò accade perché la selezione interna restituisce solo l'ID di una traccia in eccesso per ogni combinazione di titolo / artista / album.
Questa risposta usa python per accedere al database banshee, quindi eseguire l'azione sql che Donbicca elenca con una svolta. Invece di dover eseguire il codice sql molte volte, ho chiesto a Python di eseguire il ciclo del codice sql sul numero di istanze esistenti nel codice sql. Devi eseguire questo codice una sola volta. È necessario sostituire il percorso principale (sostituire "/ home / JONDOE" con il percorso principale).
#!/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()
Un'altra alternativa per rimuovere la canzone duplicqtes dal database sqlite di banshee:
cd /home/youruser/.config/banshee-1/
Chiudi Banshee PRIMA! Esegui il backup del tuo DB:
cp banshee.db banshee.db.bck
Nel caso in cui non hai installato sqlite:
sudo apt-get install sqlite3
DB aperto:
sqlite3 banshee.db
Digita questa query:
DELETE FROM coretracks WHERE TrackID NOT IN (SELECT MIN(TrackID) FROM coretracks GROUP BY TitleLowered, ArtistID,AlbumID,Title);
Uscita:
.q
Hai finito, apri Banshee e controlla il risultato.