Preem
This commit is contained in:
parent
19a1d656d8
commit
87806d1cdc
1 changed files with 119 additions and 0 deletions
119
cyco.sh
Normal file
119
cyco.sh
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# ANSI colours
|
||||||
|
CYAN='\033[0;36m'
|
||||||
|
DARK_CYAN='\033[1;36m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[0;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
echo -e "${CYAN}
|
||||||
|
██████ ██ ██ ██████ ██████ ███████ ██ ██
|
||||||
|
██ ██ ██ ██ ██ ██ ██ ██ ██
|
||||||
|
██ ████ ██ ██ ██ ███████ ███████
|
||||||
|
██ ██ ██ ██ ██ ██ ██ ██
|
||||||
|
██████ ██ ██████ ██████ ██ ███████ ██ ██
|
||||||
|
${DARK_CYAN}
|
||||||
|
- CYBER COMPRESSOR -
|
||||||
|
- // https://git.cyberwa.re/revengeday/cyco // -
|
||||||
|
${NC}"
|
||||||
|
|
||||||
|
# ImageMagick check
|
||||||
|
if ! command -v mogrify &> /dev/null; then
|
||||||
|
echo -e "${RED}Oooooooops!${NC}"
|
||||||
|
echo -e "${RED}ImageMagick not found.${NC}"
|
||||||
|
echo -e "${YELLOW}Install using Homebrew:${NC}"
|
||||||
|
echo -e "${YELLOW}1. /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"${NC}"
|
||||||
|
echo -e "${YELLOW}2. brew install imagemagick${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
USE_CLI=false
|
||||||
|
CHOICE=""
|
||||||
|
FOLDER=""
|
||||||
|
FILE=""
|
||||||
|
QUALITY=""
|
||||||
|
|
||||||
|
# Argument Parsing
|
||||||
|
while [[ "$#" -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
--cli) USE_CLI=true ;;
|
||||||
|
--f) CHOICE="f"; FOLDER="$2"; shift ;;
|
||||||
|
--i) CHOICE="i"; FILE="$2"; shift ;;
|
||||||
|
--quality) QUALITY="$2"; shift ;;
|
||||||
|
*) echo -e "${RED}Unknown parameter passed: $1${NC}"; exit 1 ;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# If not in CLI mode, prompt for input
|
||||||
|
if [[ "$USE_CLI" == false ]]; then
|
||||||
|
echo -e "${YELLOW}Would you like to compress a folder or a single image? (f/i)${NC}"
|
||||||
|
read -p "Enter 'f' for folder or 'i' for image: " CHOICE
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Handle folder or file selection
|
||||||
|
if [[ "$CHOICE" == "f" ]]; then
|
||||||
|
if [[ -z "$FOLDER" ]]; then
|
||||||
|
if [[ "$USE_CLI" == true ]]; then
|
||||||
|
read -p "Enter the path to the folder: " FOLDER
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}Select a folder with images to compress.${NC}"
|
||||||
|
FOLDER=$(osascript -e 'tell application "Finder" to POSIX path of (choose folder)')
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$FOLDER" ]]; then
|
||||||
|
echo -e "${RED}No folder selected.${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
shopt -s nullglob
|
||||||
|
FILES=("$FOLDER"/*.{jpg,jpeg,png,JPG,JPEG,PNG})
|
||||||
|
shopt -u nullglob
|
||||||
|
|
||||||
|
if [ ${#FILES[@]} -eq 0 ]; then
|
||||||
|
echo -e "${YELLOW}Yikes, no images found in the folder.${NC}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
elif [[ "$CHOICE" == "i" ]]; then
|
||||||
|
if [[ -z "$FILE" ]]; then
|
||||||
|
if [[ "$USE_CLI" == true ]]; then
|
||||||
|
read -p "Enter the path to the image: " FILE
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}Select an image to compress.${NC}"
|
||||||
|
FILE=$(osascript -e 'tell application "Finder" to POSIX path of (choose file)')
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$FILE" ]]; then
|
||||||
|
echo -e "${RED}No image selected.${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
FILES=("$FILE")
|
||||||
|
else
|
||||||
|
echo -e "${RED}Invalid choice. Please enter 'f' or 'i'.${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Quality input
|
||||||
|
if [[ -z "$QUALITY" ]]; then
|
||||||
|
read -p "Enter quality (1-100): " QUALITY
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ "$QUALITY" =~ ^[1-9][0-9]?$|^100$ ]]; then
|
||||||
|
echo -e "${RED}Invalid quality. Enter a number 1-100.${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Compression
|
||||||
|
for file in "${FILES[@]}"; do
|
||||||
|
echo -e "${YELLOW}Compressing $file with quality $QUALITY...${NC}"
|
||||||
|
mogrify -quality "$QUALITY" "$file" && \
|
||||||
|
echo -e "${GREEN}Compressed: $file${NC}" || \
|
||||||
|
echo -e "${RED}Failed: $file${NC}"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo -e "${GREEN}Compression done.${NC}"
|
Loading…
Add table
Reference in a new issue