답변:
그것은이다 알려진 버그 밴시의 최신 버전에서 수정되었습니다.
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 쿼리를 여러 번 실행해야했는데 각 실행시 하나의 추가 복제본 만 삭제됩니다. 내부 선택은 각 타이틀 / 아티스트 / 앨범 조합에 대해 하나의 잉여 트랙의 ID 만 제공하기 때문에 발생합니다.
이 답변은 파이썬을 사용하여 밴시 데이터베이스에 액세스 한 다음 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()
밴시 sqlite 데이터베이스에서 duplicqtes 노래를 제거하는 다른 대안 :
cd /home/youruser/.config/banshee-1/
밴시를 먼저 닫으십시오! DB를 백업하십시오.
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
밴시를 열고 결과를 확인하십시오.