วิธีลบเพลงที่ซ้ำกันออกจาก Banshee


19

วิธีลบเพลงที่ซ้ำกันออกจาก Banshee


นอกจากนี้โปรดดูหัวข้อนี้: askubuntu.com/questions/4323/how-can-i-find-duplicate-songs
belacqua

ถ้าฉันพูดแทร็คซ้ำ 1,00 แทร็กฉันต้องใช้คำสั่งนี้ 1,000 ครั้ง?

คำตอบ:


7

มันเป็นข้อผิดพลาดที่รู้จักที่ได้รับการแก้ไขใน Banshee เวอร์ชั่นใหม่

คุณสามารถใช้ Banshee เวอร์ชันล่าสุดได้จากBanshee PPA :

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

ฉันจะสมัครเป็นสมาชิกบั๊กได้อย่างไร


1
ฉันไม่ได้รู้สึกว่าคำถามนี้อ้างถึงข้อผิดพลาดนั้นโดยเฉพาะ คุณสามารถจบด้วยแทร็กที่ซ้ำกันในไลบรารีของคุณแม้ว่าคุณจะไม่เคยพบกับข้อผิดพลาดในการนำเข้า / การสแกนซ้ำและฉันไม่แน่ใจว่าจะลบวิธีเหล่านั้นโดยอัตโนมัติได้อย่างไรในขณะนี้
Michael Martin-Smucker

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


2

คำตอบนี้ใช้ 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()

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 แล้วตรวจสอบผลลัพธ์


ฉันมีปัญหาที่คล้ายกันและสิ่งนี้แก้ไขได้อย่างสมบูรณ์แบบสำหรับฉัน ขอบคุณ
ManyBlueberries
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.