I don't know about any particular program that does that (I've never looked), but the task is readily accomplished with a simple script.
# this script sets things up to record the audio output of the soundcard
# to a file in the home directory called "Bach-date.ogg" ("date" is
# replaced by something like "2008-04-27"). Note: the recording will be
# made a 7AM on the NEXT Sunday (so this script should be run sometime
# during the week before midnight Saturday).
/usr/bin/at 7:00AM SUN <<EOF
/usr/bin/arecord -d 3600 -f cd -t raw -D copy |/usr/bin/sox -t raw -r 44100 -s -w -c 2 - /home/grannygeek/Bach-$(date +%F).ogg
The "3600" is the duration of the show (in seconds) and should be modified if the show is other than an hour long. If you wanted an uncompressed .wav file (CD quality), you can forgo SOX and just use the line:/usr/bin/arecord -d 3600 -f cd -t wav -D copy /home/grannygeek/Bach-$(date +%F).wav
It might be necessary to add the following ALSA device description to your ~/.asoundrc
EDIT: I just noticed the part about "I start the stream at 1 a.m. before I go to bed". If you don't run the script before Sunday, you should remove the "SUN" from the 'at' command in the script (this will schedule things for the next time 7:00AM occurs).