64 lines
2.1 KiB
Bash
64 lines
2.1 KiB
Bash
#!/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 ([^ ]+)$,<meta>\1 \2 became \3</meta>,' |
|
|
# Speak day changes specially
|
|
sed -E 's,^ --- (Day changed .*)$,<meta>\1</meta>,' |
|
|
# Remove minicat topic diffs
|
|
sed -E '/^(..:..) \<\;.minicat\>\; .?\(diff\).*/d' |
|
|
# Speak timestaps and nicks specially
|
|
sed -E 's,^(..:..) \<\;[+@ ]?([^& ]+)\>\;,<meta>\1 \2</meta>,' |
|
|
sed -E 's,^(..:..) \* ([^ ]+),<meta>\1 action \2</meta>,' |
|
|
|
|
# Handle "<-" and "←" answers
|
|
sed -E 's,\<-|←,<meta>answer</meta>,' |
|
|
# Handle someone quoting another person
|
|
sed -E 's,\<\;[+@ ]?([^& :]+)\>\;,<meta>quoting \1</meta>,g' |
|
|
sed -E 's, \* ([^ ]+),<meta>quoting action \1</meta>,g' |
|
|
# Handle Twitter URLs
|
|
sed -E 's,https?://(mobile\.|www\.)?twitter[^ )>]+,<meta> twitter URL</meta>,g' |
|
|
# Handle URLs
|
|
sed -E 's,(https?|gopher)://[^ )>]+,<meta> \1 URL</meta>,g' |
|
|
# Handle 'fancy' quotes
|
|
sed -E 's,«|“,<meta>left quote</meta>,g;s,»|”|„,<meta>right quote</meta>,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,$,<break time="700">,' |
|
|
|
|
# Translate <meta></meta> to actual tags
|
|
sed -E 's,<meta>,<prosody pitch="+5st"><break>,g;s,</meta>,<break></prosody>,g' |
|
|
|
|
# Speak
|
|
espeak --stdin --stdout --punct='"' -m |
|
|
|
|
# Convert to mp3
|
|
ffmpeg -i /dev/stdin -f mp3 "$2"
|