forked from pub-solar/os
paperless: init scan2paperless script
This commit is contained in:
parent
298b480680
commit
f45fa35e90
|
@ -13,33 +13,6 @@ with lib; let
|
|||
backupDir = "${xdg.dataHome}/PaperlessBackup";
|
||||
consumptionDir = "/home/${psCfg.user.name}/.local/share/scandir";
|
||||
|
||||
scan2paperless = with pkgs; writeShellScriptBin "scan2paperless" ''
|
||||
DEVICE=$1
|
||||
NUM_PAGES=$2
|
||||
NAME=$3
|
||||
|
||||
if [ -z "''${DEVICE}" ] || [ -z "''${NUM_PAGES}" ] || [ -z "''${NAME}" ]; then
|
||||
echo "Usage: scan2paperless <device> <num_pages> <name>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
tmpDir=$(${coreutils}/bin/mktemp -d)
|
||||
files=()
|
||||
|
||||
for i in $(seq 1 $NUM_PAGES); do
|
||||
fileName=$(${openssl}/bin/openssl rand -hex 12)
|
||||
file="$tmpDir/$fileName.jpg"
|
||||
echo "Start scanning page $i/$NUM_PAGES";
|
||||
${sane-backends}/bin/scanimage -d $DEVICE --format=jpeg --resolution 300 --progress -o $file
|
||||
echo "Finished scanning page $i";
|
||||
files+=($file)
|
||||
done
|
||||
|
||||
pdf="${consumptionDir}/$NAME.pdf"
|
||||
${python3Packages.img2pdf}/bin/img2pdf --output $pdf ''${files[@]}
|
||||
|
||||
echo "PDF written to $pdf"
|
||||
'';
|
||||
in {
|
||||
services.paperless = {
|
||||
enable = true;
|
||||
|
@ -60,11 +33,6 @@ in {
|
|||
#brscan5.enable = true;
|
||||
};
|
||||
|
||||
users.users."${psCfg.user.name}".packages = with pkgs; [
|
||||
scan2paperless
|
||||
python3Packages.img2pdf
|
||||
];
|
||||
|
||||
home-manager.users."${psCfg.user.name}" = {
|
||||
home.sessionVariables = {
|
||||
SCANNER_OUTPUT_DIR = consumptionDir;
|
||||
|
|
|
@ -13,6 +13,7 @@ with prev; {
|
|||
psos = writeShellScriptBin "psos" (import ./psos.nix final);
|
||||
psos-docs = import ./psos-docs.nix final;
|
||||
s = writeShellScriptBin "s" (import ./s.nix final);
|
||||
scan2paperless = writeShellScriptBin "scan2paperless" (import ./scan2paperless.nix final);
|
||||
sway-launcher = writeScriptBin "sway-launcher" (import ./sway-launcher.nix final);
|
||||
swaylock-bg = writeShellScriptBin "swaylock-bg" (import ./swaylock-bg.nix final);
|
||||
toggle-kbd-layout = writeShellScriptBin "toggle-kbd-layout" (import ./toggle-kbd-layout.nix final);
|
||||
|
|
59
pkgs/scan2paperless.nix
Normal file
59
pkgs/scan2paperless.nix
Normal file
|
@ -0,0 +1,59 @@
|
|||
self:
|
||||
with self; ''
|
||||
echo "$@"
|
||||
DUPLEX=,Duplex
|
||||
removeempty="true"
|
||||
|
||||
[[ $1 == "-s" ]] && {
|
||||
DUPLEX=""
|
||||
removeempty=false
|
||||
shift
|
||||
}
|
||||
|
||||
[[ $1 == "-a" ]] && {
|
||||
DUPLEX=,Duplex
|
||||
removeempty="true"
|
||||
shift
|
||||
}
|
||||
|
||||
[[ $1 == "-d" ]] && {
|
||||
DUPLEX=,Duplex
|
||||
shift
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
echo finalizing pdf file.
|
||||
${img2pdf}/bin/img2pdf --pdfa --output /tmp/scan2paperless_$$.pdf /tmp/scan2paperless_$$_*.png && \
|
||||
rm -f /tmp/scan2paperless_$$_*.png
|
||||
|
||||
scp /tmp/scan2paperless_$$.pdf pub-solar@paperless.faenix.eu:~/.local/share/scandir \
|
||||
&& rm -f /tmp/scan2paperless_$$* \
|
||||
|| echo upload failed, retaining file /tmp/scan2paperless_$$.pdf >&2
|
||||
}
|
||||
|
||||
trap 'cleanup; exit 1' EXIT
|
||||
|
||||
${sane-backends}/bin/scanimage --device 'brother5:bus1;dev5' --format=png --resolution 300 --batch=/tmp/scan2paperless_$$_%d.png --AutoDeskew=yes --batch-start=10 --source="Automatic Document Feeder(left aligned''${DUPLEX})" -x 210 -y 297
|
||||
|
||||
if $removeempty
|
||||
then
|
||||
threshold=99
|
||||
images=( )
|
||||
values=( )
|
||||
for f in /tmp/scan2paperless_$$_*.png
|
||||
do
|
||||
images[''${#images[@]}]=$f
|
||||
values[''${#values[@]}]=$(${imagemagick}/bin/convert "$f" -fuzz 02% -fill black +opaque white -fill white -opaque white -format "%[fx:100*mean]" info:)
|
||||
done
|
||||
|
||||
for ((i=0;i<''${#images[@]};i++))
|
||||
do
|
||||
if [[ $(echo "''${values[i]} > $threshold" | ${bc}/bin/bc -l) == "1" ]]
|
||||
then
|
||||
# bc will output 1 if the comparison is true, 0 otherwise
|
||||
echo image "''${images[i]}" was found to be mostly white, removing.
|
||||
rm "''${images[i]}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
''
|
|
@ -80,6 +80,7 @@ in {
|
|||
age-plugin-yubikey
|
||||
#cockroach-bin
|
||||
obs-studio
|
||||
scan2paperless
|
||||
wlvncc
|
||||
];
|
||||
programs.bash.initExtra = ''
|
||||
|
|
Loading…
Reference in a new issue