web-dev-qa-db-fra.com

Comment supprimer les pistes en double de Banshee?

Comment supprimer les pistes en double de Banshee?

19
ok comp

C'est n bug conn qui a été corrigé dans les nouvelles versions de Banshee.

Vous pouvez utiliser la dernière version de Banshee à partir du Banshee PPA :

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

Comment puis-je m'abonner à un bogue?

7
Sid

Recherchez la base de données sqlite3 (~/.config/banshee-1/banshee.db) et exécutez la requête suivante:

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 Utilisez la commande "sqlite3" pour ouvrir la base de données, et pas seulement "sqlite".

PPS, j'ai dû exécuter la requête plusieurs fois, chaque exécution ne supprimant qu'un seul duplicata supplémentaire. Cela est dû au fait que la sélection interne ne vous renvoie l’ID d’une piste excédentaire que pour chaque combinaison titre/artiste/album.

3
donbicca

Cette réponse utilise python pour accéder à la base de données Banshee, puis exécute l'action SQL que Donbicca répertorie avec une torsion. Au lieu d'avoir à exécuter le code SQL plusieurs fois, j'ai demandé à python de boucler le code SQL sur le nombre d'instances existant dans le code SQL. Vous devez seulement exécuter ce code une fois. Vous devez remplacer votre chemin personnel (remplacez "/ home/JONDOE" par votre chemin personnel).

#!/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
branch.lizard

Autre alternative pour supprimer la chanson duplicqtes de la base de données sqlite de banshee:

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

Fermez Banshee FIRST! Sauvegardez votre base de données:

cp banshee.db banshee.db.bck

Si vous n'avez pas installé sqlite:

Sudo apt-get install sqlite3

DB ouvert:

sqlite3 banshee.db

Tapez cette requête:

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

sortie:

.q

Vous avez terminé, ouvrez Banshee et vérifiez le résultat.

2
L. G.