¿Cómo eliminar pistas duplicadas de Banshee?

19

¿Cómo eliminar pistas duplicadas de Banshee?

    
pregunta ok comp 13.01.2011 - 01:10

4 respuestas

7

Es un error conocido que se ha corregido en las versiones más recientes de Banshee.

Puede usar la última versión de Banshee del Banshee PPA :

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

¿Cómo me suscribo a un error?

    
respondido por el Sid 13.01.2011 - 01:29
3

Localice la base de datos sqlite3 (~ / .config / banshee-1 / banshee.db) y ejecute la siguiente consulta:

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 Utilice el comando "sqlite3" para abrir la base de datos, y no solo "sqlite".

PPS Tuve que ejecutar la consulta varias veces, cada ejecución solo elimina un duplicado adicional. Esto sucede porque la selección interna solo le devuelve la ID de una pista excedente para cada combinación de Título / Artista / Álbum.

    
respondido por el donbicca 09.10.2011 - 06:34
2

Esta respuesta utiliza python para acceder a la base de datos de banshee, luego realiza la acción sql que donbianca lista con un giro. En lugar de tener que ejecutar el código sql muchas veces, le pedí a python que repitiera el código sql sobre el número de instancias que existen en el código sql. Solo necesita ejecutar este código una vez. Necesita reemplazar su ruta de inicio (reemplace "/ home / JONDOE" con su ruta de inicio).

#!/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()
    
respondido por el branch.lizard 20.09.2013 - 01:52
2

Otra alternativa para eliminar la canción de duplicqtes de la base de datos sqlite de banshee:

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

¡Cerrar Banshee PRIMERO! Haga una copia de seguridad de su base de datos:

cp banshee.db banshee.db.bck

En caso de que no tenga instalado sqlite:

sudo apt-get install sqlite3

Abrir base de datos:

sqlite3 banshee.db

Escribe esta consulta:

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

salir:

.q

Has terminado, abre Banshee y verifica el resultado.

    
respondido por el L. G. 30.10.2013 - 23:14

Lea otras preguntas en las etiquetas