]> git.scottworley.com Git - picsort/blobdiff - pics-preprocess
Be polite with i/o
[picsort] / pics-preprocess
index 8b8dcb4f4be6fd0fc1e01e770d228739ae99893f..9d0b42f06e07357f0f9c20e68d081ca9860f227f 100755 (executable)
@@ -1,28 +1,43 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
 # Pass .NEF and .jpeg files as $@.
 # This makes many variants of each .NEF file at different exposure levels
 # and makes reduced-size versions for faster browsing.
 
 
 # Pass .NEF and .jpeg files as $@.
 # This makes many variants of each .NEF file at different exposure levels
 # and makes reduced-size versions for faster browsing.
 
+MINFREESPACE=$((10 * 1024 * 1024)) # 10GiB in KiB
+
 SMALLHEIGHT=700
 
 SMALLHEIGHT=700
 
+renice -n 19 $$
+ionice -c 3 -p $$
 
 for f;do
 
 for f;do
+  if (( "$(df -k . | awk 'NR == 2 { print $4 }')" < $MINFREESPACE ));then
+    echo "Out of disk space"
+    break
+  fi
   if [[ "$f" == *.NEF ]];then
     for level in {10..30};do
       mkdir -p {,sm/}"$level"
       base="$(basename "$f")"
       out="$level/${base%.NEF}.jpeg"
   if [[ "$f" == *.NEF ]];then
     for level in {10..30};do
       mkdir -p {,sm/}"$level"
       base="$(basename "$f")"
       out="$level/${base%.NEF}.jpeg"
-      exposure=$(dc <<< "2k $level 4 / 3.5-p")  # 10 to 30 -> -1 to 4 in .25 steps
-      if [[ ! -s "$out" ]];then
+      if [[ -s "$out" ]];then
+        echo "Skipping $out"
+      else
+        exposure=$(dc <<< "2k $level 4 / 3.5-p")  # 10 to 30 -> -1 to 4 in .25 steps
         pics-run-ufraw "$exposure" "$f" "$out"
       fi
         pics-run-ufraw "$exposure" "$f" "$out"
       fi
-      if [[ ! -s "sm/$out" ]];then
+      if [[ -s "sm/$out" ]];then
+        echo "Skipping sm/$out"
+      else
         convert "$out" -geometry "x$SMALLHEIGHT" "sm/$out"
       fi
     done
   else
         convert "$out" -geometry "x$SMALLHEIGHT" "sm/$out"
       fi
     done
   else
-    if [[ ! -s "sm/$f" ]];then
+    if [[ -s "sm/$f" ]];then
+      echo "Skipping sm/$f"
+    else
+      mkdir -p sm
       convert "$f" -geometry "x$SMALLHEIGHT" "sm/$f"
     fi
   fi
       convert "$f" -geometry "x$SMALLHEIGHT" "sm/$f"
     fi
   fi