Prioritize correctly between different matching files.
[utils.git] / planime
diff --git a/planime b/planime
index 90896f7..dfb8d64 100755 (executable)
--- a/planime
+++ b/planime
@@ -4,8 +4,19 @@ isnum() {
     grep -xq '[0-9]\+' <<<"$1"
 }
 
+scorefile() {
+    if [ "${1##*.}" = mkv ]; then
+       echo 10
+    elif [ "${1##*.}" = ogm ]; then
+       echo 5
+    else
+       echo 0
+    fi
+}
+
 findfile() {
-    local file tail eq eqt m
+    local file tail eq eqt m matches max score
+    matches=()
     for file in "$1"*; do
        tail="${file#$1}"
        eq="${tail%.*}"
@@ -26,12 +37,21 @@ findfile() {
        fi
        if [ "$m" = y ]; then
            if [ "$eqt" = "$3" -o "$eqt" = "($3)" ]; then
-               echo "$file"
-               return 0
+               matches=("${matches[@]}" "$file")
            fi
        fi
     done
-    return 1
+    if [ ${#matches[@]} -lt 1 ]; then return 1; fi
+    max=
+    for m in "${matches[@]}"; do
+       score="$(scorefile "$m")"
+       if [ -z "$max" ] || [ "$score" -gt "$max" ]; then
+           max="$score"
+           file="$m"
+       fi
+    done
+    echo "$file"
+    return 0
 }
 
 origargs=("$0" "$@")