scripts/run-messages

#!/bin/bash

Messages content extraction script

Extracts personal messages from ZIP archives and processes them

set -euo pipefail

{{{ setup_dir_path

setup_dir_path() {
if [ -n "$1" ]; then
echo "$1"
else
echo "/mnt/mtwo/programming/ai-stuff/neocities-modernization"
fi
}

}}}

Parse command line arguments for project directory

SCRIPT_DIR=""
while [[ $# -gt 0 ]]; do
case $1 in
-*)
echo "Unknown option: $1" >&2
exit 1
;;
*)
SCRIPT_DIR="$1"
shift
;;
esac
done

Set up project directory

PROJECT_DIR=$(setup_dir_path "$SCRIPT_DIR")

Use project input directory

DIR="${PROJECT_DIR}/input"
ZIP_FILE_NAME="similar-different.zip"

mkdir -p "${DIR}/extract"

#unnecessary unless the script crashes
rm -drf "${DIR}/extract"

unzip -o -qq "${DIR}/${ZIP_FILE_NAME}" -d "${DIR}/extract/"
mv ${DIR}/extract/* ${DIR}/extract/export

cd "${DIR}"
luajit "${PROJECT_DIR}/scripts/extract-messages.lua" "${PROJECT_DIR}"
cd -

Issue 8-054: Preserve images to permanent location before cleanup

Copy images from extract to messages/images/ for persistent storage

if [ -d "${DIR}/extract/export/images" ]; then
mkdir -p "${DIR}/messages/images"
cp -r "${DIR}/extract/export/images/"* "${DIR}/messages/images/" 2>/dev/null || true
echo "🖼️ Preserved $(ls -1 "${DIR}/messages/images" 2>/dev/null | wc -l) images to input/messages/images/"
fi

rm -drf "${DIR}/extract"

Legacy txt file processing (deprecated - now using JSON output)

Skip entire legacy section if no txt files exist (JSON-only mode)

Blacklisting is now handled by exclusion-filter.lua (Issue 6-031)

Combined messages would need to be implemented in Lua if still needed

if ls "${DIR}/files/"*.txt 1>/dev/null 2>&1; then
# timestamps
for file in "${DIR}/files/"*.txt; do
file_date=$(head -n 1 "$file")
tail -n +2 "$file" > "${file}.tmp" && mv "${file}.tmp" "$file"
touch -d "$file_date" "$file"
done

blacklisted messages (legacy - now using exclusion filter)

function delete-message(){
rm "${DIR}/files/${1}.txt" 2>/dev/null || true
}

{{{

delete-message 0001
delete-message 0448
delete-message 0265
delete-message 0153
delete-message 0057
delete-message 0059
delete-message 0183
delete-message 0040
delete-message 0038
delete-message 0051
delete-message 0064
delete-message 0056
delete-message 0241
delete-message 0039
delete-message 0014
delete-message 0074
delete-message 0157
delete-message 0007
delete-message 0253
delete-message 0047
delete-message 0072
delete-message 0044
delete-message 0063
delete-message 0027
delete-message 0036
delete-message 0050
delete-message 0048
delete-message 0067
delete-message 0015
delete-message 0042
delete-message 0008
delete-message 0058
delete-message 0031
delete-message 0066
delete-message 0046
delete-message 0065
delete-message 0023
delete-message 0049
delete-message 0068
delete-message 0120
delete-message 0134
delete-message 0019
delete-message 0017
delete-message 0184
delete-message 0158
delete-message 0222
delete-message 0236
delete-message 0013
delete-message 0016
delete-message 0028
delete-message 0041
delete-message 0009
delete-message 0010
delete-message 0011
delete-message 0012
delete-message 0021
delete-message 0035
delete-message 0037
delete-message 0054
delete-message 0055
delete-message 0060
delete-message 0061
delete-message 0062
delete-message 0069
delete-message 0070

}}}

combined messages

function combine-messages(){
# first generate a random color:
foreground_color=0
background_color=4
while [ "${background_color}" -eq 4 ]; do
background_color=$(shuf -i 1-7 -n 1)
done

FILE1="$(cat ${DIR}/files/${1}.txt)"
FILE2="$(cat ${DIR}/files/${2}.txt)"
rm "${DIR}/files/${1}.txt"
rm "${DIR}/files/${2}.txt"
touch "${DIR}/files/${1}.txt"
echo "${FILE1} " > "${DIR}/files/${1}.txt"
echo -e "\033[3${foreground_color}m" >> "${DIR}/files/${1}.txt"
echo -e "\033[4${background_color}m" >> "${DIR}/files/${1}.txt"
echo "${FILE2}" >> "${DIR}/files/${1}.txt"

}

{{{

combine-messages 0240 0242
combine-messages 0240 0243
combine-messages 0240 0244
combine-messages 0209 0210
combine-messages 0209 0211
combine-messages 0209 0212
combine-messages 0259 0260
combine-messages 0333 0334
combine-messages 0335 0336
combine-messages 0335 0337
combine-messages 0335 0338
combine-messages 0335 0339
combine-messages 0335 0340
combine-messages 0335 0341
combine-messages 0335 0342
combine-messages 0335 0343
combine-messages 0335 0344
combine-messages 0335 0345
combine-messages 0335 0346
combine-messages 0335 0347
combine-messages 0335 0348

}}}

else
echo "📋 Using JSON output mode (legacy txt processing skipped)"
fi