#!/bin/sh
if test $# -ne 2
then
printf "Usage: %s infile outfile\n" "$0" >&2
exit 1
fi
# Escape
sed -E 's,&,\&\;,g;s,<,\<\;,g;s,>,\>\;,g' "$1" |
# Remove joins/parts/quits
sed -E '/^(..:..) -!- ([^ ]+).*has joined \#[^ ]*$/d' |
sed -E '/^(..:..) -!- ([^ ]+).*has quit \[[^]]*\]$/d' |
sed -E '/^(..:..) -!- ([^ ]+).*has left \#[^ ]* \[[^]]*\]$/d' |
# Speak nick changes specially
sed -E 's,^(..:..) -!- ([^ ]+) is now known as ([^ ]+)$,\1 \2 became \3,' |
# Speak day changes specially
sed -E 's,^ --- (Day changed .*)$,\1,' |
# Remove minicat topic diffs
sed -E '/^(..:..) \<\;.minicat\>\; .?\(diff\).*/d' |
# Speak timestaps and nicks specially
sed -E 's,^(..:..) \<\;[+@ ]?([^& ]+)\>\;,\1 \2,' |
sed -E 's,^(..:..) \* ([^ ]+),\1 action \2,' |
# Handle "<-" and "←" answers
sed -E 's,\<-|←,answer,' |
# Handle someone quoting another person
sed -E 's,\<\;[+@ ]?([^& :]+)\>\;,quoting \1,g' |
sed -E 's, \* ([^ ]+),quoting action \1,g' |
# Handle Twitter URLs
sed -E 's,https?://(mobile\.|www\.)?twitter[^ )>]+, twitter URL,g' |
# Handle URLs
sed -E 's,(https?|gopher)://[^ )>]+, \1 URL,g' |
# Handle 'fancy' quotes
sed -E 's,«|“,left quote,g;s,»|”|„,right quote,g' |
# Handle some common emoticons
sed -E 's,\^_\^,happy eyes emoticon,g' |
sed -E 's,\\o\/,arms in air emoticon,g' |
sed -E 's,\bo\/,waving emoticon,g' |
sed -E 's,\\o\b,waving emoticon,g' |
sed -E 's,\:\),smiling emoticon,g' |
sed -E 's,\(\:,reversed smiling emoticon,g' |
sed -E 's,\:\(,sad emoticon,g' |
sed -E 's,\)\:,reversed sad emoticon,g' |
sed -E 's,:D\b,colon dee,g' |
sed -E 's,\bD:,dee colon,g' |
sed -E 's,:D:,colon dee colon,g' |
# Handle some special characters espeak ignores
sed -E 's,\^,caret,g' |
# Add pauses
sed -E 's,$,,' |
# Translate to actual tags
sed -E 's,,,g;s,,,g' |
# Speak
espeak --stdin --stdout --punct='"' -m |
# Convert to mp3
ffmpeg -i /dev/stdin -f mp3 "$2"