Доброго времени суток! OpenSuse 12.2. Есть флешка, на ней около 20 гб mp3 файлов, многие повторяются в разных папках. То-есть, произведение одного и того же исполнителя с таким же названием (но, возможно, с разным битрейтом и т.д.) может быть в двух и более папках. Как можно, кроме как вручную, избавиться от повторов имён файлов (наверное, всё-таки, это не будет дубликатами)?
Одинаковые имена файлов
Если уж совсем «по-правильному», то нужно анализировать информацию в метаданных и на её основе принимать решение об удалении дупликатов.
анализировать информацию в метаданных
Разумеется, это наиболее верное решение, а как это сделать?
Спасибо, я попробую... Особое желание имею поработать с find-ом... O:) А nepomuk тут не помощник?
А nepomuk тут не помощник?
Возможно, но это «микроскоп», работать с которым это надо ещё уметь :(
Ну что ж, начинаю осваивать скриптописание... *DONT_KNOW*
Спасибо, указали нужное направление... :)
Интересная задачка :)
Решение на Python:
#!/usr/bin/env python
#_*_coding: utf-8_*_
import sys, os
from mutagen.mp3 import MP3
if len(sys.argv) == 1:
path = '.'
else:
path = sys.argv[1]
dirTree = os.walk(path)
copyDir = os.path.join(os.path.abspath(path), 'copies')
if not os.path.exists(copyDir):
os.mkdir(copyDir)
d = {}
for dirPath, dirNames, Files in dirTree:
if os.path.basename(copyDir) in dirNames:
dirNames.remove(os.path.basename(copyDir))
for File in Files:
if File[-3:] == 'mp3':
FullPath = os.path.join(os.path.abspath(dirPath), File)
audio = MP3(FullPath)
name = str(audio['TIT2'])
author = str(audio['TPE1'])
if name in d and author == d[name]:
os.rename(FullPath, os.path.join(copyDir, File))
print ("File ->%s<- was moved" %File)
else:
d[name] = author
Нужен модуль mutagen, в Убунте находится в пакете python-mutagen.
Скрипт нужно закинуть в верхний каталог муз. библиотеки, передача пути в параметрах пока не работает.
Программа создаёт директорию copies, куда перемещает все дубликаты. Критерии отбора - совпадение названия произведения и автора одновременно.
Критерии отбора - совпадение названия произведения и автора одновременно.
По md5summ проверку не мешало бы сделать :-)
По md5summ проверку не мешало бы сделать :-)
Но одно и то же произведение может содержаться в разных файлах. Или это на тот случай, если метаданные не совпадают, а файлы на самом деле одинаковые?
Или это на тот случай, если метаданные не совпадают, а файлы на самом деле одинаковые?
Именно так и есть :-)
Да легко! Но попозже, времени нет...
Такое возможно, если по md5sum проверять не весь файл (частью которого метаданные тоже являются), а только непосредственно звуковой поток.метаданные не совпадают, а файлы на самом деле одинаковые?
как вариант: [эх... чувствую сейчас меня закидают гнилыми фруктами]
можно с помощью easytag(гуёвая юзер-френдли тулза) в полу-автоматическом режиме раскидать по папкам/исполнителям, а потом по несколько папок за раз обрабатывать и удалять копии...
ИМХО этот вариант лучше всего подходит, если теги есть, но они не совсем в порядке. т.е. для сортировки помоек понатыренных из разных мест...
Такое возможно, если по md5sum проверять не весь файл (частью которого метаданные тоже являются), а только непосредственно звуковой поток.
суммирование спасёт только если файлы и правда одни и теже...
а вот если битрейт разный или если это просто файло из совершенно разных источников, то это уж точно не поможет...
Ну да, тоже думаю от md5 толку будет мало...
Решение на Python:
Работает, спасибо! *DANCE* А по md5 сравнивать-ну, в моём случае задача не стоит, но если тему развивать.... может, кому-то и надо будет.