Prioritize correctly between different matching files.
authorfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Wed, 21 Jan 2009 21:46:13 +0000 (21:46 +0000)
committerfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Wed, 21 Jan 2009 21:46:13 +0000 (21:46 +0000)
git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/utils@1118 959494ce-11ee-0310-bf91-de5d638817bd

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" "$@")