The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Скрипт для перекодирования коллекции музыкальных файлов"
Отправлено auto_tips, 28-Дек-08 22:35 
Понадобилось мне однажды перекодировать некоторое количество музыкальных композиций из формата FLAC/APE/WAV в MP3.

encode_list.txt - содержит полные пути до директорий с исходными файлами (путь не должен оканчиватся на "\")

В системе должны быть установлены утилиты flac, mac, lame.

Приветствуется улучшенная версия скрипта. Хотя лично мне он понадобился всего один раз...
но после небольших изменений он может стать еще полезнее, в некоторых случаях.


#!/bin/bash

# шаманское заклинание
IFS="
";
# конец шаманского заклинания

# чего и куда класть
ENCODE_PATH=`pwd`;
ENCODE_LIST="encode_list.txt"

for i in `cat $ENCODE_LIST`; do
    FLAC_count=`find "$i" -name "*.flac" | wc -l`
    APE_count=`find "$i" -name "*.ape" | wc -l`
    WAV_count=`find "$i" -name "*.wav" | wc -l`
    echo "dir = '$i'";
    if [ $WAV_count -lt $FLAC_count ] && [ $APE_count -lt $FLAC_count ]
    then
    echo "FLAC detected";
    for j in "$i"/*.flac; do
        out_name=`basename ${j/.flac/.mp3}`;
        out_dir=`basename $i`
        out_full="$ENCODE_PATH/$out_dir/$out_name";
        mkdir "$ENCODE_PATH/$out_dir";
        echo `date +"%T %y/%m/%d"` encoding "'"$out_name"'" >> $ENCODE_PATH/$out_dir/encode.log;
        flac -d "$j" -o - | lame -ms -v -V0 -h - "$out_full"; #>> $ENCODE_PATH/$out_dir/encode.log 2>> $ENCODE_PATH/$out_dir/encode.log;
    done;
    elif [ $FLAC_count -lt $APE_count ] && [ $WAV_count -lt $APE_count ]
    then
    echo "APE detected";
    for j in "$i"/*.ape; do
        out_name=`basename ${j/.ape/.mp3}`;
        out_dir=`basename $i`
        out_full="$ENCODE_PATH/$out_dir/$out_name";
        mkdir "$ENCODE_PATH/$out_dir";
        echo `date +"%T %y/%m/%d"` encoding "'"$out_name"'" >> $ENCODE_PATH/$out_dir/encode.log;
        mac "$j" - -d | lame -ms -v -V0 -h - "$out_full"; #>> $ENCODE_PATH/$out_dir/encode.log 2>> $ENCODE_PATH/$out_dir/encode.log;
    done;
    else [ $FLAC_count -le $WAV_count ] && [ $APE_count -le $WAV_count ]
    echo "WAV detected";
    for j in "$i"/*.wav; do
        out_name=`basename ${j/.wav/.mp3}`;
        out_dir=`basename $i`
        out_full="$ENCODE_PATH/$out_dir/$out_name";
        mkdir "$ENCODE_PATH/$out_dir";
        echo `date +"%T %y/%m/%d"` encoding "'"$out_name"'" >> $ENCODE_PATH/$out_dir/encode.log;
        lame -ms -v -V0 -h "$j" "$out_full"; #>> $ENCODE_PATH/$out_dir/encode.log 2>> $ENCODE_PATH/$out_dir/encode.log;
    done;
    fi;
done


URL:
Обсуждается: http://www.opennet.ru/tips/info/1881.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру