+isnum() {
+ grep -xq '[0-9]\+' <<<"$1"
+}
+
+scorefile() {
+ if [ "${1##*.}" = mkv ]; then
+ echo 10
+ elif [ "${1##*.}" = ogm ]; then
+ echo 5
+ else
+ echo 0
+ fi
+}
+
+findbase() {
+ if [ -r aliases ]; then
+ while read alias rest; do
+ if [ "$alias" = "$1" ]; then
+ echo "$rest"
+ return
+ fi
+ done <aliases
+ fi
+ echo "$1"
+}
+
+findfile() {
+ if [ -n "$debug" ]; then echo "finding base='$1', ep='$2', qual='$3'" >&2; fi
+ local base file tail eq eqt m matches max score
+ matches=()
+ base="$(findbase "$1")"
+ for file in "$base"*; do
+ tail="${file#"$base"}"
+ eq="${tail%.*}"
+ m=n
+ if [ "${eq%% *}" -eq "$2" ] 2>/dev/null; then
+ if [[ "$eq" == *\ * ]]; then
+ eqt="${eq#* }"
+ else
+ eqt=
+ fi
+ m=y
+ elif [ "${eq:0:${#2}}" = "$2" ]; then
+ eqt="${eq:${#2}}"
+ if [ "${eqt:0:1}" = " " -o -z "$eqt" ]; then
+ eqt="${eqt# }"
+ m=y
+ fi
+ fi
+ if [ "$m" = y ]; then
+ if [ "$eqt" = "$3" -o "$eqt" = "($3)" -o "${eqt:0:2}" = "- " ]; then
+ matches=("${matches[@]}" "$file")
+ fi
+ fi
+ done
+ if [ ${#matches[@]} -lt 1 ]; then return 1; fi
+ max=
+ for m in "${matches[@]}"; do
+ score="$(scorefile "$m")"
+ if [ -n "$debug" ]; then echo "found \`$m': score $score" >&2; fi
+ if [ -z "$max" ] || [ "$score" -gt "$max" ]; then
+ max="$score"
+ file="$m"
+ fi
+ done
+ if [ -n "$debug" ]; then echo "using \`$file'" >&2; fi
+ echo "$file"
+ return 0
+}
+
+origargs=("$0" "$@")
+cmdline=(mpv -fs)
+debug=
+log=y
+unset pretend printfile