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
77 unset pretend printfile
80 echo "usage: planime [-fdhtCL] [-A PLAYER-ARGS... ;] [-s PAR=VAL] [--] [NAME-QUAL] [EP|.] [TYPE-QUAL]"
83 while getopts hdtCLA:s:fv opt; do
93 cmdline=("${cmdline[@]}" -audio-device 'alsa/hdmi:CARD=PCH,DEV=0')
104 while [ "$OPTARG" != \; ]; do
106 if [ "$OPTIND" -gt $# ]; then
107 echo "planime: unterminated argument list" >&2
115 p="$(expr index "$OPTARG" =)"
116 if [ "$p" -le 0 ]; then
120 savepar="${OPTARG:0:p}"
122 saveval="${OPTARG:p}"
136 shift $((OPTIND - 1))
138 dirbase="$(basename "$(pwd)")"
143 if [ $# -eq 0 ]; then
145 elif [ $# -eq 1 ]; then
152 elif [ $# -eq 2 ]; then
153 if findfile "$dirbase - " "$1" "$2" >/dev/null; then
166 if [ "$ep" = . ]; then nextep=y; fi
167 if [ "$nextep" = y -a -r nextep ]; then
169 if ! isnum "$ep"; then
170 echo "planime: nextep is non-numeric" >&2
174 if [ -z "$file" ]; then
175 if [ "$base" = . ]; then
176 if [ -r curser ]; then
182 curser="$(findbase "$base")"
184 if [ -n "$curser" ]; then
185 file="$(findfile "$dirbase $curser - " "$ep" "$tqual")" || \
186 file="$(findfile "$curser - " "$ep" "$tqual")"
188 file="$(findfile "$dirbase - " "$ep" "$tqual")"
192 if [ -z "$file" -o ! -r "$file" ]; then
193 echo "planime: no matching file found" >&2
197 case "${file##*.}" in
208 ifile=".${file}.info"
210 if [ -n "$savepar" ]; then
211 if [ -r "$ifile" ]; then
212 egrep -v "^${savepar} " "$ifile" >"$ifile.new"
213 mv -f "$ifile.new" "$ifile"
215 echo "$savepar $saveval" >>"$ifile"
221 if [ -r "$ifile" ]; then
224 while read par arg; do
225 if [ "$par" = delay ]; then
226 cmdline=("${cmdline[@]}" -delay "$arg")
227 elif [ "$par" = aspect ]; then
228 cmdline=("${cmdline[@]}" -aspect "$arg")
229 elif [ "$par" = volmod ]; then
230 cmdline=("${cmdline[@]}" -af volume="$arg")
231 elif [ "$par" = alang ]; then
234 elif [ "$par" = aid ]; then
237 elif [ "$par" = slang ]; then
240 elif [ "$par" = sid ]; then
249 if [ -n "$alang" ]; then
250 cmdline=("${cmdline[@]}" -alang "$alang")
251 elif [ -n "$aid" ]; then
252 cmdline=("${cmdline[@]}" -aid "$((aid + 1))")
254 if [ -n "$slang" ]; then
255 cmdline=("${cmdline[@]}" -slang "$slang")
256 elif [ -n "$sid" ]; then
257 cmdline=("${cmdline[@]}" -sid "$((sid + 1))")
260 if [ -n "$pretend" ]; then
261 echo "${cmdline[@]}" "$file"
262 elif [ -n "$printfile" ]; then
265 if [ "$chwp" = y ]; then (sleep 2; randomwp) & fi
266 if [ "$log" = y ]; then
267 if [ -d $HOME/.anime ]; then
268 echo "$(date) $(basename "$file")" >>$HOME/.anime/plog
271 "${cmdline[@]}" "$file"
273 if [ "$nextep" = y ]; then
274 echo "0. Save and continue (or Space)"
275 echo "1. Continue without saving"
276 echo "2. Save and exit (or Enter)"
277 echo "3. Exit without saving (or any key)"
293 if [ "$save" = y ]; then
297 if [ "$cont" = y ]; then
298 exec "${origargs[@]}"