Banshee'den yinelenen parçalar nasıl kaldırılır?
Banshee'den yinelenen parçalar nasıl kaldırılır?
Yanıtlar:
Öyle bilinen bir hata Banshee yeni sürümlerinde giderilmiştir.
Sen den Banshee son sürümünü kullanabilirsiniz Banshee PPA :
sudo add-apt-repository ppa:banshee-team/ppa
sudo apt-get update && sudo apt-get upgrade
Sqlite3 veritabanını bulun (~ / .config / banshee-1 / banshee.db) 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 "sqlite" değil, "sqlite3" komutunu kullanın.
PPS Sorguyu birkaç kez çalıştırmak zorunda kaldım, her çalıştırma sadece bir ek kopyayı siler. Bunun nedeni, iç seçimin her Başlık / Sanatçı / Albüm kombinasyonu için yalnızca bir fazla parçanın kimliğini geri vermesidir.
Bu cevap banshee veritabanına erişmek için python kullanır, sonra donbicca'nın bir bükülme ile listelediği sql eylemini gerçekleştirir. Birçok kez sql kodunu çalıştırmak zorunda kalmadan, sql kodunda bulunan örnek sayısı üzerinde sql kodunu döngü için python sordum. Bu kodu yalnızca bir kez çalıştırmanız gerekir. Ev yolunuzu değiştirmeniz gerekir ("/ home / JONDOE" yerine ev yolunuzu yazın).
#!/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()
Banshee sqlite veritabanından duplicqtes şarkı kaldırmak için diğer bir alternatif:
cd /home/youruser/.config/banshee-1/
İlk Banshee kapatın! DB'nizi yedekleyin:
cp banshee.db banshee.db.bck
Yüklü sqlite yoksa:
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);
çıkış:
.q
İşiniz bitti, Banshee'yi açın ve sonucu kontrol edin.