วิธีลบเพลงที่ซ้ำกันออกจาก 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 ฉันต้องเรียกใช้แบบสอบถามหลายครั้งแต่ละการเรียกใช้จะลบสำเนาที่ซ้ำกันหนึ่งรายการเท่านั้น สิ่งนี้เกิดขึ้นเนื่องจากตัวเลือกด้านในจะให้ ID ของแทร็กที่เกินหนึ่งแทร็กสำหรับชุดค่าผสมชื่อ / ศิลปิน / อัลบั้มแต่ละชุด
คำตอบนี้ใช้ python เพื่อเข้าถึงฐานข้อมูล banshee จากนั้นดำเนินการ sql ซึ่งแสดงรายการ donbicca ด้วยการบิด แทนที่จะต้องรันโค้ด sql หลายครั้งฉันได้ขอให้ไพ ธ อนวนลูปรหัส 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 แล้วตรวจสอบผลลัพธ์