Send updates to live cycling news reports to the speech synth

The BBC coverage of the UCI Women Road Race World Championship wasn’t starting until 3pm, BBC Radio 5 Live had football and Sports Extra was playing an advert loop (really BBC?), Eurosport wasn’t covering the race at all, RAI Sport 2 had coverage which was fine while I was watching the TV, but my Italian isn’t good enough to follow the commentary and I wanted to get some other stuff done.

So the obvious thing is to have the computer watch for changes to the great ticker and read them out, right? Well, it was to me. Here’s the script I used:

# Send updates to live cycling news reports to the speech synth

# initialise
if (~ $1 *:*) {

while (true) {
    # download the update and strip html - if you don't have html2text try
    # sed -e '1,/<ol/d;s/<br[^>]*>/n/g;s/<[^>]*>//g;s/ / /g;s/[[:space:]]*$//'
    next=``(){curl -s $url | html2text -width 9999 | sed -e 's/^ *[0-9]*. //' }
    # look for some added lines in the update section - timezone will need changing for non-European races
    say=``(){diff -u <{echo $last} <{echo $next} 
      | sed -ne '/^+/!d;s///;s/**//g;/ CES*T/,/^ *$/p' | head -9 }
    # feed them to the speech synth in reverse order
    echo $say '
      Race Update' | tac | spd-say -e
    # update variables, pause and loop
    # set this to a prime number over 60, like 61, 67, 71, 73, 79, 83, 89
    sleep 67

Any questions, comments or improvements? I could have done more, like not saying “Race Update” even when there was no update, but I wanted to start listening as soon as possible!

This entry was posted in GNU/Linux. Bookmark the permalink.