Come rimuovere tracce duplicate da Banshee?


Risposte:


7

È 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

Come posso iscrivermi a un bug?


1
Non avevo l'impressione che questa domanda si riferisse specificamente a quel bug. Puoi finire con tracce duplicate nella tua libreria anche se non ti imbatti mai in quel bug di importazione / riscansione e non sono sicuro di come rimuoverle automaticamente ora che l'opzione non è più disponibile nell'estensione Mirage.
Michael Martin-Smucker,

3

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.


2

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()

2

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.


Ho avuto un problema simile e questo mi ha risolto perfettamente. Grazie.
ManyBlueberries,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.