Як видалити повторювані доріжки з 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()
Інша альтернатива для видалення дублікатів пісні з бази даних banshee sqlite:
cd /home/youruser/.config/banshee-1/
Закрийте Banshee ПЕРШИЙ! Резервне копіювання вашої БД:
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 і перевірте результат.