12 июн. 2016 г.

Подготовка USB flash для использования в embedded device

Для использования USB flash в embedded устройствах необходимо создать старый добрый DOS раздел безо всяких GPT и fat32 primary раздел:
> /fdisk/sdx
* o (create a new empty DOS partition table)
* n (add a new partition) p
* t (change a partition type) 0c
* w (write table to disk and exit)
> mkfs.vfat -F 32 /dev/sdxN

И вуаля - можно использовать

7 дек. 2015 г.

Автостарт kodi в opensuse

Несмотря на то, что в wiki написано, как примитивно запустить kodi при старте системы - ничего не выходило:

  • в версии opensuse 12.1 отлично работал метод с модификацией inittab/autologin/xinitrc
  • в версии Leap 42.1 не заработал автологин и соответственно не заработал xinitrc

Решением стало удаление xdm(kdm/gdm)(или просто заблокировать сервис systemctl disable display-manager.service
), предоставление доступа к startx пользователю (добавить строку /usr/bin/Xorg                 root:root       4711 в /etc/permissions.local) (source) и запускаем

chkstat --system --set
(можно поставить права 4755)
иначе появляется ошибка

Fatal server error:
(EE) xf86OpenConsole: Cannot open virtual console

Создаем файл systemd сервиса, как описано на wiki и включаем его:

systemctl enable kodi.service

Вуаля - после перезагрузки автоматически стартует kodi без лишних окон приветствия.



21 июн. 2015 г.

Разбивка flac/ape файла по метаданным из cue в mp3

Стандартные авто магнитолы не поддерживают аудио flac формат, в следствии чего появилась необходимость конвертации домашней аудиотеки формата flac в mp3. Основываясь на предыдущем опыте был создан скрипт 
#!/bin/sh
usage()
{
echo "usage: splitcue <cuefile> [file_to_split]"
}
if [ $# -lt 1 ]; then
usage
exit 1
fi
CUE_FILE=$1
if [ -z $TMPDIR ]; then
TMPDIR="/tmp"
fi
NEW_CUE_FILE=$TMPDIR/list.cue
if [ ! -f "$CUE_FILE" ]; then
usage
exit 1
fi
FROMCP=`enca -e "$CUE_FILE"`
iconv -f "$FROMCP" -t UTF-8 "$CUE_FILE" > "$NEW_CUE_FILE" || cp -f "$CUE_FILE" "$NEW_CUE_FILE"
FLAC_FILE=$2
if [ ! -f "$FLAC_FILE" ]
then
FLAC_FILE=`grep 'FILE' "$NEW_CUE_FILE" | grep -e '\([^"]*\.[^"]*\)' -o`
fi
if [ ! -r "$FLAC_FILE" ]; then
usage
exit 1
fi
COVERS="Cover.jpg cover.jpg Folder.jpg folder.jpg Front.jpg Covers/Front.jpg Covers/Front00.jpg Covers/Front01.jpg"
for cover in $COVERS; do
if [ -r $cover ]; then
COVER=$cover;
break;
fi
done
shnsplit -O always -q -f "$NEW_CUE_FILE" -t "%n - %t" -o wav "$FLAC_FILE"
fields='COVER TITLE ALBUM TRACKNUMBER ARTIST GENRE YEAR'
GEN=`cueprint -t "%G" "$NEW_CUE_FILE"`
if [ -z "$GEN"]; then
GEN=`grep "REM GENRE" "$NEW_CUE_FILE" | sed -e 's/REM GENRE \("*\)\([^"]*\)\("*\)/\2/g'`
fi
PERF=`cueprint -t "%P" -n 1 "$NEW_CUE_FILE"`
if [ -z "$PERF" ]; then
PERF=`cueprint -t "%P" "$NEW_CUE_FILE"`
fi
YEAR=`grep "REM DATE" "$NEW_CUE_FILE" | sed -e 's/REM DATE \(.*\)/\1/g'`
cueconvert -i cue -o cue "$NEW_CUE_FILE" "$NEW_CUE_FILE"
NUMBER=`cueprint -d "%N" "$NEW_CUE_FILE"`
for((I=1;I<=NUMBER;I++));
do
CONV_FILE=`printf "%02d - " $I``cueprint -n $I -t '%t' "$NEW_CUE_FILE"`".wav"
CONV_FILE=`echo "$CONV_FILE" | sed -r 's/\.\.wav/\.wav/g' | sed -r 's/\//-/g'`
TITLE='%t'
ALBUM='%T'
ARTIST='%p'
COMMENT='%c'
GENRE='%g'
TRACKNUMBER='%n'
KEYS="/usr/bin/lame -S -q 1 -b 320 --cbr --id3v2-only"
for field in $fields; do
value=""
for conv in `eval echo \\$$field`; do
if [ $field = 'GENRE' -a -n "$GEN" ]; then
value=$GEN
break
elif [ $field = 'ARTIST' -a -n "$PERF" ]; then
value=$PERF
break
elif [ $field = 'YEAR' -a -n "$YEAR" ]; then
value=$YEAR
break
elif [ $field = 'COVER' -a -n "$COVER" ]; then
value=$COVER
break
else
value=`cueprint -n $I -t "$conv\n" "$NEW_CUE_FILE"`
if [ -n "$value" ]; then
break
fi
fi
done
if [ -n "$value" ]; then
case $field in
TITLE)
KEYS=$KEYS`printf ' --tt "%s"' "${value}"`
;;
COVER)
KEYS=$KEYS`printf ' --tl "%s"' "${value}"`
;;
ALBUM)
KEYS=$KEYS`printf ' --tl "%s"' "${value}"`
;;
ARTIST)
KEYS=$KEYS`printf ' --ta "%s"' "${value}"`
;;
YEAR)
KEYS=$KEYS`printf ' --ty "%s"' "${value}"`
;;
COMMENT)
KEYS=$KEYS`printf ' --tc "%s"' "${value}"`
;;
GENRE)
KEYS=$KEYS`printf ' --tg "%s"' "${value}"`
;;
TRACKNUMBER)
KEYS=$KEYS`printf ' --tn "%u/%u"' "${value}" "${I}"`
;;
esac
fi
done
CONV_FILE_N=`echo $CONV_FILE | sed -r 's/\.wav/\.mp3/g' | sed -r 's/[?<>\\:*|\"]/_/g'`
eval ${KEYS} \"${CONV_FILE}\" \"${CONV_FILE_N}\"
rm -f "$CONV_FILE"
done
rm -f "$NEW_CUE_FILE"
exit 0
view raw mp3splitcue hosted with ❤ by GitHub