Листинг и удаление альбомов со слишком маленьким битрейтом аудио

3

Я убираю свою музыкальную библиотеку и зациклился на том, чтобы избавиться от тысяч альбомов с битрейтом и 320 кбит / с, которые собирались там годами. Проверка отдельных файлов на битрейт и удаление всей папки вручную - это очень утомительно. Может быть, кто-то здесь может придумать какую-то идею, которая поможет мне с очисткой? Я хотел бы иметь после этого только MP3s 320kbps и flacs. Спасибо заранее!

    
задан 108592 29.09.2014 в 17:47
источник

2 ответа

3

Вот подход оболочки. Он удалит любые каталоги, которые не содержат .mp3 файлов с битрейтом > = 320 кбит / с:

find /path/to/Music -type d -print0 | 
    while IFS= read -r -d '' dir; do 
     mp3=$(find "$dir" -type f -iname '*.mp3' | head -n 1); 
     [ -e "$mp3" ] && [[ $(mp3info -x "$mp3" | grep -oP '\d+(?=\s*kbps)') -lt 320 ]] && 
            rm -rf "$(dirname "$mp3")"; 
    done

Примечания

  • Это приведет к удалению любых каталогов, содержащих хотя бы один mp3-файл с битрейтом меньше 320. Если в том же каталоге есть правильный файл с правильным битрейтом, он будет удален как Что ж. Этот подход предполагает, что все файлы в каталоге имеют одинаковый битрейт.

  • Это пропустит файлы с переменным битрейтом.

  • Он должен работать с любым типом имени файла, в том числе с пробелами, символами новой строки или даже обратными косыми чертами.

  • Вам может потребоваться установить mp3info : sudo apt-get install mp3info

  • Сначала запустите его в тестовом каталоге.

Объяснение

  • find /path/to/Music -type d -print0 : найти все каталоги в /path/to/Music и распечатать их, разделенные нулевой строкой. Это необходимо для работы со странными именами файлов.

  • while IFS= read -r -d '' dir; do : просмотрите каждый из результатов find , сохранив их в переменной $dir .

  • mp3=$(find "$dir" -type f -iname '*.mp3' | head -n 1); : сохранить имя первого mp3-файла в этом каталоге как $mp3 .

  • [ -e "$mp3" ] : если этот файл существует. Это необходимо для пропусков каталогов без mp3-файлов.

  • [[ $(mp3info -x "$mp3" | grep -oP '\d+(?=\s*kbps)') -lt 320 ]] : это проверяет битрейт $mp3 . Он работает mp3info , greps битрейт и проверяет, меньше ли оно 320 .

  • rm -rf "$(dirname "$mp3")"; : удалить каталог, содержащий mp3-файл. Это будет выполняться только в том случае, если его битрейт меньше желаемого.

ответ дан terdon 29.09.2014 в 20:55
источник
2

Из комментария DavidFoerster я бы использовал Banshee.

Импортируйте все медиафайлы из требуемых (или даже целых разделов) папки, перейдя в media - > import media и выберите папки.

После того как все ваши медиа были импортированы, щелкните правой кнопкой мыши на панели столбцов (показано ниже на скриншоте) и выберите Bitrate . Затем щелкните по имени столбца, чтобы заказать этот столбец.

Затем вы можете выбрать желаемый бит (в вашем случае 320), нажмите Shift и нажмите последнюю песню. Затем щелкните правой кнопкой мыши на выбранных песнях и выберите Delete from Drive .

    

ответ дан Parto 29.09.2014 в 18:27