如何从 Banshee 中删除重复的曲目?

如何从 Banshee 中删除重复的曲目?

如何从 Banshee 中删除重复的曲目?

答案1

这是一个已知的错误该问题已在 Banshee 的新版本中得到修复。

您可以使用最新版本的 BansheeBanshee PPA

sudo add-apt-repository ppa:banshee-team/ppa
sudo apt-get update && sudo apt-get upgrade

我如何订阅 Bug?

答案2

找到 sqlite3 数据库 (~/.config/banshee-1/banshee.db) 并运行以下查询:

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 使用命令“sqlite3”打开数据库,而不仅仅是“sqlite”。

PPS 我不得不多次运行查询,每次运行只会删除一个额外的重复项。发生这种情况是因为内部选择只会为每个标题/艺术家/专辑组合返回一个剩余曲目的 ID。

答案3

此答案使用 python 访问 banshee 数据库,然后执行 donbicca 列出的 SQL 操作,但略有不同。我无需多次运行 SQL 代码,而是要求 python 循环 SQL 代码以遍历 SQL 代码中存在的实例数。您只需运行此代码一次。您需要替换您的主路径(将“/home/JONDOE”替换为您的主路径)。

#!/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()

答案4

从 banshee sqlite 数据库中删除重复歌曲的其他方法:

cd /home/youruser/.config/banshee-1/

首先关闭 Banshee!备份您的数据库:

cp banshee.db banshee.db.bck

如果你没有安装 sqlite:

sudo apt-get install sqlite3

打开数据库:

sqlite3 banshee.db

输入此查询:

DELETE FROM coretracks WHERE TrackID NOT IN (SELECT MIN(TrackID) FROM coretracks GROUP BY TitleLowered, ArtistID,AlbumID,Title);

出口:

.q

完成后,打开 Banshee 并检查结果。

相关内容