밴시에서 중복 트랙을 제거하는 방법?


답변:


7

그것은이다 알려진 버그 밴시의 최신 버전에서 수정되었습니다.

Banshee PPA 에서 최신 버전의 Banshee를 사용할 수 있습니다 .

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

버그를 어떻게 구독합니까?


1
나는이 질문이 그 버그를 구체적으로 언급하고 있다는 인상을받지 못했습니다. 가져 오기 / 재검색 버그가 발생하지 않아도 라이브러리에서 중복 된 트랙으로 끝날 수 있으며 Mirage 확장에서 더 이상 옵션을 사용할 수 없으므로 자동으로 제거 할 방법이 확실하지 않습니다.
Michael Martin-Smucker

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 쿼리를 여러 번 실행해야했는데 각 실행시 하나의 추가 복제본 만 삭제됩니다. 내부 선택은 각 타이틀 / 아티스트 / 앨범 조합에 대해 하나의 잉여 트랙의 ID 만 제공하기 때문에 발생합니다.


2

이 답변은 파이썬을 사용하여 밴시 데이터베이스에 액세스 한 다음 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()

2

밴시 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

밴시를 열고 결과를 확인하십시오.


나는 비슷한 문제가 있었고 이것이 나를 위해 완벽하게 고쳤다. 감사.
몇몇 블루 베리
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.