Jawaban:
Ini adalah bug yang dikenal yang telah diperbaiki di versi Banshee yang lebih baru.
Anda dapat menggunakan versi terbaru Banshee dari Banshee PPA :
sudo add-apt-repository ppa:banshee-team/ppa
sudo apt-get update && sudo apt-get upgrade
Temukan database sqlite3 (~ / .config / banshee-1 / banshee.db) dan jalankan kueri berikut:
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 Gunakan perintah "sqlite3" untuk membuka database, dan bukan hanya "sqlite".
PPS Saya harus menjalankan kueri beberapa kali, setiap kali menjalankan hanya menghapus satu duplikat tambahan. Ini terjadi karena pemilihan dalam hanya memberikan Anda kembali ID dari satu trek kelebihan untuk setiap kombinasi Judul / Artis / Album.
Jawaban ini menggunakan python untuk mengakses database banshee, kemudian melakukan tindakan sql yang dicantumkan oleh donbicca dengan twist. Alih-alih harus menjalankan kode sql berkali-kali, saya telah meminta python untuk mengulang kode sql ke jumlah instance yang ada dalam kode sql. Anda hanya perlu menjalankan kode ini satu kali. Anda perlu mengganti jalur rumah Anda (ganti "/ home / JONDOE" dengan jalur rumah Anda).
#!/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()
Alternatif lain untuk menghapus duplikat lagu dari database banshee sqlite:
cd /home/youruser/.config/banshee-1/
Tutup Banshee PERTAMA! Cadangkan DB Anda:
cp banshee.db banshee.db.bck
Jika Anda tidak menginstal sqlite:
sudo apt-get install sqlite3
Buka DB:
sqlite3 banshee.db
Ketikkan kueri ini:
DELETE FROM coretracks WHERE TrackID NOT IN (SELECT MIN(TrackID) FROM coretracks GROUP BY TitleLowered, ArtistID,AlbumID,Title);
keluar:
.q
Anda sudah selesai, buka Banshee dan periksa hasilnya.