aboutsummaryrefslogtreecommitdiff
path: root/sorter/sort_downloads.sh
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukasz.kasprzak@pm.me>2026-03-19 15:05:32 +0100
committerLukasz Kasprzak <lukasz.kasprzak@pm.me>2026-03-19 15:05:32 +0100
commitb1844d805a8f190af00faf3f6e5bed7d997ecaae (patch)
treed6296ba5e85034836e203a542d2ad34a9e5c5b32 /sorter/sort_downloads.sh
parentc74163f1ecbd809c83bb465ee89fa04369a89972 (diff)
downloadbin-b1844d805a8f190af00faf3f6e5bed7d997ecaae.tar.gz
bin-b1844d805a8f190af00faf3f6e5bed7d997ecaae.zip
created sorter for sorting downloads with custom rules; created straper for recreation of server
Diffstat (limited to 'sorter/sort_downloads.sh')
-rwxr-xr-xsorter/sort_downloads.sh60
1 files changed, 60 insertions, 0 deletions
diff --git a/sorter/sort_downloads.sh b/sorter/sort_downloads.sh
new file mode 100755
index 0000000..d2023a8
--- /dev/null
+++ b/sorter/sort_downloads.sh
@@ -0,0 +1,60 @@
+#!/usr/bin/env bash
+# sort_downloads.sh — wrapper for sort_downloads.py
+# Installs missing Python deps, then runs the sorter.
+
+set -euo pipefail
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+PYTHON_SCRIPT="$SCRIPT_DIR/sort_downloads.py"
+
+# ── Colour helpers ────────────────────────────────────────────────────────────
+GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; NC='\033[0m'
+info() { echo -e "${GREEN}[sort]${NC} $*"; }
+warn() { echo -e "${YELLOW}[warn]${NC} $*"; }
+error() { echo -e "${RED}[error]${NC} $*" >&2; }
+
+# ── Check Python 3.11+ ────────────────────────────────────────────────────────
+if ! command -v python3 &>/dev/null; then
+ error "python3 not found. Install it with: sudo apt install python3"
+ exit 1
+fi
+
+PYVER=$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')")
+PYMAJ=$(python3 -c "import sys; print(sys.version_info.major)")
+PYMIN=$(python3 -c "import sys; print(sys.version_info.minor)")
+
+if [[ "$PYMAJ" -lt 3 ]] || [[ "$PYMAJ" -eq 3 && "$PYMIN" -lt 11 ]]; then
+ error "Python 3.11+ required for built-in tomllib. You have Python $PYVER."
+ exit 1
+fi
+
+info "Using Python $(python3 --version) — tomllib built-in, no extra config deps needed."
+
+# ── Install pip if missing ────────────────────────────────────────────────────
+if ! python3 -m pip --version &>/dev/null; then
+ warn "pip not found — installing..."
+ sudo apt-get install -y python3-pip
+fi
+
+# ── Install content-extraction libraries ─────────────────────────────────────
+# Note: pyyaml is no longer needed — TOML is built into Python 3.11+
+declare -A DEPS=(
+ [pdfplumber]="pdfplumber"
+ [docx]="python-docx"
+ [openpyxl]="openpyxl"
+ [odf]="odfpy"
+)
+
+for import_name in "${!DEPS[@]}"; do
+ pip_name="${DEPS[$import_name]}"
+ if ! python3 -c "import $import_name" &>/dev/null 2>&1; then
+ info "Installing $pip_name..."
+ python3 -m pip install --quiet "$pip_name" --break-system-packages
+ fi
+done
+
+info "All dependencies ready."
+echo ""
+
+# ── Run the sorter ────────────────────────────────────────────────────────────
+exec python3 "$PYTHON_SCRIPT" "$@"