Làm cách nào để xóa các bản nhạc trùng lặp khỏi Banshee?


Câu trả lời:


7

Đây là một lỗi đã biết đã được sửa trong các phiên bản mới hơn của Banshee.

Bạn có thể sử dụng phiên bản mới nhất của Banshee từ Banshee PPA :

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

Làm thế nào để tôi đăng ký một lỗi?


1
Tôi không có ấn tượng rằng câu hỏi này đặc biệt đề cập đến lỗi đó. Bạn có thể kết thúc với các bản nhạc trùng lặp trong thư viện của mình ngay cả khi bạn không bao giờ gặp phải lỗi nhập / quét lại đó và tôi không chắc chắn có cách nào để tự động xóa chúng ngay bây giờ vì tùy chọn này không còn khả dụng trong tiện ích mở rộng Mirage.
Michael Martin-Smucker

3

Xác định vị trí cơ sở dữ liệu sqlite3 (~ / .config / banshee-1 / banshee.db) và chạy truy vấn sau:

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 Sử dụng lệnh "sqlite3" để mở cơ sở dữ liệu và không chỉ "sqlite".

PPS Tôi đã phải chạy truy vấn nhiều lần, mỗi lần chạy chỉ xóa một bản sao bổ sung. Điều này xảy ra vì lựa chọn bên trong chỉ cung cấp cho bạn ID của một bản nhạc dư cho mỗi kết hợp Tiêu đề / Nghệ sĩ / Album.


2

Câu trả lời này sử dụng python để truy cập cơ sở dữ liệu banshee, sau đó thực hiện hành động sql mà donbicca liệt kê với một twist. Thay vì phải chạy mã sql nhiều lần, tôi đã yêu cầu python lặp mã sql qua số lượng phiên bản tồn tại trong mã sql. Bạn chỉ cần chạy mã này một lần. Bạn cần thay thế đường dẫn nhà của bạn (thay thế "/ home / JONDOE" bằng đường dẫn nhà của bạn).

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

Cách khác để xóa bài hát trùng lặp khỏi cơ sở dữ liệu banshee sqlite:

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

Đóng Banshee ĐẦU TIÊN! Sao lưu DB của bạn:

cp banshee.db banshee.db.bck

Trong trường hợp bạn chưa cài đặt sqlite:

sudo apt-get install sqlite3

Mở DB:

sqlite3 banshee.db

Nhập truy vấn này:

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

lối thoát hiểm:

.q

Bạn đã hoàn tất, mở Banshee và kiểm tra kết quả.


Tôi đã có một vấn đề tương tự và điều này đã khắc phục nó hoàn hảo cho tôi. Cảm ơn.
Một số loại trái cây
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.