4 grep -xq '[0-9]\+' <<<"$1"
8 if [ "${1##*.}" = mkv ]; then
10 elif [ "${1##*.}" = ogm ]; then
18 if [ -r aliases ]; then
19 while read alias rest; do
20 if [ "$alias" = "$1" ]; then
30 if [ -n "$debug" ]; then echo "finding base='$1', ep='$2', qual='$3'" >&2; fi
31 local base file tail eq eqt m matches max score
33 base="$(findbase "$1")"
34 for file in "$base"*; do
35 tail="${file#"$base"}"
38 if [ "${eq%% *}" -eq "$2" ] 2>/dev/null; then
39 if [[ "$eq" == *\ * ]]; then
45 elif [ "${eq:0:${#2}}" = "$2" ]; then
47 if [ "${eqt:0:1}" = " " -o -z "$eqt" ]; then
53 if [ "$eqt" = "$3" -o "$eqt" = "($3)" -o "${eqt:0:2}" = "- " ]; then
54 matches=("${matches[@]}" "$file")
58 if [ ${#matches[@]} -lt 1 ]; then return 1; fi
60 for m in "${matches[@]}"; do
61 score="$(scorefile "$m")"
62 if [ -n "$debug" ]; then echo "found \`$m': score $score" >&2; fi
63 if [ -z "$max" ] || [ "$score" -gt "$max" ]; then
68 if [ -n "$debug" ]; then echo "using \`$file'" >&2; fi
76 unset pretend printfile
78 while [ "${1:0:1}" = - ]; do
83 echo "usage: planime [-fdhtC] [-A PLAYER-ARGS... ;] [-s PAR VAL] [--] [NAME-QUAL] [EP|.] [TYPE-QUAL]" >&2
90 cmdline=("${cmdline[@]}" -ao 'alsa:device=[hw:3,7]')
100 echo "planime: unterminated argument list" >&2
105 if [ "$a" = \; ]; then
108 cmdline=("${cmdline[@]}" "$a")
121 cmdline=("${cmdline[@]}" -v)
127 echo "planime: unknown option \`$a'"
133 dirbase="$(basename "$(pwd)")"
138 if [ $# -eq 0 ]; then
140 elif [ $# -eq 1 ]; then
147 elif [ $# -eq 2 ]; then
148 if findfile "$dirbase - " "$1" "$2" >/dev/null; then
161 if [ "$ep" = . ]; then nextep=y; fi
162 if [ "$nextep" = y -a -r nextep ]; then
164 if ! isnum "$ep"; then
165 echo "planime: nextep is non-numeric" >&2
169 if [ -z "$file" ]; then
170 if [ "$base" = . ]; then
171 if [ -r curser ]; then
177 curser="$(findbase "$base")"
179 if [ -n "$curser" ]; then
180 file="$(findfile "$dirbase $curser - " "$ep" "$tqual")" || \
181 file="$(findfile "$curser - " "$ep" "$tqual")"
183 file="$(findfile "$dirbase - " "$ep" "$tqual")"
187 if [ -z "$file" -o ! -r "$file" ]; then
188 echo "planime: no matching file found" >&2
192 case "${file##*.}" in
203 ifile=".${file}.info"
205 if [ -n "$savepar" ]; then
206 if [ -r "$ifile" ]; then
207 egrep -v "^${savepar} " "$ifile" >"$ifile.new"
208 mv -f "$ifile.new" "$ifile"
210 echo "$savepar $saveval" >>"$ifile"
216 if [ -r "$ifile" ]; then
219 while read par arg; do
220 if [ "$par" = delay ]; then
221 cmdline=("${cmdline[@]}" -delay "$arg")
222 elif [ "$par" = aspect ]; then
223 cmdline=("${cmdline[@]}" -aspect "$arg")
224 elif [ "$par" = volmod ]; then
225 cmdline=("${cmdline[@]}" -af volume="$arg")
226 elif [ "$par" = alang ]; then
229 elif [ "$par" = aid ]; then
232 elif [ "$par" = slang ]; then
235 elif [ "$par" = sid ]; then
244 if [ -n "$alang" ]; then
245 cmdline=("${cmdline[@]}" -alang "$alang")
246 elif [ -n "$aid" ]; then
247 cmdline=("${cmdline[@]}" -aid "$((aid + 1))")
249 if [ -n "$slang" ]; then
250 cmdline=("${cmdline[@]}" -slang "$slang")
251 elif [ -n "$sid" ]; then
252 cmdline=("${cmdline[@]}" -sid "$((sid + 1))")
255 if [ -n "$pretend" ]; then
256 echo "${cmdline[@]}" "$file"
257 elif [ -n "$printfile" ]; then
260 if [ "$chwp" = y ]; then (sleep 2; randomwp) & fi
261 "${cmdline[@]}" "$file"
263 if [ "$nextep" = y ]; then
264 echo "0. Save and continue (or Space)"
265 echo "1. Continue without saving"
266 echo "2. Save and exit (or Enter)"
267 echo "3. Exit without saving (or any key)"
283 if [ "$save" = y ]; then
287 if [ "$cont" = y ]; then
288 exec "${origargs[@]}"