gremlin/gremlin.in: Fix things for new GI-based GStreamer etc. bindings.
[autoys] / flaccrip / offset-album
CommitLineData
583b7e4a
MW
1#! /bin/bash
2
3set -e
4: ${JBDIR=/mnt/jb}
5
6case $# in
7 3) ;;
8 *) echo >&2 "Usage: $0 OFFSET SOURCEDIR TARGETDIR"; exit 1 ;;
9esac
10
11offset=$1 sourcedir=$2 targetdir=$3
12mkdir "$targetdir"
13tmp="$targetdir"/_tmp; mkdir "$tmp"
14trap 'rm -rf "$targetdir"' EXIT INT TERM
15
16lens=""
17for i in "$sourcedir"/*.flac; do
18 base=${i##*/}
19 metaflac --export-tags-to="$tmp/${base%.flac}.tags" "$i"
20 len=$(metaflac --show-total-samples "$i")
21 lens="${lens:+$lens }$len"
22done
23
24{
25 if ((offset < 0)); then
26 $JBDIR/bin/cat-prefix $((4 * -offset)) </dev/zero
27 fi
28 for i in "$sourcedir"/*.flac; do
29 flac -d -s -o- --force-raw-format --sign=signed --endian=little "$i"
30 done
31 if ((offset > 0)); then
32 $JBDIR/bin/cat-prefix $((4 * offset)) </dev/zero
33 fi
34} | {
35 if ((offset > 0)); then
36 $JBDIR/bin/cat-prefix $((4 * offset)) >/dev/null
37 fi
38 set -- $lens
39 for i in "$sourcedir"/*.flac; do
40 base=${i##*/}
41 len=$1; shift
42 $JBDIR/bin/cat-prefix $((4 * len)) >"$tmp"/"${base%.flac}.pcm"
43 flac --force-raw-format --sign=signed --endian=little --channels=2 \
44 --bps=16 --sample-rate=44100 --best -o "$targetdir"/"$base" \
45 "$tmp"/"${base%.flac}.pcm"
46 metaflac --remove-all-tags \
47 --import-tags-from="$tmp"/"${base%.flac}.tags" \
48 "$targetdir"/"$base"
49 done
50 if ((offset < 0)); then
51 $JBDIR/bin/cat-prefix $((4 * -offset)) >/dev/null
52 fi
53}
54
55for i in "$sourcedir"/* "$sourcedir"/.[!.]*; do
56 if [ ! -e "$i" ]; then continue; fi
57 case "$i" in
58 *.flac) ;;
59 *) cp -r "$i" "$targetdir"/ ;;
60 esac
61done
62
63rm -rf "$tmp"
64trap '' EXIT INT TERM