Antworten:
Es ist ein bekannter Fehler , der in den neueren Versionen von Banshee behoben wurde.
Sie können die neueste Version von Banshee aus der Banshee-PPA verwenden :
sudo add-apt-repository ppa:banshee-team/ppa
sudo apt-get update && sudo apt-get upgrade
Suchen Sie die sqlite3-Datenbank (~ / .config / banshee-1 / banshee.db) und führen Sie die folgende Abfrage aus:
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 Verwenden Sie den Befehl "sqlite3", um die Datenbank zu öffnen, und nicht nur "sqlite".
PPS Ich musste die Abfrage mehrmals ausführen, bei jedem Durchlauf wird nur ein zusätzliches Duplikat gelöscht. Dies geschieht, weil die innere Auswahl nur die ID eines überschüssigen Titels für jede Kombination aus Titel, Künstler und Album zurückgibt.
Diese Antwort verwendet Python, um auf die Banshee-Datenbank zuzugreifen, und führt dann die SQL-Aktion aus, die donbicca mit einem Twist auflistet. Anstatt den SQL-Code viele Male ausführen zu müssen, habe ich Python gebeten, den SQL-Code über die Anzahl der im SQL-Code vorhandenen Instanzen zu schleifen. Sie müssen diesen Code nur einmal ausführen. Sie müssen Ihren Home-Pfad ersetzen (ersetzen Sie "/ home / JONDOE" durch Ihren Home-Pfad).
#!/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()
Andere Alternative, um duplicqtes song aus der Banshee SQLite-Datenbank zu entfernen:
cd /home/youruser/.config/banshee-1/
Schließen Sie zuerst Banshee! Sichern Sie Ihre DB:
cp banshee.db banshee.db.bck
Falls Sie SQLite nicht installiert haben:
sudo apt-get install sqlite3
Offene DB:
sqlite3 banshee.db
Geben Sie diese Abfrage ein:
DELETE FROM coretracks WHERE TrackID NOT IN (SELECT MIN(TrackID) FROM coretracks GROUP BY TitleLowered, ArtistID,AlbumID,Title);
Ausfahrt:
.q
Du bist fertig, öffne Banshee und überprüfe das Ergebnis.