Как удалить дубликаты треков из Banshee?

19

Как удалить дубликаты треков из Banshee?

хорошо, комп
источник
Также, пожалуйста, смотрите эту ветку
belacqua
ооо, если я скажу 1,00 дубликатов треков, мне нужно выполнить эту команду 1000 раз?

Ответы:

7

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

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

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

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

Sid
источник
1
У меня не было впечатления, что этот вопрос конкретно относится к этой ошибке. Вы можете получить дубликаты дорожек в своей библиотеке, даже если вы никогда не сталкивались с этой ошибкой импорта / повторного сканирования, и я не уверен, что смогу автоматически удалить их сейчас, когда эта опция больше не доступна в расширении Mirage.
Майкл Мартин-Смукер
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 Мне пришлось выполнить запрос несколько раз, каждый запуск удаляет только один дополнительный дубликат. Это происходит потому, что внутренний выбор возвращает только идентификатор одной избыточной дорожки для каждой комбинации Название / Исполнитель / Альбом.

donbicca
источник
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
источник
2

Другая альтернатива, чтобы удалить 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 и проверьте результат.

LG
источник
У меня была похожая проблема, и это исправило ее для меня. Благодарю.
Несколько ягод черники