anndl: Print raw names in choice list.
[utils.git] / planime
diff --git a/planime b/planime
index a25761e..854ef7f 100755 (executable)
--- a/planime
+++ b/planime
@@ -14,12 +14,25 @@ scorefile() {
     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 file tail eq eqt m matches max score
+    local base file tail eq eqt m matches max score
     matches=()
-    for file in "$1"*; do
-       tail="${file#"$1"}"
+    base="$(findbase "$1")"
+    for file in "$base"*; do
+       tail="${file#"$base"}"
        eq="${tail%.*}"
        m=n
        if [ "${eq%% *}" -eq "$2" ] 2>/dev/null; then
@@ -37,7 +50,7 @@ findfile() {
            fi
        fi
        if [ "$m" = y ]; then
-           if [ "$eqt" = "$3" -o "$eqt" = "($3)" ]; then
+           if [ "$eqt" = "$3" -o "$eqt" = "($3)" -o "${eqt:0:2}" = "- " ]; then
                matches=("${matches[@]}" "$file")
            fi
        fi
@@ -58,8 +71,9 @@ findfile() {
 }
 
 origargs=("$0" "$@")
-cmdline=(mplayer -fs -ass)
+cmdline=(mpv -fs)
 debug=
+log=y
 unset pretend printfile
 
 while [ "${1:0:1}" = - ]; do
@@ -67,20 +81,29 @@ while [ "${1:0:1}" = - ]; do
     shift
     case "$a" in
        -h)
-           echo "usage: planime [-fdhtC] [-A PLAYER-ARGS... ;] [-s PAR VAL] [--] [NAME-QUAL] [EP|.] [TYPE-QUAL]" >&2
+           echo "usage: planime [-fdhtCL] [-A PLAYER-ARGS... ;] [-s PAR VAL] [--] [NAME-QUAL] [EP|.] [TYPE-QUAL]" >&2
            exit 0
            ;;
        -d)
            debug=y
            ;;
        -t)
-           cmdline=("${cmdline[@]}" -ao oss:/dev/dsp1)
+           cmdline=("${cmdline[@]}" -audio-device 'alsa/hdmi:CARD=PCH,DEV=0')
+           DISPLAY=:1
+           chwp=y
            ;;
        -C)
            pretend=y
            ;;
+       -L)
+           log=
+           ;;
        -A)
            while :; do
+               if [ $# -lt 1 ]; then
+                   echo "planime: unterminated argument list" >&2
+                   exit 1
+               fi
                a="$1"
                shift
                if [ "$a" = \; ]; then
@@ -98,6 +121,9 @@ while [ "${1:0:1}" = - ]; do
        -f)
            printfile=y
            ;;
+       -v)
+           cmdline=("${cmdline[@]}" -v)
+           ;;
        --)
            break
            ;;
@@ -152,7 +178,7 @@ if [ -z "$file" ]; then
            curser=
        fi
     else
-       curser="$base"
+       curser="$(findbase "$base")"
     fi
     if [ -n "$curser" ]; then
        file="$(findfile "$dirbase $curser - " "$ep" "$tqual")" || \
@@ -222,22 +248,25 @@ fi
 if [ -n "$alang" ]; then
     cmdline=("${cmdline[@]}" -alang "$alang")
 elif [ -n "$aid" ]; then
-    cmdline=("${cmdline[@]}" -aid "$aid")
+    cmdline=("${cmdline[@]}" -aid "$((aid + 1))")
 fi
 if [ -n "$slang" ]; then
     cmdline=("${cmdline[@]}" -slang "$slang")
 elif [ -n "$sid" ]; then
-    cmdline=("${cmdline[@]}" -sid "$sid")
+    cmdline=("${cmdline[@]}" -sid "$((sid + 1))")
 fi
 
-if [ "`hostname`" = pc6 -o "`hostname`" = pc7 -a "$DISPLAY" = :1 ]; then chwp=y; fi
-
 if [ -n "$pretend" ]; then
     echo "${cmdline[@]}" "$file"
 elif [ -n "$printfile" ]; then
     echo "$file"
 else
     if [ "$chwp" = y ]; then (sleep 2; randomwp) & fi
+    if [ "$log" = y ]; then
+       if [ -d $HOME/.anime ]; then
+           echo "$(date) $(basename "$file")" >>$HOME/.anime/plog
+       fi
+    fi
     "${cmdline[@]}" "$file"
     
     if [ "$nextep" = y ]; then