Как удалить дубликаты треков из Banshee?
Как удалить дубликаты треков из Banshee?
Ответы:
Это известная ошибка , которая была исправлена в более новых версиях Banshee.
Вы можете использовать последнюю версию Banshee от Banshee PPA :
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 Используйте команду «sqlite3», чтобы открыть базу данных, а не просто «sqlite».
PPS Мне пришлось выполнить запрос несколько раз, каждый запуск удаляет только один дополнительный дубликат. Это происходит потому, что внутренний выбор возвращает только идентификатор одной избыточной дорожки для каждой комбинации Название / Исполнитель / Альбом.
Этот ответ использует 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()
Другая альтернатива, чтобы удалить duplicqtes песню из базы данных banshee sqlite:
cd /home/youruser/.config/banshee-1/
Закрыть Банши ПЕРВЫЙ! Сделайте резервную копию вашей БД:
cp banshee.db banshee.db.bck
Если у вас не установлен sqlite:
sudo apt-get install sqlite3
Открытая БД:
sqlite3 banshee.db
Введите этот запрос:
DELETE FROM coretracks WHERE TrackID NOT IN (SELECT MIN(TrackID) FROM coretracks GROUP BY TitleLowered, ArtistID,AlbumID,Title);
выход:
.q
Готово, откройте Banshee и проверьте результат.