Upload files to "/"
This commit is contained in:
commit
97966fea5d
1 changed files with 146 additions and 0 deletions
146
File Converter
Normal file
146
File Converter
Normal file
|
|
@ -0,0 +1,146 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
FILES=$(echo -e "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
|
||||||
|
|
||||||
|
if [ -z "$FILES" ]; then
|
||||||
|
zenity --error --text="No files selected."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
first_file=$(echo "$FILES" | head -n1)
|
||||||
|
EXT="${first_file##*.}"
|
||||||
|
EXT_LOWER=$(echo "$EXT" | tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
|
case "$EXT_LOWER" in
|
||||||
|
jpg|jpeg|png|webp)
|
||||||
|
MIME_CATEGORY="image"
|
||||||
|
;;
|
||||||
|
pdf)
|
||||||
|
MIME_CATEGORY="pdf"
|
||||||
|
;;
|
||||||
|
mp3|ogg|wav|flac)
|
||||||
|
MIME_CATEGORY="audio"
|
||||||
|
;;
|
||||||
|
mp4|webm|avi|mkv)
|
||||||
|
MIME_CATEGORY="video"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
zenity --error --text="Unsupported file extension :("
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$MIME_CATEGORY" in
|
||||||
|
image)
|
||||||
|
OPTIONS="JPEG\tjpg\nPNG\tpng\nWEBP\twebp\nPDF\tpdf"
|
||||||
|
;;
|
||||||
|
pdf)
|
||||||
|
OPTIONS="PDF\tpdf"
|
||||||
|
;;
|
||||||
|
audio)
|
||||||
|
OPTIONS="MP3\tmp3\nOGG\togg\nWAV\twav\nFLAC\tflac"
|
||||||
|
;;
|
||||||
|
video)
|
||||||
|
OPTIONS="MP4\tmp4\nWEBM\twebm\nAVI\tavi\nMKV\tmkv\nMP3\tmp3\nOGG\togg\nWAV\twav\nFLAC\tflac"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
OUTPUT_EXT=$(zenity --list \
|
||||||
|
--title="Convert $MIME_CATEGORY files" \
|
||||||
|
--print-column=2 \
|
||||||
|
--column="Format" --column="Extension" \
|
||||||
|
$(echo -e "$OPTIONS"))
|
||||||
|
|
||||||
|
if [ -z "$OUTPUT_EXT" ]; then exit 0; fi
|
||||||
|
|
||||||
|
QUALITY=""
|
||||||
|
case "$OUTPUT_EXT" in
|
||||||
|
jpg|jpeg)
|
||||||
|
QUALITY=$(zenity --scale --title="Select JPEG quality (1-100)" --min-value=1 --max-value=100 --value=85)
|
||||||
|
;;
|
||||||
|
mp3|ogg|wav)
|
||||||
|
QUALITY=$(zenity --scale --title="Select audio bitrate (kbps)" --min-value=64 --max-value=320 --value=192 --step=16)
|
||||||
|
;;
|
||||||
|
mp4|webm|avi|mkv)
|
||||||
|
QUALITY=$(zenity --scale --title="Select video bitrate (kbps)" --min-value=500 --max-value=5000 --value=2000 --step=100)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
total=$(echo "$FILES" | wc -l)
|
||||||
|
count=0
|
||||||
|
|
||||||
|
(
|
||||||
|
IFS=$'\n'
|
||||||
|
for FILE in $FILES; do
|
||||||
|
count=$((count + 1))
|
||||||
|
echo $(( count * 100 / total )) # update progress bar
|
||||||
|
echo "Converting: $(basename "$FILE")"
|
||||||
|
|
||||||
|
DIR=$(dirname "$FILE")
|
||||||
|
BASENAME=$(basename "$FILE")
|
||||||
|
NAME="${BASENAME%.*}"
|
||||||
|
OUTPUT_PATH="$DIR/$NAME.$OUTPUT_EXT"
|
||||||
|
|
||||||
|
EXT="${FILE##*.}"
|
||||||
|
EXT_LOWER=$(echo "$EXT" | tr '[:upper:]' '[:lower:]')
|
||||||
|
case "$EXT_LOWER" in
|
||||||
|
jpg|jpeg|png|webp)
|
||||||
|
FILE_CATEGORY="image"
|
||||||
|
;;
|
||||||
|
pdf)
|
||||||
|
FILE_CATEGORY="pdf"
|
||||||
|
;;
|
||||||
|
mp3|ogg|wav)
|
||||||
|
FILE_CATEGORY="audio"
|
||||||
|
;;
|
||||||
|
mp4|webm|avi|mkv)
|
||||||
|
FILE_CATEGORY="video"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
FILE_CATEGORY="unknown"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ "$FILE_CATEGORY" = "unknown" ]; then
|
||||||
|
echo "Skipping unsupported file: $FILE" >&2
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run commands with error output visible (not silent)
|
||||||
|
case "$FILE_CATEGORY" in
|
||||||
|
image|pdf)
|
||||||
|
if [ -n "$QUALITY" ] && [[ "$OUTPUT_EXT" == jpg || "$OUTPUT_EXT" == jpeg ]]; then
|
||||||
|
convert "$FILE" -quality "$QUALITY" "$OUTPUT_PATH" || echo "Failed to convert $FILE" >&2
|
||||||
|
else
|
||||||
|
convert "$FILE" "$OUTPUT_PATH" || echo "Failed to convert $FILE" >&2
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
audio)
|
||||||
|
if [ -n "$QUALITY" ]; then
|
||||||
|
ffmpeg -loglevel error -y -i "$FILE" -b:a "${QUALITY}k" "$OUTPUT_PATH" || echo "Failed to convert $FILE" >&2
|
||||||
|
else
|
||||||
|
ffmpeg -loglevel error -y -i "$FILE" "$OUTPUT_PATH" || echo "Failed to convert $FILE" >&2
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
video)
|
||||||
|
case "$OUTPUT_EXT" in
|
||||||
|
mp3|ogg|wav)
|
||||||
|
if [ -n "$QUALITY" ]; then
|
||||||
|
ffmpeg -loglevel error -y -i "$FILE" -vn -b:a "${QUALITY}k" "$OUTPUT_PATH" || echo "Failed to convert $FILE" >&2
|
||||||
|
else
|
||||||
|
ffmpeg -loglevel error -y -i "$FILE" -vn "$OUTPUT_PATH" || echo "Failed to convert $FILE" >&2
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ -n "$QUALITY" ]; then
|
||||||
|
ffmpeg -loglevel error -y -i "$FILE" -b:v "${QUALITY}k" "$OUTPUT_PATH" || echo "Failed to convert $FILE" >&2
|
||||||
|
else
|
||||||
|
ffmpeg -loglevel error -y -i "$FILE" "$OUTPUT_PATH" || echo "Failed to convert $FILE" >&2
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
done
|
||||||
|
) | zenity --progress --title="Batch converting files..." --percentage=0 --auto-close --width=400
|
||||||
Loading…
Reference in a new issue