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


Yanıtlar:


7

Ö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

Bir hataya nasıl abone olurum?


1
Bu sorunun özellikle bu hataya atıfta bulunduğu izlenimi altında değildim. Bu içe aktarma / yeniden tarama hatasıyla karşılaşmamış olsanız bile kitaplığınızdaki yinelenen parçalarla karşılaşabilirsiniz ve seçenek artık Mirage uzantısında mevcut olmadığından bunları otomatik olarak kaldırmanın hiçbir yolundan emin değilim.
Michael Martin-Smucker

3

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.


2

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()

2

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.


Benzer bir sorunum vardı ve bu benim için mükemmel bir şekilde düzeltildi. Teşekkürler.
Yabanmersini
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.