Câu trả lời:
Đây là một lỗi đã biết đã được sửa trong các phiên bản mới hơn của Banshee.
Bạn có thể sử dụng phiên bản mới nhất của Banshee từ Banshee PPA :
sudo add-apt-repository ppa:banshee-team/ppa
sudo apt-get update && sudo apt-get upgrade
Xác định vị trí cơ sở dữ liệu sqlite3 (~ / .config / banshee-1 / banshee.db) và chạy truy vấn sau:
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 Sử dụng lệnh "sqlite3" để mở cơ sở dữ liệu và không chỉ "sqlite".
PPS Tôi đã phải chạy truy vấn nhiều lần, mỗi lần chạy chỉ xóa một bản sao bổ sung. Điều này xảy ra vì lựa chọn bên trong chỉ cung cấp cho bạn ID của một bản nhạc dư cho mỗi kết hợp Tiêu đề / Nghệ sĩ / Album.
Câu trả lời này sử dụng python để truy cập cơ sở dữ liệu banshee, sau đó thực hiện hành động sql mà donbicca liệt kê với một twist. Thay vì phải chạy mã sql nhiều lần, tôi đã yêu cầu python lặp mã sql qua số lượng phiên bản tồn tại trong mã sql. Bạn chỉ cần chạy mã này một lần. Bạn cần thay thế đường dẫn nhà của bạn (thay thế "/ home / JONDOE" bằng đường dẫn nhà của bạ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()
Cách khác để xóa bài hát trùng lặp khỏi cơ sở dữ liệu banshee sqlite:
cd /home/youruser/.config/banshee-1/
Đóng Banshee ĐẦU TIÊN! Sao lưu DB của bạn:
cp banshee.db banshee.db.bck
Trong trường hợp bạn chưa cài đặt sqlite:
sudo apt-get install sqlite3
Mở DB:
sqlite3 banshee.db
Nhập truy vấn này:
DELETE FROM coretracks WHERE TrackID NOT IN (SELECT MIN(TrackID) FROM coretracks GROUP BY TitleLowered, ArtistID,AlbumID,Title);
lối thoát hiểm:
.q
Bạn đã hoàn tất, mở Banshee và kiểm tra kết quả.