work on dispatch command

This commit is contained in:
Prunebutt 2025-09-25 17:42:36 +02:00
parent 498aba165e
commit d961bab798
2 changed files with 48 additions and 6 deletions

20
flake.nix Normal file
View file

@ -0,0 +1,20 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = {
self,
nixpkgs,
} @ inputs: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages."${system}";
in {
packages."${system}".default = pkgs.writeShellApplication {
name = "hello_world";
runtimeInputs = with pkgs; [sane-backends brscan5 ghostscript];
text = builtins.readFile ./scanbuddy.bash;
};
};
}

View file

@ -1,9 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# device="brother5:bus2;dev2"
device=$(scanimage -f "%d%n" | grep brother5 | head -n 1)
echo "Selecting scanner '$device'"
# option values for the brother DS-740D scanner # option values for the brother DS-740D scanner
simplex_source='Automatic Document Feeder(left aligned)' simplex_source='Automatic Document Feeder(left aligned)'
duplex_source='Automatic Document Feeder(left aligned,Duplex)' duplex_source='Automatic Document Feeder(left aligned,Duplex)'
@ -25,6 +21,10 @@ last_out_file="out$current_pageno.pdf"
next_out_file="out$((current_pageno+1)).pdf" next_out_file="out$((current_pageno+1)).pdf"
scan() { scan() {
# device="brother5:bus2;dev2"
device=$(scanimage -f "%d%n" | grep brother5 | head -n 1)
echo "Selecting scanner '$device'"
usage() { usage() {
echo "scanbuddy.bash scan -d -r <resolution($resolution)> -b <c|b|g>" echo "scanbuddy.bash scan -d -r <resolution($resolution)> -b <c|b|g>"
} }
@ -68,7 +68,7 @@ scan() {
echo "Scanning to '$next_out_file'..." echo "Scanning to '$next_out_file'..."
scanimage \ scanimage \
--device-name=$device \ --device-name="$device" \
--format=pdf \ --format=pdf \
--output-file="$next_out_file" \ --output-file="$next_out_file" \
--mode="$scanner_mode" \ --mode="$scanner_mode" \
@ -77,14 +77,36 @@ scan() {
-x 210 -y 297 # A4 -x 210 -y 297 # A4
} }
if [ "$#" -lt 1 ]; then
echo "You need an argument!"
exit 1
fi
case "$1" in case "$1" in
scan) scan)
scan "${@:2}" scan "${@:2}"
;; ;;
unscan) unscan)
rm "$current_pageno" rm "$last_out_file"
;; ;;
dispatch) dispatch)
readarray -d '' out_files < <(find . -regextype posix-awk -regex "\./out[0-9]+\.pdf" -print0 | sort -Vz)
combined_file=$(mktemp --suff="_scanbuddy.pdf")
gs -q -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE="$combined_file" -dBATCH "${out_files[@]}"
echo "Merged pdf written to $combined_file"
# send to paperless
PAPERLESS_STATUS=$(curl \
-H "Authorization: Token $PAPERLESS_TOKEN" \
-F document=@"$combined_file" \
"$([ -v PAPERLESS_TAG ] && echo "-F tags=$PAPERLESS_TAG")" \
"${PAPERLESS_URL}/api/documents/post_document/") || FAILED=1
if [ -v FAILED ]; then
echo "Paperless failed with message:\n$PAPERLESS_STATUS"
else
echo "Paperless consumption job: '$PAPERLESS_STATUS'"
fi
;; ;;
*) *)
echo "Usage: scanbuddy" echo "Usage: scanbuddy"