Wie entferne ich doppelte Tracks von Banshee?

Antworten:

7

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

Wie abonniere ich einen Fehler?

Sid
quelle
1
Ich hatte nicht den Eindruck, dass sich diese Frage speziell auf diesen Fehler bezog. Sie können doppelte Spuren in Ihrer Bibliothek finden, selbst wenn Sie nie auf diesen Fehler beim Importieren / erneuten Scannen stoßen, und ich bin mir nicht sicher, wie Sie diese automatisch entfernen können, da die Option in der Mirage-Erweiterung nicht mehr verfügbar ist.
Michael Martin-Smucker
3

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.

donbicca
quelle
2

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()
branch.lizard
quelle
2

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.

LG
quelle
Ich hatte ein ähnliches Problem und das hat es perfekt für mich behoben. Vielen Dank.
MehrereBlueberries