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


답변:


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.