: ' Changes
Sun Sep 20 2026 Removed styling from audio player, moved to css
Sun May 17 2026 Added -F view functions, -V view source
Tue Jul 08 2025 Added ability to handle full path and local URLs
Sat Jun 14 2025 Added hover effect to mp3 audio player
Sun Feb 23 2025 Fixed epub viewer
Wed Jan 17 2024 Added support for epub viewer, more to come.
'
[ "$1" == "-D" ] && DEBUG=1 && shift 1
PS4='$SECONDS $LINENO: '
DIR="$(basename $PWD)"
TITLE="$(echo $DIR|cut -d'.' -f1|tr '-' ' '|sed -e 's/.*/\L&/' -e 's/[a-z]*/\u&/g')"
NAME=${0##*/}
bl(){
[ "$DEBUG" == "1" ] && set -x
echo ""
}
html(){
vim -f +"syn on" +"colorscheme industry" +"set nonu" +"set foldenable!" +"set nospell" +"run! syntax/2html.vim" +"wq" +"q" $1
}
log(){
[ "$DEBUG" == "1" ] && set -x
logger -i -t "$NAME" "$*"
}
pause(){
[ "$DEBUG" == "1" ] && set -x
[ "$1" == "-nt" ] && TMOUT="" && shift
echo "$BY";
if [ $# -gt 0 ]
then
read -t $1 -r -p "${C}Hit any key (${BY}$1${C} second timeout)${N}" -n 1 FOO;
else
read -r -p "${C}Hit any key${N}" -n 1 FOO;
fi;
bl
}
xtitle(){
printf "\033]0;%s\007" "$*"
}
version(){
grep -E '^# Updated' $0
echo " "
sed -n "/' Changes/,/^ *$/p" <$0 |grep -E -v 'sed -n|exit 0|}'
exit 0
}
[[ "$1" = "-V" ]] && bat -p -l bash $0 && exit
if [[ "$1" = "-F" ]]
then
[[ "$#" -eq 2 ]] && declare -f "$2" |bat -p -l bash && exit
[[ "$#" -eq 1 ]] && declare -f |bat -p -l bash && exit
fi
if [ "$1" == "-E" ]
then
vim $0
sed -i -e "7s/.*/# Updated....: $(date)/" $0
log "Updated $0"
html $0
cp $0 /var/www/unix
mv $0.html /var/www/unix
[[ $HOSTNAME = "mitch-laptop" ]] && scp "$0" mitch-desktop:/home/mitch/bin/
[[ $HOSTNAME = "mitch-desktop" ]] && scp "$0" mitch-laptop:/home/mitch/bin/
exit
fi
if [ "$1" == "-h" ] || [ "$1" == "--help" ]
then
fmt -s -w $(tput cols) <<END
$NAME {file}
Generate an markdown link to file.
END
exit
fi
if [ "$1" == "-v" ] || [ "$1" == "--version" ]
then
version
fi
command -v bash >/dev/null || sudo apt install bash -qyy
[ "$DEBUG" == 1 ] && set -x
if [[ "$1" == *"/"* ]]
then
exec $0 $(basename $1)
fi
FILE="$1"
MDFILE="${FILE%.mp3}.md"
EXT="${FILE##*.}"
NAME=$(echo $FILE|cut -d'.' -f1|sed -e 's/[-_]/ /g' -e 's/.*/\L&/' -e 's/[a-z]*/\u&/g')
case $EXT in
m4v|mp4|mpv|avi)
ICO="🎬"
;;
pdf|epub|mobi|azw3)
ICO="📚"
;;
wav|mp3|midi)
ICO="🎧"
;;
jpg|jpeg|png|gif)
ICO="🎨"
;;
iso|gz|zip|tar|tgz|7z)
ICO="📦"
;;
exe)
ICO="💾"
;;
deb)
ICO="💻"
;;
htm|html|txt|md)
ICO="📑"
;;
ppt|pptx)
ICO="🎦"
;;
json|db|csv|tsv)
ICO="📇"
;;
*)
ICO="📘"
;;
esac
cd /var/www/
NEW="$(find . -name $1 -print |cut -d'.' -f2-)"
SIZE=$(ls -sh /var/www/${NEW}|cut -d' ' -f1)
cd - >/dev/null
case "$EXT" in
pdf) NEW="${NEW}#view=FitH"
;;
epub) VIEW="[👓](/apps/epubviewer/#${NEW})"
;;
txt) VIEW="[👓](http://crn.hopto.org/apps/viewer.html?file=${NEW})"
;;
mobi) VIEW="__DL 1st__, [👓](/apps/foliate/)"
;;
azw3) VIEW="__DL 1st__, [👓](/apps/foliate/)"
;;
*) VIEW=" "
;;
esac
if [ -f .bold ] && [ $(grep -c "$FILE" .bold) -gt 0 ]
then
if [[ "$EXT" = "html" ]]
then
echo "- [${ICO} ___${NAME}___](${NEW}) $VIEW"
else
echo "- [${ICO} ___${NAME}.${EXT} ${SIZE}___](${NEW}) $VIEW"
fi
else
if [[ "$EXT" = "html" ]]
then
echo "- [${ICO} ${NAME}](${NEW}) $VIEW"
else
echo "- [${ICO} ${NAME}.${EXT} ${SIZE}](${NEW}) $VIEW"
fi
fi
if [ -f $MDFILE ]
then
cat $MDFILE
fi
if [ "$EXT" == "mp3" ] || [ "$EXT" == "wav" ]
then
cat <<End
<figure class="wp-block-audio">
<audio controls="" src="${NEW}"></audio></figure>
End
echo "---"
echo " "
fi