sms-sender/extract-contacts

60 行
1.2 KiB
Bash
Executable File

#!/bin/sh
SCRIPT_NAME="$(realpath "$0")"
SCRIPT_PATH="$(dirname "$SCRIPT_NAME")"
cd "$SCRIPT_PATH"
if [ -z "$FILE" ]; then
printf " Usage:\\n"
printf " FILE=/path/to/contacts.vcf %s\\n" "$0"
exit 0
fi
CACHE="cache/$(basename "$FILE").cache"
if [ -f "$CACHE" ]; then
cat "$CACHE"
exit
fi
touch "$CACHE"
chmod 600 "$CACHE"
cat "$FILE" | while read LINE; do
FLAG="$(echo "$LINE" | cut -d: -f1)"
VALUE="$(echo "$LINE" | cut -d: -f2- | sed "s/\r//g" | sed "s/\n//g")"
if [ "$FLAG" = "END" ]; then
if [ -n "$FULL_NAME" ] && [ -n "$PHONE" ]; then
printf "%s|%s\\n" "$FULL_NAME" "$PHONE"
fi
FULL_NAME=
PHONE=
export FULL_NAME
export PHONE
elif [ "$FLAG" = "FN" ] && [ -n "$VALUE" ]; then
FULL_NAME="$VALUE"
export FULL_NAME
elif [ "$FLAG" = "FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE" ] && [ -n "$VALUE" ]; then
FULL_NAME="$(printf "$VALUE" | perl -MMIME::QuotedPrint -pe '$_=MIME::QuotedPrint::decode($_);')"
export FULL_NAME
elif [ "$FLAG" = "TEL;CELL;PREF" ] && [ -n "$VALUE" ]; then
PHONE="$VALUE"
export PHONE
elif [ "$FLAG" = "TEL;CELL" ] && [ -n "$VALUE" ]; then
PHONE="$VALUE"
export PHONE
fi
done > "$CACHE"
cat "$CACHE"