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
);
#!/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 中得到修复。
您可以使用Banshee PPA中的最新版本的 Banshee :
如何订阅错误?
找到 sqlite3 数据库 (~/.config/banshee-1/banshee.db) 并运行以下查询:
PS 使用命令“sqlite3”打开数据库,而不仅仅是“sqlite”。
PPS 我不得不多次运行查询,每次运行只会删除一个额外的重复项。发生这种情况是因为内部选择只为您返回每个标题/艺术家/专辑组合的一个剩余曲目的 ID。
这个答案使用python访问banshee数据库,然后执行donbicca列出的sql操作。我不必多次运行 sql 代码,而是要求 python 在 sql 代码中存在的实例数上循环 sql 代码。您只需要运行此代码一次。您需要替换您的主路径(将“/home/JONDOE”替换为您的主路径)。
从 banshee sqlite 数据库中删除 duplicqtes 歌曲的其他替代方法:
首先关闭女妖!备份您的数据库:
如果您没有安装 sqlite:
打开数据库:
键入此查询:
出口:
大功告成,打开 Banshee 并检查结果。