Як видалити повторювані доріжки з Banshee?


Відповіді:


7

Це відома помилка , яка була виправлена ​​в новіших версіях Banshee.

Ви можете використовувати останню версію Banshee з Banshee PPA :

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

Як підписатися на помилку?


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 Я повинен був запустити запит кілька разів, кожен запуск видаляє лише один додатковий дублікат. Це відбувається тому, що внутрішній вибір повертає лише ідентифікатор однієї надлишкової доріжки для кожної комбінації заголовка / виконавця / альбому.


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()

2

Інша альтернатива для видалення дублікатів пісні з бази даних 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 і перевірте результат.


У мене була подібна проблема, і це вирішило мене ідеально. Спасибі.
Кілька чорниць
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.