watch-party/scripts/get_emojis_mastodon.sh

60 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eu
# Get mastodon instance from MASTODON_INSTANCE
if [ -z ${MASTODON_INSTANCE+x} ]; then
# set from $1 if available
if [ -z ${1+x} ]; then
echo "You need to provide a Mastodon instance."
exit 1
else
mastodon_instance="$1"
fi
else
mastodon_instance="$MASTODON_INSTANCE"
fi
echo "Mastodon instance: $mastodon_instance"
# Get emoji folder
emojiFolder="$(readlink -f "$(dirname $0)/../frontend/emojis/")"
echo "Downloading emojis to $emojiFolder"
echo "Creating $emojiFolder if it doesn't exist"
mkdir -p "$emojiFolder"
# load $mastodon_instance/api/v1/custom_emojis with curl into a variable
customEmojisJson=$(curl -s "$mastodon_instance/api/v1/custom_emojis")
shortcodes=$(echo "$customEmojisJson" | jq -r '.[].shortcode')
readarray -t shortcodesArray <<< "$shortcodes"
urls=$(echo "$customEmojisJson" | jq -r '.[].url')
readarray -t urlsArray <<< "$urls"
visible_in_pickers=$(echo "$customEmojisJson" | jq -r '.[].visible_in_picker')
readarray -t visible_in_pickersArray <<< "$visible_in_pickers"
# read through the urls and download the emojis
for ((i=0; i<${#shortcodesArray[@]}; i++)); do
# if not visible_in_pickers, continue
if [ "${visible_in_pickersArray[$i]}" != "true" ]; then
echo "Skipping ${shortcodesArray[$i]} because it is not visible in the picker"
continue
fi
url="${urlsArray[$i]}"
# get only extension from the url
fileext=$(echo "$url" | sed 's/.*\///' | sed 's/.*\.//')
# filename is shortcode + extension
filename="${shortcodesArray[$i]}.$fileext"
# download the emoji
# if file already exists, skip
if [ -f "$emojiFolder/$filename" ]; then
echo "Skipping $filename because it already exists"
continue
fi
curl -s "$url" -o "$emojiFolder/$filename" &
done