ptouch autosplit and makemkv-key-grabber
This commit is contained in:
29
almost_oneliners/makemkv-key.sh
Executable file
29
almost_oneliners/makemkv-key.sh
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
|
||||
# small script to extract the makemkv-beta-key from the forum as it changes once a month
|
||||
|
||||
# URL of the MakeMKV forum post
|
||||
FORUM_URL="https://forum.makemkv.com/forum/viewtopic.php?f=5&t=1053"
|
||||
|
||||
# Fetch the page content
|
||||
CONTENT=$(curl -sL "$FORUM_URL")
|
||||
|
||||
# 1. Extract the key (T- followed by 66 alphanumeric characters)
|
||||
KEY=$(echo "$CONTENT" | grep -oP 'T-[a-zA-Z0-9]{66}')
|
||||
|
||||
# 2. Extract the line immediately following the key
|
||||
# - sed 's/<[^>]*>/\n/g': Replaces all HTML tags with newlines to isolate text
|
||||
# - grep -A 5 "$KEY": Gets 5 lines of context after the key
|
||||
# - grep -v "$KEY": Removes the line containing the key itself
|
||||
# - grep -m 1 "[[:alnum:]]": Grabs the very next line containing actual text
|
||||
# - sed 's/ / /g': Cleans up non-breaking space entities
|
||||
VALIDITY=$(echo "$CONTENT" | sed 's/<[^>]*>/\n/g' | grep -A 5 "$KEY" | grep -v "$KEY" | grep -m 1 "[[:alnum:]]" | sed 's/ / /g; s/^[[:space:]]*//; s/[[:space:]]*$//')
|
||||
|
||||
# Output
|
||||
if [ -n "$KEY" ]; then
|
||||
echo "$KEY"
|
||||
echo "$VALIDITY"
|
||||
else
|
||||
echo "Error: Could not retrieve data from the forum."
|
||||
exit 1
|
||||
fi
|
||||
74
almost_oneliners/ptouch-autosplit.sh
Executable file
74
almost_oneliners/ptouch-autosplit.sh
Executable file
@@ -0,0 +1,74 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Default values
|
||||
INVERT=false
|
||||
|
||||
# Help function
|
||||
usage() {
|
||||
echo "Usage: $0 [-i] <tape_width_mm> <input_image.png>"
|
||||
echo "Options:"
|
||||
echo " -i Invert colors (Black -> White, White -> Black)"
|
||||
echo "Example: $0 -i 12 sticker.png"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Parse options
|
||||
while getopts "i" opt; do
|
||||
case $opt in
|
||||
i) INVERT=true ;;
|
||||
*) usage ;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND-1))
|
||||
|
||||
# Check for remaining arguments
|
||||
if [ "$#" -ne 2 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
TAPE_WIDTH=$1
|
||||
INPUT_FILE=$2
|
||||
|
||||
# Map tape width (mm) to pixel height
|
||||
case $TAPE_WIDTH in
|
||||
3.5) PIXELS=24 ;;
|
||||
6) PIXELS=32 ;;
|
||||
9) PIXELS=48 ;;
|
||||
12) PIXELS=64 ;;
|
||||
18) PIXELS=96 ;;
|
||||
24) PIXELS=128 ;;
|
||||
36) PIXELS=192 ;;
|
||||
*)
|
||||
echo "Error: Unsupported tape width ($TAPE_WIDTH mm)."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ ! -f "$INPUT_FILE" ]; then
|
||||
echo "Error: File $INPUT_FILE not found."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
FILENAME=$(basename -- "$INPUT_FILE")
|
||||
EXTENSION="${FILENAME##*.}"
|
||||
BASENAME="${FILENAME%.*}"
|
||||
|
||||
# Prepare the magick command parts
|
||||
INVERT_CMD=""
|
||||
if [ "$INVERT" = true ]; then
|
||||
INVERT_CMD="-negate"
|
||||
echo "Color inversion: ENABLED"
|
||||
fi
|
||||
|
||||
echo "Processing $INPUT_FILE for ${TAPE_WIDTH}mm tape (${PIXELS}px slices)..."
|
||||
|
||||
# Execute ImageMagick
|
||||
magick "$INPUT_FILE" \
|
||||
$INVERT_CMD \
|
||||
-threshold 50% \
|
||||
-type Bilevel \
|
||||
-crop x${PIXELS} \
|
||||
+repage \
|
||||
"${BASENAME}_${TAPE_WIDTH}mm_%d.${EXTENSION}"
|
||||
|
||||
echo "Done! Slices saved as: ${BASENAME}_${TAPE_WIDTH}mm_*.${EXTENSION}"
|
||||
Reference in New Issue
Block a user