Как удалить повторяющиеся треки из Banshee?

19

Как удалить повторяющиеся треки из Banshee?

    
задан ok comp 13.01.2011 в 01:10
источник

4 ответа

7

Это известная ошибка , исправленная в более новых версиях Banshee.

Вы можете использовать последнюю версию Banshee из Банши PPA :

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

Как подписаться на ошибку?

    
ответ дан Sid 13.01.2011 в 01:29
источник
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 Используйте команду «sqlite3», чтобы открыть базу данных, а не только «sqlite».

PPS Мне пришлось запускать запрос несколько раз, каждый запуск удаляет только один дубликат. Это происходит потому, что внутренний выбор только возвращает вам идентификатор одного избыточного трека для каждой композиции Title / Artist / Album.     

ответ дан donbicca 09.10.2011 в 06:34
2

В этом ответе используется python для доступа к базе данных banshee, а затем выполните действие sql, которое списки donbicca перечислены с помощью твиста. Вместо того, чтобы многократно запускать код 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()
    
ответ дан branch.lizard 20.09.2013 в 01:52
2

Другая альтернатива для удаления песни duplicqtes из базы данных sqlite из banshee:

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

Закрыть Banshee FIRST! Резервное копирование базы данных:

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

Вы закончили, откройте Banshee и проверьте результат.

    
ответ дан L. G. 30.10.2013 в 23:14