Bansheeから重複したトラックを削除する方法は?


回答:


7

これは Bansheeの新しいバージョンで修正された既知のバグです。

Banshee PPAからBansheeの最新バージョンを使用できます。

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

バグを購読するにはどうすればよいですか?


1
私は、この質問がそのバグに具体的に言及しているという印象を受けていませんでした。インポート/再スキャンのバグに遭遇したことがない場合でも、ライブラリ内のトラックが重複する可能性があります。Mirage拡張機能でこのオプションが使用できなくなったため、自動的にトラックを削除する方法はわかりません。
マイケル・マーティン・スマッカー

3

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のみが返されるためです。


2

この回答では、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()

2

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を開いて結果を確認します。


私は同様の問題を抱えていたので、これで完全に修正されました。ありがとう。
複数のブルーベリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.