Bansheeから重複したトラックを削除する方法は?
既知のバグ は、Bansheeの新しいバージョンで修正されています。
Banshee PPA からBansheeの最新バージョンを使用できます。
Sudo add-apt-repository ppa:banshee-team/ppa
Sudo apt-get update && Sudo apt-get upgrade
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「sqlite」だけでなく、「sqlite3」コマンドを使用してデータベースを開きます。
PPSクエリを数回実行する必要がありましたが、実行ごとに追加の重複が1つだけ削除されました。これは、内側の選択では、タイトル/アーティスト/アルバムの組み合わせごとに1つの余剰トラックのIDのみが返されるためです。
この回答では、pythonを使用してbansheeデータベースにアクセスし、donbiccaがひねりを加えてリストするsqlアクションを実行します。 sqlコードを何度も実行する代わりに、pythonにsqlコード内に存在するインスタンスの数にわたってsqlコードをループするように依頼しました。このコードを実行する必要があるのは1回だけです。ホームパスを置き換える必要があります(「/ 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()
Banshee sqliteデータベースから重複した曲を削除する他の方法:
cd /home/youruser/.config/banshee-1/
バンシーを最初に閉じます!データベースをバックアップします。
cp banshee.db banshee.db.bck
Sqliteがインストールされていない場合:
Sudo apt-get install sqlite3
オープンDB:
sqlite3 banshee.db
次のクエリを入力します。
DELETE FROM coretracks WHERE TrackID NOT IN (SELECT MIN(TrackID) FROM coretracks GROUP BY TitleLowered, ArtistID,AlbumID,Title);
出口:
.q
完了したら、Bansheeを開いて結果を確認します。