Bagaimana cara menghapus trek duplikat dari Banshee?

Jawaban:

7

Ini adalah bug yang dikenal yang telah diperbaiki di versi Banshee yang lebih baru.

Anda dapat menggunakan versi terbaru Banshee dari Banshee PPA :

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

Bagaimana cara saya berlangganan bug?

Sid
sumber
1
Saya tidak mendapat kesan bahwa pertanyaan ini secara khusus merujuk pada bug itu. Anda dapat berakhir dengan trek duplikat di perpustakaan Anda bahkan jika Anda tidak pernah mengalami bug pengimporan / pemindaian ulang, dan saya tidak yakin dengan cara apa pun untuk menghapusnya secara otomatis sekarang karena opsi tidak lagi tersedia di ekstensi Mirage.
Michael Martin-Smucker
3

Temukan database sqlite3 (~ / .config / banshee-1 / banshee.db) dan jalankan kueri berikut:

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 Gunakan perintah "sqlite3" untuk membuka database, dan bukan hanya "sqlite".

PPS Saya harus menjalankan kueri beberapa kali, setiap kali menjalankan hanya menghapus satu duplikat tambahan. Ini terjadi karena pemilihan dalam hanya memberikan Anda kembali ID dari satu trek kelebihan untuk setiap kombinasi Judul / Artis / Album.

donbicca
sumber
2

Jawaban ini menggunakan python untuk mengakses database banshee, kemudian melakukan tindakan sql yang dicantumkan oleh donbicca dengan twist. Alih-alih harus menjalankan kode sql berkali-kali, saya telah meminta python untuk mengulang kode sql ke jumlah instance yang ada dalam kode sql. Anda hanya perlu menjalankan kode ini satu kali. Anda perlu mengganti jalur rumah Anda (ganti "/ home / JONDOE" dengan jalur rumah Anda).

#!/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()
branch.lizard
sumber
2

Alternatif lain untuk menghapus duplikat lagu dari database banshee sqlite:

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

Tutup Banshee PERTAMA! Cadangkan DB Anda:

cp banshee.db banshee.db.bck

Jika Anda tidak menginstal sqlite:

sudo apt-get install sqlite3

Buka DB:

sqlite3 banshee.db

Ketikkan kueri ini:

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

keluar:

.q

Anda sudah selesai, buka Banshee dan periksa hasilnya.

LG
sumber
Saya memiliki masalah serupa dan ini memperbaikinya dengan sempurna untuk saya. Terima kasih.
SomeBlueberries