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)" ]; 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
74 cmdline=(mplayer -fs -ass)
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")
124 echo "planime: unknown option \`$a'"
130 dirbase="$(basename "$(pwd)")"
135 if [ $# -eq 0 ]; then
137 elif [ $# -eq 1 ]; then
144 elif [ $# -eq 2 ]; then
145 if findfile "$dirbase - " "$1" "$2" >/dev/null; then
158 if [ "$ep" = . ]; then nextep=y; fi
159 if [ "$nextep" = y -a -r nextep ]; then
161 if ! isnum "$ep"; then
162 echo "planime: nextep is non-numeric" >&2
166 if [ -z "$file" ]; then
167 if [ "$base" = . ]; then
168 if [ -r curser ]; then
174 curser="$(findbase "$base")"
176 if [ -n "$curser" ]; then
177 file="$(findfile "$dirbase $curser - " "$ep" "$tqual")" || \
178 file="$(findfile "$curser - " "$ep" "$tqual")"
180 file="$(findfile "$dirbase - " "$ep" "$tqual")"
184 if [ -z "$file" -o ! -r "$file" ]; then
185 echo "planime: no matching file found" >&2
189 case "${file##*.}" in
200 ifile=".${file}.info"
202 if [ -n "$savepar" ]; then
203 if [ -r "$ifile" ]; then
204 egrep -v "^${savepar} " "$ifile" >"$ifile.new"
205 mv -f "$ifile.new" "$ifile"
207 echo "$savepar $saveval" >>"$ifile"
213 if [ -r "$ifile" ]; then
216 while read par arg; do
217 if [ "$par" = delay ]; then
218 cmdline=("${cmdline[@]}" -delay "$arg")
219 elif [ "$par" = aspect ]; then
220 cmdline=("${cmdline[@]}" -aspect "$arg")
221 elif [ "$par" = volmod ]; then
222 cmdline=("${cmdline[@]}" -af volume="$arg")
223 elif [ "$par" = alang ]; then
226 elif [ "$par" = aid ]; then
229 elif [ "$par" = slang ]; then
232 elif [ "$par" = sid ]; then
241 if [ -n "$alang" ]; then
242 cmdline=("${cmdline[@]}" -alang "$alang")
243 elif [ -n "$aid" ]; then
244 cmdline=("${cmdline[@]}" -aid "$aid")
246 if [ -n "$slang" ]; then
247 cmdline=("${cmdline[@]}" -slang "$slang")
248 elif [ -n "$sid" ]; then
249 cmdline=("${cmdline[@]}" -sid "$sid")
252 if [ -n "$pretend" ]; then
253 echo "${cmdline[@]}" "$file"
254 elif [ -n "$printfile" ]; then
257 if [ "$chwp" = y ]; then (sleep 2; randomwp) & fi
258 "${cmdline[@]}" "$file"
260 if [ "$nextep" = y ]; then
261 echo "0. Save and continue (or Space)"
262 echo "1. Continue without saving"
263 echo "2. Save and exit (or Enter)"
264 echo "3. Exit without saving (or any key)"
280 if [ "$save" = y ]; then
284 if [ "$cont" = y ]; then
285 exec "${origargs[@]}"