make progress window better
This commit is contained in:
41
uploader.sh
41
uploader.sh
@@ -19,6 +19,7 @@ show_notification() {
|
|||||||
# ==========================================
|
# ==========================================
|
||||||
API_URL="http://localhost:1337/api/v2/upload"
|
API_URL="http://localhost:1337/api/v2/upload"
|
||||||
API_KEY=""
|
API_KEY=""
|
||||||
|
|
||||||
# ==========================================
|
# ==========================================
|
||||||
|
|
||||||
FILE="$1"
|
FILE="$1"
|
||||||
@@ -42,6 +43,33 @@ fi
|
|||||||
MIME_TYPE=$(file --mime-type -b "$FILE")
|
MIME_TYPE=$(file --mime-type -b "$FILE")
|
||||||
BASENAME=$(basename "$FILE")
|
BASENAME=$(basename "$FILE")
|
||||||
|
|
||||||
|
# Get file size locally
|
||||||
|
FILE_SIZE_BYTES=$(stat -c%s "$FILE" 2>/dev/null || echo "0")
|
||||||
|
|
||||||
|
human_readable_size() {
|
||||||
|
local size=$1
|
||||||
|
local units=('B' 'KB' 'MB' 'GB' 'TB')
|
||||||
|
local unit=0
|
||||||
|
while [ $size -ge 1024 ] && [ $unit -lt 4 ]; do
|
||||||
|
size=$((size / 1024))
|
||||||
|
unit=$((unit + 1))
|
||||||
|
done
|
||||||
|
echo "$size ${units[$unit]}"
|
||||||
|
}
|
||||||
|
TOTAL_SIZE=$(human_readable_size "$FILE_SIZE_BYTES")
|
||||||
|
|
||||||
|
# Helper to format centered HTML label with a fixed width
|
||||||
|
format_label() {
|
||||||
|
local filename="$1"
|
||||||
|
local detail="$2"
|
||||||
|
local wrapped_filename
|
||||||
|
# Wrap the filename to 45 chars max, and join with <br>
|
||||||
|
wrapped_filename=$(echo "$filename" | fold -w 45 | sed ':a;N;$!ba;s/\n/<br>/g')
|
||||||
|
echo "<table width=\"400\"><tr><td align=\"center\">Uploading <b>$wrapped_filename</b><br><font color=\"#666666\">$detail</font></td></tr></table>"
|
||||||
|
}
|
||||||
|
|
||||||
|
INIT_LABEL=$(format_label "$BASENAME" "(0 B / $TOTAL_SIZE) @ 0 B/s — --:--:-- remaining")
|
||||||
|
|
||||||
# ==========================================
|
# ==========================================
|
||||||
# Progress bar setup (kdialog + qdbus)
|
# Progress bar setup (kdialog + qdbus)
|
||||||
# ==========================================
|
# ==========================================
|
||||||
@@ -59,7 +87,7 @@ PROGRESS_OBJECT=""
|
|||||||
|
|
||||||
if command -v kdialog &>/dev/null && [ -n "$QDBUS_CMD" ]; then
|
if command -v kdialog &>/dev/null && [ -n "$QDBUS_CMD" ]; then
|
||||||
DBUS_REF=$(kdialog --title "f0ckm Uploader" \
|
DBUS_REF=$(kdialog --title "f0ckm Uploader" \
|
||||||
--progressbar "Uploading $BASENAME..." 100 2>/dev/null)
|
--progressbar "$INIT_LABEL" 100 2>/dev/null)
|
||||||
PROGRESS_SERVICE=$(echo "$DBUS_REF" | awk '{print $1}')
|
PROGRESS_SERVICE=$(echo "$DBUS_REF" | awk '{print $1}')
|
||||||
PROGRESS_OBJECT=$(echo "$DBUS_REF" | awk '{print $2}')
|
PROGRESS_OBJECT=$(echo "$DBUS_REF" | awk '{print $2}')
|
||||||
fi
|
fi
|
||||||
@@ -102,7 +130,7 @@ if [ -n "$PROGRESS_SERVICE" ] && [ -n "$PROGRESS_OBJECT" ]; then
|
|||||||
PCT="${fields[0]}"
|
PCT="${fields[0]}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
TOTAL_SIZE="${fields[1]}"
|
TOTAL_SIZE_CURL="${fields[1]}"
|
||||||
XFERD="${fields[5]}"
|
XFERD="${fields[5]}"
|
||||||
SPEED="${fields[11]}"
|
SPEED="${fields[11]}"
|
||||||
TIME_LEFT="${fields[10]}"
|
TIME_LEFT="${fields[10]}"
|
||||||
@@ -112,8 +140,13 @@ if [ -n "$PROGRESS_SERVICE" ] && [ -n "$PROGRESS_OBJECT" ]; then
|
|||||||
SPEED="${SPEED}/s"
|
SPEED="${SPEED}/s"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
LABEL="Uploading $BASENAME
|
# Prefer the local size calculation if curl total size is 0/empty/not computed yet
|
||||||
($XFERD / $TOTAL_SIZE) @ $SPEED — $TIME_LEFT remaining"
|
if [ -z "$TOTAL_SIZE_CURL" ] || [ "$TOTAL_SIZE_CURL" = "0" ] || [ "$TOTAL_SIZE_CURL" = "0b" ]; then
|
||||||
|
TOTAL_SIZE_CURL="$TOTAL_SIZE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
DETAIL="($XFERD / $TOTAL_SIZE_CURL) @ $SPEED — $TIME_LEFT remaining"
|
||||||
|
LABEL=$(format_label "$BASENAME" "$DETAIL")
|
||||||
|
|
||||||
$QDBUS_CMD "$PROGRESS_SERVICE" "$PROGRESS_OBJECT" Set "" value "$PCT" 2>/dev/null || true
|
$QDBUS_CMD "$PROGRESS_SERVICE" "$PROGRESS_OBJECT" Set "" value "$PCT" 2>/dev/null || true
|
||||||
$QDBUS_CMD "$PROGRESS_SERVICE" "$PROGRESS_OBJECT" setLabelText "$LABEL" 2>/dev/null || true
|
$QDBUS_CMD "$PROGRESS_SERVICE" "$PROGRESS_OBJECT" setLabelText "$LABEL" 2>/dev/null || true
|
||||||
|
|||||||
Reference in New Issue
Block a user