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 http://live.cyclingnews.com/ ticker and read them out, right? Well, it was to me. Here’s the script I used:
#!/usr/bin/rc # Send updates to live cycling news reports to the speech synth # initialise url=http://live.cyclingnews.com/ if (~ $1 *:*) { url=$1 } last="" 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 last=$next # 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!
What’s the use of a prime number for the sleep function? 62 doesn’t fit?
I use different prime numbers for the sleep so that when the script becomes insanely popular and we’re all using it, it should maximise the intervals between traffic surges from script hits… it’s really just a habit.
That’s odd, I watched it on BBC “Red Button” since kilometer zero.
Even for the women’s race on the Saturday, lamby? Red Button was showing MotoGP when I tried, on both Freeview and Freesat.