Jak usunąć zduplikowane ścieżki z Banshee?

Odpowiedzi:

7

Jest to znany błąd , który został naprawiony w nowszych wersjach Banshee.

Możesz użyć najnowszej wersji Banshee z PPA Banshee :

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

Jak zasubskrybować błąd?

Sid
źródło
1
Nie miałem wrażenia, że ​​to pytanie odnosiło się konkretnie do tego błędu. Możesz skończyć ze zduplikowanymi ścieżkami w swojej bibliotece, nawet jeśli nigdy nie napotkasz tego błędu importowania / ponownego skanowania, a ja nie jestem pewien, jak automatycznie je usunąć, skoro opcja nie jest już dostępna w rozszerzeniu Mirage.
Michael Martin-Smucker
3

Znajdź bazę danych sqlite3 (~ / .config / banshee-1 / banshee.db) i uruchom następujące zapytanie:

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 Użyj polecenia „sqlite3”, aby otworzyć bazę danych, a nie tylko „sqlite”.

PPS Musiałem uruchomić zapytanie kilka razy, każde uruchomienie usuwa tylko jeden dodatkowy duplikat. Dzieje się tak, ponieważ wewnętrzna selekcja zwraca tylko jeden identyfikator nadwyżki ścieżki dla każdej kombinacji Tytuł / Wykonawca / Album.

donbicca
źródło
2

Ta odpowiedź używa Pythona, aby uzyskać dostęp do bazy danych banshee, a następnie wykonać akcję sql, którą donbicca wymienia z niespodzianką. Zamiast wielokrotnie uruchamiać kod SQL, poprosiłem Pythona o zapętlenie kodu SQL o liczbę wystąpień w kodzie SQL. Musisz uruchomić ten kod tylko raz. Musisz zastąpić swoją ścieżkę domową (zastąp „/ home / JONDOE” swoją ścieżką domową).

#!/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
źródło
2

Inna alternatywa dla usunięcia piosenki duplicqtes z bazy danych banshee sqlite:

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

Zamknij Banshee PIERWSZE! Utwórz kopię zapasową bazy danych:

cp banshee.db banshee.db.bck

Jeśli nie masz zainstalowanego sqlite:

sudo apt-get install sqlite3

Otwórz DB:

sqlite3 banshee.db

Wpisz to zapytanie:

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

wyjście:

.q

Gotowe, otwórz Banshee i sprawdź wynik.

LG
źródło
Miałem podobny problem i to naprawiło go idealnie dla mnie. Dzięki.
Kilka jagód