Come rimuovere le tracce duplicate da Banshee?

19

Come rimuovere le tracce duplicate da Banshee?

    
posta ok comp 13.01.2011 - 02:10

4 risposte

7

È un bug noto che è stato corretto nelle versioni più recenti di Banshee.

Puoi usare l'ultima versione di Banshee da BPA Banshee :

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

Come mi iscrivo a un bug?

    
risposta data Sid 13.01.2011 - 02:29
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 Usa il comando "sqlite3" per aprire il database, e non solo "sqlite".

PPS Ho dovuto eseguire la query più volte, ogni esecuzione elimina solo un duplicato aggiuntivo. Ciò accade perché la selezione interna restituisce solo l'ID di una traccia in eccesso per ogni combinazione di titolo / artista / album.

    
risposta data donbicca 09.10.2011 - 08:34
2

Questa risposta utilizza python per accedere al database Banshee, quindi esegue 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 presenti nel codice sql. Hai solo bisogno di eseguire questo codice una volta. Devi sostituire il tuo percorso di casa (sostituisci "/ home / JONDOE" con il tuo percorso di casa).

#!/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()
    
risposta data branch.lizard 20.09.2013 - 03:52
2

Altra alternativa per rimuovere la canzone duplicqtes dal database sqlite di banshee:

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

Chiudi Banshee FIRST! Backup del DB:

cp banshee.db banshee.db.bck

Nel caso in cui non sia installato sqlite:

sudo apt-get install sqlite3

Apri DB:

sqlite3 banshee.db

Digita questa query:

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

exit:

.q

Il gioco è fatto, apri Banshee e controlla il risultato.

    
risposta data L. G. 31.10.2013 - 00:14

Leggi altre domande sui tag