XMLTV is a free substitute for Digiguide (supplying personalised TV listings), for those who don't mind a bit of tinkering. Having already installed Fink, Fink Commander and Perl, here are some steps for using XMLTV on OS X:
Download XMLTV, and install it as normal using 'perl makefile.pl, make, make test, make install'.
If any dependencies are missing, use
sudo perl -MCPAN -eshell to start CPAN, then 'install whatever' to install the required modules.
Use Fink Commander to install libxslt and latex2html.
Inside '/library/webserver/cgi-executables', make a directory called 'tv'. Inside that directory, make a directory called 'imdb'. Inside that directory, make a directory called 'lists'. Use Get Info to set read/write permissions for all users on the 'tv' directory and all enclosed items.
Copy tv_pick.cgi, XMLTV.pm, xmltv.dtd and prog2ical.xsl into the 'tv' directory. Use
chmod 755 tv_pick.cgi xmltv.pm to set the permissions for the scripts.
cd to '/library/webserver/cgi-executables/tv/imdb/lists' and run these commands to download the IMDB data:
curl -o actors.list.gz ftp://ftp.fu-berlin.de/pub/misc/movies/database//actors.list.gz
curl -o directors.list.gz ftp://ftp.fu-berlin.de/pub/misc/movies/database//directors.list.gz
curl -o actresses.list.gz ftp://ftp.fu-berlin.de/pub/misc/movies/database//actresses.list.gz
curl -o movies.list.gz ftp://ftp.fu-berlin.de/pub/misc/movies/database//movies.list.gz
cd to ' /library/webserver/cgi-executables/tv' and run
tv_imdb --imdbdir imdb --prepStage all
tv_grab_uk (or the version for your country) to make sure it works - it might ask for some channel configuration.
Run the following command to grab the programme data and munge it around a bit:
tv_grab_uk | tv_sort | tv_extractinfo_en | tv_sort | tv_grep --on-after now | tv_imdb --imdbdir imdb --output tv.xml
In a web browser, run http://localhost/cgi-bin/tv/tv_pick.cgi and set viewing preferences for each programme to never, no, yes or always. Now you have an xml file containing your personal viewing list for the next few days.
To make a text file for printing, run
tv_to_text --output towatch.txt towatch.xml
To make a PDF file for printing, you should be able to run
tv_to_latex towatch.xml | latex | dvips | ps2pdf - towatch.pdf, but it doesn't work for me.
To make each channel into an iCal-subscribable calendar, run
xsltproc prog2ical.xsl towatch.xml. Then make a directory called 'tv' in '/library/webserver/documents' and run
cp *.ics /library/webserver/documents/tv/. In iCal, select Calendar>Subscribe, then enter
http://localhost/tv/FILENAME.ics where FILENAME is the name of one of the .ics files you just made. Repeat for the other channels as necessary.