Видео ролики бесплатно онлайн

Смотреть русский видео

Официальный сайт interaktiveboard 24/7/365

Смотреть видео бесплатно

Daria 11.11.2009 07:07

Скрипты на bashРазрезаем lossless на части

Мой первый бэшскрипт.

Мне очень нравится Амарок, и очень нравится lossless формат FLAC. В главной медиатеке русского сегмента сети lossless контент в основном встречается в виде одного большого файла в формате MAC/WavePack/FLAC и файла разметки CUE. Меня этот подход к организации собственной медиатеки крайне не устраивает, я хочу иметь каждый трек отдельным файлом. С помощью google я нашла решение, этим правда всё не ограничилось, я пришила свои рюшечки и оборочки.

Скрипт рассчитан для использования в nautilus, для чего его стоит скопировать в директорию ~/.gnome2/nautilus-scripts/ пользователя и поставить executable bit.

$ cp Имя_Скрипта ~/.gnome2/nautilus-scripts/
$ chmod +x ~/.gnome2/nautilus-scripts/Имя_Скрипта


скрипты для наутилуса такие скрипты

Конечно же, скриптом можно прекрасно пользоваться и просто через консоль. Это добавит некоторое количество пёстрых и весёлых строк используемому терминалу.

Сценарий использования выглядит так: в директории с lossless и CUE файлами запускается скрипт, он дробит большой lossless на маленькие и проставляет теги, счастливый пользователь продолжает делать свои дела, а позже оповещается по завершению работы скрипта ненавязчивым попапом.

дробление прошло успешно, ура!

Для того чтобы это всё заработало, нам понадобится установить следующие пакеты:
cuetools, shntool, flac, wavpack, mac, libnotify-bin, enca. Я использую Ubuntu, и сделала бы это вот так:

$ sudo apt-get install cuetools shntool flac wavpack libnotify-bin enca


к сожалению Monkey's Audio Codec не доступен просто так из репозиториев, но можно использовать PPA, готовый deb пакет сомнительного произхождения или компилировать самим.

а вот, собственно, моё сокровище и листинг:

  1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/bin/bash
#
# расчленяет огромный lossless файл на FLAC члены по меткам треков из CUE
# использование: запустить в той директории, где хранятся CUE и lossless файл
#

# немножко цвета
RED='\e<1;31m'
GREEN='\e<1;32m'
BLUE='\e<1;34m'
NC='\e<0m' # отмена цвета

INPUT=${PWD##*/} # нормальные люди называют папку именем исполнителя/альбома

# функция оповещает об успехе последней операции, и при отсутствие его,
# произносится заклинание Avada Kedavra, затея умирает с правильным exit status
success(){
if (($1))
then
# отличное место дабы прикручивать логи вроде echo $INPUT >> fail.log
echo -e "Bad news, Harry, ${BLUE}$2${NC} goes ${RED}wrong!${NC} "
notify-send --icon=gtk-no "Fail" "at $2"
exit $1
fi
echo -e "Harry, at ${BLUE}$2${NC} is ${GREEN}all ok!${NC} "
}

# несколько пустых тэгов, ничего особенного
GENRE=""
DATE=""

# найдёт CUE файл разметки
CUEFILE=$(find . -maxdepth 1 -iname "*.cue" | head -n 1)
echo -e "${BLUE}$CUEFILE${NC} "

# перекодирует CUE файл в UTF8
enconv -L ru -x UTF8 "$CUEFILE"
success $? enconv

# грязный хак чтоб получить жанр и год из CUE файла. а всё потому,
# что cuetag.sh (а точнее cueprint) не работает должным образом,
# а мейнтермеру всё равно. такие дела.
parsecue(){
GENRE=$(head -n 6 "$CUEFILE" | grep -i GENRE | sed "s/REM GENRE //i" )
DATE=$(head -n 6 "$CUEFILE" | grep -i "DATE" | sed "s/REM DATE //i" )
}

# найдём и запомним APE/FLAC/WV файл, это самый толстый
BIGONE=$(ls -S | grep -i --regex="\.ape\|\.flac\|\.wv" | head -n 1)
if < -n "$BIGONE" >
then
# распилим его на отдельные FLAC части
cuebreakpoints "$CUEFILE" | shnsplit -o flac "$BIGONE"
success $? shnsplit
else
# файла нет, плохие новости
notify-send --icon "gtk-no" "No Audiofile to Split" "${PWD##*/}"
exit 1
fi

# проставим тэги из CUE в новые FLAC части, магия.
cuetag "$CUEFILE" split-track*.flac ;
success $? cuetag

# напарсим не хватающих тэгов жанра и года выпуска из CUE файла.
parsecue
success $? parsecue

# приберёмся
rm -f "$BIGONE"
mkdir .log
mv *?.log .log
mv *.cue .log
success $? cleanup


# впишем тэги и приведём имена файлов нарезанных частей в человеческий вид
for SLICE in split-track*.flac; do
metaflac --set-tag "GENRE=$GENRE" --set-tag "DATE=$DATE" "$SLICE"
ARTIST=$(metaflac "$SLICE" --show-tag=ARTIST | sed s/.*=//g)
TITLE=$(metaflac "$SLICE" --show-tag=TITLE | sed s/.*=//g)
TRACKNUMBER=$(metaflac "$SLICE" --show-tag=TRACKNUMBER | sed s/.*=//g)
mv "$SLICE" "`printf %02g $TRACKNUMBER` - $ARTIST - $TITLE.flac"
done
success $? rename

# вкусняшки для глаз: найдём все маленькие картинки и сохраним их имена в /tmp/flac_icons
COUNT=$(find . -size -300k -iname "*.png" -o -size -300k -name "*.jpg" | tee /tmp/flac_icons | wc -l)
if (($COUNT))
then
# возможно есть изображение с названием front? возьмём его на заметку
ICONfile=$(grep -m 1 -i front /tmp/flac_icons)
# нет ?
if (($?))
then
# тогда возьмём случайную
ICONfile=$(cat /tmp/flac_icons | awk NR==$((($RANDOM % $COUNT)+1)) )
fi
# добавим путь
ICON=$PWD/${ICONfile#*/}
# что, совсем ни одной нету? в эфир пойдёт стандартный символ
else
ICON=gtk-yes
fi

# хорошо постарались, о чём и напомним.
notify-send --icon "$ICON" "Ready" "$INPUT"

exit 0



Всяческие предложения и мнения приветствуются, всё-таки это мой первый скрипт.
ps: я знаю, что не так давно об этом уже писали.


Тэги: cuetools flac lossless mac shntool split wavpack
+ 13 -
Похожие Поделиться

pioner14 11.11.2009 10:36 #
+ 1 -
Умница! Хорошая работа.
diskin 11.11.2009 10:45 #
+ 1 -
Дарья, привет! :).
Все отлично, только "succses" напиши правильно, а то потом сама же и ошибешься.
Ну и произносится все же "баш": http://inogolo.com/pronunciation/Bash
Daria 13.11.2009 06:06 #
+ 0 -
successfully fixed!
а бэш мне больше нравится.
snowemo 11.11.2009 11:54 #
+ 0 -
А ffmpeg из svn вроде уже умеет monkey audio..
ner_uto 11.11.2009 15:34 #
+ 1 -
Доставили комменты в скрипте и альт первой пикчуры.

Молодец-то молодец... А у тебя что, немецкий язык стоит? Щ_щ
Daria 11.11.2009 20:53 #
+ 0 -
Ну, я немка, и живу в Германии.
xtavras 11.11.2009 23:28 #
+ 0 -
Какой город?
Daria 12.11.2009 13:16 #
+ 0 -
Вертер
dammer 12.11.2009 23:05 #
+ 1 -
в убунте 9.10 надо поставить ещё enca иначе enconv не найдёт, а за скрипт спасиба!
Daria 13.11.2009 05:52 #
+ 0 -
спасибо, и верно замечено! совсем забыла про эту приятную мелочь.
ner_uto 13.11.2009 08:42 #
+ 0 -
Ты отвечай на комментарии пользователей, а не на пост, а то могут ответов не заметить:) Нажимай сначала "Ответить", а потом уже пиши ответ.
Многие, кстати, так ошибаются, при ответе на последний комментарий.
Daria 14.11.2009 00:24 #
+ 0 -
да, я вроде поняла уже фишку.
ZogG 22.11.2009 08:30 #
+ 0 -
cue2tracks всегда юзал

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн