Skip to content
Extraits de code Groupes Projets
Valider ccbeb849 rédigé par Kubat's avatar Kubat
Parcourir les fichiers

STPKG: Re-add the old matrixpack script just in case

parent 2b54524e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
#!/bin/bash
# Usage
# matrixpack token homeserver directory...
#
# Pack name is the directory name
# Sticker name is the file name
# /!\ Token is a sensitive information
# UTILITY FUNCTIONS
function require {
hash $1 2>/dev/null || {
echo >&2 "Error: '$1' is required, but was not found."; exit 1;
}
}
function slugify () {
echo "$1" | iconv -c -t ascii//TRANSLIT | sed -E 's/[~^]+//g' | sed -E 's/[^a-zA-Z0-9]+/-/g' | sed -E 's/^-+|-+$//g' | tr A-Z a-z
}
# Display usage funtion
display_usage (){
echo -e "\nUsage : ./matrixpack.sh token homeserver directory\n"
}
# Erase http:// or https:// if added in the homeserver
slug_homeserver() {
echo "$1" | iconv -c -t ascii//TRANSLIT | sed -E 's/^http:\/\/|^https:\/\///g' | sed -E 's/^-+|-+$//g'
}
# COMMON REQUIRED BINARIES
require convert
require montage
require identify
require python
require curl
require sed
require tr
# Checking params
if test $# -lt 3 ; then
echo 1>&2 "$0:FATAL: invalid argument number (expected 3)"
display_usage
exit 1
fi
# Setting variables
token=$1
homeserver=$(slug_homeserver $2)
# Checking if the homeserver exist.
# If the homeserver does not exist, the file headers is not created
curl "https://$homeserver" -I -o headers -s
if test -f "headers"; then
rm headers
else
echo 1>&2 "$0:FATAL: The homeserver \"$2\" is incorrect."
exit 1
fi
# Checking if the token exist.
# Save the error value on file "headers" and
# evaluate it to verify the token
curl -s -X POST "https://$homeserver/_matrix/media/r0/upload?access_token=$token" | python3 -c "import sys, json; print(json.load(sys.stdin)['errcode'])" >> headers
while read line; do
if [[ ($line == "M_UNKNOWN") ]]
then
rm headers
else if [[ ($line == "M_UNKNOWN_TOKEN") ]]
then
echo "$0:ERROR: The token provided is incorrect or does not exist in this homeserver"
rm headers
exit 1
else
echo "$0:ERROR: Not yet implemented error"
exit 1
fi
fi
done < headers
for i in "$@"
do
if [ -d "$i" ]; then
# Changing directory to work directly in it
cd "$i"
dir=$(pwd)
packname=${dir##*/}
slug=$(slugify "$packname")
# Printing informations
echo -e "Creating sticker pack : \033[94;1m$packname\033[0m\nhomeserver=\033[94m$homeserver\033[0m\noutput=\033[94m$slug\033[0m"
# Making result folder
if ! [ -d $slug ]; then mkdir $slug; fi
if ! [ -d "$slug/tmp" ]; then mkdir "$slug/tmp"; fi
echo -n "{\"title\":\"$packname\",\"id\":\"$slug\",\"stickers\":[" > "$slug/$slug.json"
first=""
for f in *
do
# Ignore folders
if [ -f "$f" ]; then
# Resizing large images
width=$(identify -format "%w" "$f"[0])> /dev/null
height=$(identify -format "%h" "$f"[0])> /dev/null
if [ $width -gt 256 ]; then
width="256";
fi
if [ $height -gt 256 ]; then
height="256";
fi
echo -n "$f : "
type="png"
opts="-type TrueColor PNG32:"
# Gif
if [[ "$f" == *.gif ]]; then
type="gif"
opts=""
fi
# Erase the extension of the image
sticker_name=$(echo "$f" | cut -f 1 -d '.')
# Trim, resize and remove indexed palette from image
echo -n "trimming and resizing"
convert "$f" -bordercolor none -border 1 "$slug/tmp/$f.$type"
echo -n "."
convert "$slug/tmp/$f.$type" -trim +repage "$slug/tmp/$f.$type"
echo -n "."
convert -background none -gravity center "$slug/tmp/$f.$type" -resize "${width}x$height" $opts"$slug/tmp/$f.$type"
echo -ne ". \033[92mdone\033[0m! "
# First item in array
echo -n "$first" >> "$slug/$slug.json"
# Uploading image
echo -n "uploading."
mxc=$(curl -s -X POST -H "Content-Type: image/$type" --data-binary "@$slug/tmp/$f.$type" "https://$homeserver/_matrix/media/r0/upload?access_token=$token" | python -c "import sys, json; print(json.load(sys.stdin)['content_uri'])")
echo -n "."
# Calculating 128x128> format
convert "$slug/tmp/$f.$type" -resize "128x128" "$slug/tmp/size"
width=$(identify -format "%w" "$slug/tmp/size"[0])> /dev/null
height=$(identify -format "%h" "$slug/tmp/size"[0])> /dev/null
# Appending to json
echo -n "{\"body\":\"$sticker_name\",\"info\":{\"mimetype\":\"image/$type\",\"h\":$height,\"w\":$width,\"thumbnail_url\":\"$mxc\"},\"msgtype\":\"m.sticker\",\"url\":\"$mxc\",\"id\":\"$packname-$sticker_name\"}" >> "$slug/$slug.json"
first=","
echo -e ". \033[92msuccess\033[0m!"
fi
done
rm "$slug/tmp/size"
montage "$slug/tmp/*"[0] -background none "$slug/preview.png"
rm -r "$slug/tmp"
echo -ne "# $packname \n![Preview of $packname](preview.png)" > "$slug/README.md"
echo -n "]}" >> "$slug/$slug.json"
cd - > /dev/null
echo -e "\033[92;1mPack successfully created!\n\033[0mCheck \033[94;1m$dir/$slug \033[0mfor output"
fi
done
......@@ -605,10 +605,12 @@ __edit() {
local ST_JSON=$(create_sticker_json "$PACK_NAME" "$NAME" "$WIDTH" "$HEIGHT" "$TYPE" "$MXC")
jq ".stickers += [$ST_JSON]" < $TEMP | sponge $TEMP
;;
del)
[ $# -ne 0 ] && die "Extra argument are present: $*"
jq "del(.stickers[] | select(.body == \"$STICKER_NAME\"))" < "$TEMP" | sponge "$TEMP"
;;
*)
die "Unknown action '$ACTION', should be 'add' or 'del'"
;;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter