104 lines
2.2 KiB
Plaintext
104 lines
2.2 KiB
Plaintext
|
#! /bin/sh
|
||
|
|
||
|
case "$1" in
|
||
|
*.*) fullemojis="$1"; shift;;
|
||
|
"") echo "Usage: `basename $0` .../full-emoji-list.html [emoji style]..." >&2
|
||
|
echo >&2
|
||
|
echo "This script extracts emojis graphics (.png format) from a downloaded copy of" >&2
|
||
|
echo " http://www.unicode.org/emoji/charts-11.0/full-emoji-list.html" >&2
|
||
|
echo "for the selected emoji style sets, or (if none selected) all of them:" >&2
|
||
|
echo " apple google twitter emojione facebook samsung windows" >&2
|
||
|
echo "and always extracts common emoji graphics." >&2
|
||
|
echo >&2
|
||
|
echo "Warning: with all styles selected, this may take a few hours on Cygwin." >&2
|
||
|
exit;;
|
||
|
*) echo missing file name of full emoji list >&2; exit;;
|
||
|
esac
|
||
|
|
||
|
sel=
|
||
|
while case "$1" in
|
||
|
apple) sel="1$sel";;
|
||
|
google) sel="2$sel";;
|
||
|
twitter) sel="3$sel";;
|
||
|
emojione) sel="4$sel";;
|
||
|
facebook) sel="5$sel";;
|
||
|
samsung) sel="6$sel";;
|
||
|
windows) sel="7$sel";;
|
||
|
"") false;;
|
||
|
*) echo emoji set "$1" not known; exit;;
|
||
|
esac
|
||
|
do shift
|
||
|
done
|
||
|
|
||
|
sel=0${sel:-1234567}
|
||
|
export sel
|
||
|
|
||
|
echo "Warning: this may take a few hours on Cygwin" >&2
|
||
|
|
||
|
LC_ALL=C
|
||
|
export LC_ALL
|
||
|
|
||
|
total=`grep -e "name='\([^']*\)'.*U+" "$fullemojis" | wc -l`
|
||
|
export total
|
||
|
|
||
|
(
|
||
|
echo "Extracting $total emojis from $fullemojis" >&2
|
||
|
|
||
|
cat <<\/EOS
|
||
|
n=0
|
||
|
|
||
|
name () {
|
||
|
ename=$1
|
||
|
style=0
|
||
|
n=$(( $n + 1 ))
|
||
|
p=$(( ${n}00 / $total ))
|
||
|
echo "emoji $ename (${p}%)" >&2
|
||
|
}
|
||
|
|
||
|
img0 () {
|
||
|
echo " common 0/$ename.png" >&2
|
||
|
echo "$1" | base64 -d > 0/$ename.png
|
||
|
}
|
||
|
|
||
|
img () {
|
||
|
style=$(( $style + 1 ))
|
||
|
case $sel in
|
||
|
*$style*) echo "$1" | base64 -d > $style/$ename.png;;
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
imgskip () {
|
||
|
style=$(( $style + 1 ))
|
||
|
case $sel in
|
||
|
*$style*) echo " skip $style/$ename.png" >&2;;
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
/EOS
|
||
|
|
||
|
mkdirlink () {
|
||
|
case $sel in
|
||
|
*$1*) mkdir -p $1
|
||
|
[ -e "$2" ] || ln -s "$1" "$2"
|
||
|
;;
|
||
|
esac
|
||
|
}
|
||
|
mkdirlink 1 apple
|
||
|
mkdirlink 2 google
|
||
|
mkdirlink 3 twitter
|
||
|
mkdirlink 4 emojione
|
||
|
mkdirlink 5 facebook
|
||
|
mkdirlink 6 samsung
|
||
|
mkdirlink 7 windows
|
||
|
mkdirlink 0 common
|
||
|
|
||
|
cat "$fullemojis" |
|
||
|
sed -e "s/^.*name='\([^']*\)'.*U+.*/name \1/" -e "t name" \
|
||
|
-e "s/.*—.*/imgskip/" -e t \
|
||
|
-e "s@^.*….*src='data:image/png;base64,\([^']*\)'.*@img0 \1@" -e t \
|
||
|
-e "s@^.*src='data:image/png;base64,\([^']*\)'.*@img \1@" -e t \
|
||
|
-e d \
|
||
|
-e ": name" \
|
||
|
-e "s,_,-,g"
|
||
|
) | sh
|