66 lines
1.4 KiB
Bash
66 lines
1.4 KiB
Bash
#!/bin/sh
|
|
|
|
# --------------------------------------
|
|
# main
|
|
|
|
# STRING --> STRING
|
|
# return the 255 color of a username
|
|
function name_color255 {
|
|
username="$1"
|
|
result_stack=""
|
|
|
|
hex=$(name_color_hex "$username"); result_stack="$result_stack $?"
|
|
hex255=$(hex_to_255 $hex); result_stack="$result_stack $?"
|
|
color="$(color_255 $hex255)"; result_stack="$result_stack $?"
|
|
|
|
|
|
if echo "$result_stack" | grep 1 > /dev/null
|
|
then
|
|
color="$(name_color8 "$username")"
|
|
fi
|
|
|
|
echo "$color"
|
|
}
|
|
|
|
|
|
|
|
# --------------------------------------
|
|
# helper functions
|
|
|
|
# STRING --> STRING
|
|
# return the hexcode of a username (from CSS)
|
|
function name_color_hex {
|
|
username="$1"
|
|
|
|
if test ! -e /tmp/255.html; then
|
|
gendl -o /tmp/255.html "http://unichat-comic.com/comics/1"
|
|
fi
|
|
|
|
cat /tmp/255.html \
|
|
| grep ".${username} { color:" \
|
|
| sed 's/.*color: #//' \
|
|
| sed 's/ \!important.*//'
|
|
}
|
|
|
|
# STRING --> NUMBER
|
|
# return the 255 number of a color hexcode
|
|
# from https://unix.stackexchange.com/a/269085
|
|
function hex_to_255 {
|
|
hex=${1#"#"}
|
|
r=$(printf '0x%0.2s' "$hex" 2>/dev/null)
|
|
g=$(printf '0x%0.2s' ${hex#??} 2>/dev/null)
|
|
b=$(printf '0x%0.2s' ${hex#????} 2>/dev/null)
|
|
printf '%03d' "$(( (r<75?0:(r-35)/40)*6*6 +
|
|
(g<75?0:(g-35)/40)*6 +
|
|
(b<75?0:(b-35)/40) + 16 ))" 2>/dev/null
|
|
}
|
|
|
|
# NUMBER --> STRING
|
|
# return 255 ANSI escape-code of a color
|
|
# frlom https://unix.stackexchange.com/a/269085
|
|
function color_255 {
|
|
for c; do
|
|
printf '\e[38;5;%dm' $c 2>/dev/null
|
|
done
|
|
}
|