Update cdscript.sh
This commit is contained in:
parent
c3efb6f06c
commit
a4463ca28d
1 changed files with 137 additions and 37 deletions
174
cdscript.sh
174
cdscript.sh
|
|
@ -11,73 +11,146 @@
|
|||
# ░ ░ ░ ░ ░ ░ ░ ░
|
||||
# ░ ░ ░
|
||||
#
|
||||
# script to make cd jewerl case inserts easily
|
||||
# script to make cd jewel case inserts easily
|
||||
# by sun https://sx7n8.tech/
|
||||
#
|
||||
# dependencies are:
|
||||
# imagemagick
|
||||
# imagemagick, bash
|
||||
|
||||
# TODO: add super jewel box and "digipack"
|
||||
# TODO: make code good
|
||||
|
||||
|
||||
# temp directory where images get created before stitching them
|
||||
TMP=/tmp
|
||||
# general info
|
||||
EXT="jpg" # DO NOT CHANGE THIS TO PNG
|
||||
TMP="/tmp"
|
||||
NAME=work."$EXT"
|
||||
COVER="meow"
|
||||
rm -f "$TMP"/"$NAME"
|
||||
|
||||
|
||||
# message that gets printed if theres missing or unexistant arguments
|
||||
USAGE="Usage: $0 [OPTIONS] [OUTPUT]\nTry '$0 -h' for more information"
|
||||
USAGE="Usage: $0 -p <paper> -c <cover> [OPTIONS] [OUTPUT]\nTry '$0 -h' for more information"
|
||||
|
||||
|
||||
# help message
|
||||
HELP="
|
||||
$0: Script to create printable CD jewel case inserts. Uses imagemagick.\n
|
||||
Options:\n
|
||||
-h: shows this message and exits\n
|
||||
-p: sets paper format. options are 'a4' and 'letter'"
|
||||
HELP="Script to create printable CD jewel case inserts.
|
||||
Options:
|
||||
|
||||
flags extra options
|
||||
-------------------------------------------------------------
|
||||
-h: shows this message and exits none
|
||||
-p: sets paper format. (necessary) a4|letter
|
||||
-c: sets the album cover path. (necessary) <path>
|
||||
-b: sets the back info. (necessary) no|image
|
||||
-i: sets the back image (nec. if b = image) <path>
|
||||
-m: sets a border around everything, width(px)
|
||||
"
|
||||
|
||||
###########################################
|
||||
### TODO: make the code and io not suck ###
|
||||
###########################################
|
||||
|
||||
# getops argument handling
|
||||
while getopts "hp:c:b:i:m:" o; do
|
||||
case "${o}" in
|
||||
h)
|
||||
echo -e "$HELP"
|
||||
exit
|
||||
;;
|
||||
|
||||
p)
|
||||
if [[ "$OPTARG" = "a4" || "$OPTARG" = "letter" ]]; then
|
||||
PAPER="$OPTARG"
|
||||
else
|
||||
echo "Invalid paper type. Run '$0 -h' for info."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
c)
|
||||
if [ -f "$OPTARG" ]; then
|
||||
COVER="$OPTARG"
|
||||
COVERSIZE="$(identify -format "%w" "$COVER")"
|
||||
else
|
||||
echo "Invalid file. Run '$0 -h' for info."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
b)
|
||||
if [[ "$OPTARG" = "no" || "$OPTARG" = "image" ]]; then
|
||||
BACKTYPE=$OPTARG
|
||||
else
|
||||
echo "Invalid back type. Run '$0 -h' for info."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
i)
|
||||
if [[ "$BACKTYPE" = "image" ]]; then
|
||||
BACKIMG=$OPTARG
|
||||
else
|
||||
echo "Invalid back type. Run '$0 -h' for info."
|
||||
exit 1
|
||||
fi
|
||||
if [ -f "$OPTARG" ]; then
|
||||
:
|
||||
else
|
||||
echo "Invalid file. Run '$0 -h' for info."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
m)
|
||||
BORDER="TRUE"
|
||||
BORDER_WIDTH="$OPTARG"
|
||||
;;
|
||||
|
||||
# print the usage message if there are no arguments
|
||||
if [ $# -eq 0 ]; then
|
||||
echo -e $USAGE
|
||||
*)
|
||||
echo -e "$USAGE"
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
# print the usage message if there aren't enough arguments
|
||||
if [ $# -lt 6 ]; then
|
||||
echo -e "$USAGE"
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
# DPIl; Width and Height in mm
|
||||
# function to convert mm to px with dpi
|
||||
CONVERT() { awk -v mm="$1" -v dpi="$2" 'BEGIN{printf("%d", mm/25.4*dpi + 0.5)}'; }
|
||||
|
||||
|
||||
# DPI of paper
|
||||
DPI="300"
|
||||
|
||||
|
||||
# cover art size (mm)
|
||||
CO_MM="120"
|
||||
CO_PX="$(CONVERT "$CO_MM" "$DPI")"
|
||||
|
||||
|
||||
# Width and Height of paper in mm
|
||||
A4MM_W="210"
|
||||
A4MM_H="297"
|
||||
LTMM_W="216"
|
||||
LTMM_H="279"
|
||||
DPI='300'
|
||||
|
||||
# function to convert mm to px with dpi
|
||||
CONVERT() { awk -v mm="$1" -v dpi="$2" 'BEGIN{printf("%d", mm/25.4*dpi + 0.5)}'; }
|
||||
|
||||
#
|
||||
# same values in pixels
|
||||
A4PX="$(CONVERT "$A4MM_W" "$DPI")x$(CONVERT "$A4MM_H" "$DPI")"
|
||||
LTPX="$(CONVERT "$LTMM_W" "$DPI")x$(CONVERT "$LTMM_H" "$DPI")"
|
||||
|
||||
|
||||
# command line option handling
|
||||
while getopts ":p:h" o; do
|
||||
case "${o}" in
|
||||
h)
|
||||
echo -e $HELP
|
||||
exit
|
||||
;;
|
||||
p)
|
||||
PAPER="$OPTARG"
|
||||
;;
|
||||
*)
|
||||
echo -e $USAGE
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
# assign to the 'size' variable the right value
|
||||
if [ "$PAPER" = "a4" ]; then
|
||||
SIZE=$A4PX
|
||||
elif [ "$PAPER" = "letter" ]; then
|
||||
elif [ "$PAPER" = "letter" ]; then
|
||||
SIZE=$LTPX
|
||||
else
|
||||
echo "what the fuck did you do"
|
||||
|
|
@ -85,5 +158,32 @@ else
|
|||
fi
|
||||
|
||||
|
||||
# failsafe
|
||||
# if [ "$COVER" = "meow" ];
|
||||
# echo -e "$USAGE"
|
||||
# fi
|
||||
|
||||
|
||||
# create a blank file with the specified paper type
|
||||
magick -size $SIZE canvas:white $TMP/front.png
|
||||
magick -colorspace sRGB -type TrueColor -depth 8 -size $SIZE canvas:white "$TMP"/"$NAME" > /dev/null
|
||||
|
||||
|
||||
# draws border (rectangle)
|
||||
if [ "$BORDER" = "TRUE" ]; then
|
||||
INSET=$((BORDER_WIDTH / 2))
|
||||
magick "$TMP/$NAME" \( -size $((CO_PX + 2 * BORDER_WIDTH))x$((CO_PX * 2 + 2 * BORDER_WIDTH)) xc:none -colorspace sRGB -type TrueColor -depth 8 -fill none -stroke black -strokewidth $BORDER_WIDTH -draw "rectangle $INSET,$INSET $((CO_PX + BORDER_WIDTH - 1)),$((CO_PX * 2 + BORDER_WIDTH - 1))" \) -gravity center -composite "$TMP/$NAME"
|
||||
fi
|
||||
|
||||
|
||||
# add the cover art set to the right size, rotated left by 90d and shifted up by (cover art size) / 2
|
||||
# TODO: change rotation to a variable to allow different folding points via argument
|
||||
# TODO: make command multi-line for readibility
|
||||
magick -colorspace sRGB -type TrueColor -depth 8 "$TMP"/"$NAME" \( "$COVER" -resize ${CO_PX}x${CO_PX} -rotate 270 \) -gravity center -geometry +0-$((CO_PX/2)) -composite "$TMP"/"$NAME" > /dev/null
|
||||
|
||||
|
||||
# adds back
|
||||
if [ "$BACKTYPE" = "image" ]; then
|
||||
magick -colorspace sRGB -type TrueColor -depth 8 "$TMP"/"$NAME" \( "$BACKIMG" -resize ${CO_PX}x${CO_PX} -rotate 270 \) -gravity center -geometry +0+$((CO_PX/2)) -composite "$TMP"/"$NAME" > /dev/null
|
||||
else
|
||||
:
|
||||
fi
|
||||
Loading…
Add table
Reference in a new issue