Nasıl Banshee gelen yinelenen parçaları çıkarmak için?

19

Banshee'deki yinelenen parçalar nasıl kaldırılır?

    
sordu ok comp 13.01.2011 02:10

4 cevap

7

Bu, Banshee'nin daha yeni sürümlerinde giderilen bilinen bir hatadır .

Banshee'nin en son sürümünü Banshee PPA :

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

Bir hataya nasıl abone olurum?

    
verilen cevap Sid 13.01.2011 02:29
3

sqlite3 veritabanını (~ / .config / banshee-1 / banshee.db) bulun ve aşağıdaki sorguyu çalıştırın:

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 Veritabanını açmak için "sqlite3" komutunu kullanın ve sadece "sqlite" değil.

PPS Sorguyu birkaç kez çalıştırmam gerekti, her çalıştırmada sadece bir tane daha yineleniyor. Bunun nedeni, iç seçimin her Başlık / Sanatçı / Albüm kombinasyonu için yalnızca bir artı izinin kimliğini geri vermesidir.

    
verilen cevap donbicca 09.10.2011 08:34
2

Bu cevap banshee veritabanına erişmek için python kullanır, ardından donbicca'nın bir twist ile listelediği sql işlemini gerçekleştirir. Sql kodunu birçok kez çalıştırmak zorunda kalmadan, sql kodunu sql kodunda var olan örneklerin sayısı üzerinden döngü için python'dan istedim. Bu kodu sadece bir kez çalıştırmanız yeterlidir. Ev yolunuzu değiştirmeniz gerekir ("/ home / JONDOE" ifadesini ev yolunuzla değiştirin).

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

banshee sqlite veritabanından duplicqtes şarkısını kaldırmak için diğer alternatif:

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

Banshee FIRST'ı kapatın! DB'nizi yedekleyin:

cp banshee.db banshee.db.bck

sqlite'in yüklü olmaması durumunda:

sudo apt-get install sqlite3

Açık DB:

sqlite3 banshee.db

Bu sorguyu yazın:

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

exit:

.q

İşin bitti, Banshee'yi aç ve sonucu kontrol et.

    
verilen cevap L. G. 31.10.2013 00:14

Etiketlerdeki diğer soruları oku