Website-Maintenance Tools

(The MyReplayTV web site is defunct, so there is no longer any automated source for this information.)

Tools I've Written

makefileUses the Unix make utility to automate the rebuilding of html files created from plaintext files, and to upload changed pages to the web server.
"make local" will rebuild the local html files without FTPing anything to the web server.
"make reload" will delete the checkpoint file used by the upload.web script, so that all the files will be uploaded to the web server again.
"make check" will inspect the web site using webcheck (see below).
webcheck.envA script to set the $PYTHONPATH environment variable needed by webcheck and then run webcheck. (I couldn't find a way to set an environment variable in the makefile itself.)
upload.webA script to identify new/modified web-site files and upload them (via FTP) from my local disk to Comcast's web server. It modifies the <BASE HREF> in the root index page uploaded to the server. (Modified 2004/Apr/23 to support multiple sites. The Ad Hoc Singers pages have been moved to a different server.)
mytvA script that retrieves current content information for our ReplayTV digital recorder from the MyReplayTV web site. Recent enhancements generate a content page for this website. The script is not provided here because it includes hard-coded account information for our RTV. (A sanitized copy can be provided on request). This script is no longer useful because the source data is no longer available from ReplayTV's web site.
tvrageA script that retrieves program Episode Lists from the TV Rage website and generates editor scripts for the mytv script to add sequence numbers to episodes on the ReplayTV contents the MythTV contents pages. (The TV Rage website is proving more useful than TV Tome.)
tvragedA version of the tvrage script that includes the first air date along with the episode sequence numbers.
get.episodesA script that retrieves program Episode Lists from the TV Tome website and generates editor scripts for the mytv script to add sequence numbers to episodes on the ReplayTV contents page. has become (June 2006). The script has been modified for the new site layout, but it doesn't work as well.
meta-htmlA (csh-wrapped) sed filter to convert meta-characters to their corresponding HTML character entities
char2htmlAnother (csh-wrapped) sed filter to convert characters to their corresponding HTML character entities
edit.fix.mythcontentsAn editor script to fix mythtv_contents and mythtv_deleted data problems from the MythWeb page scrapes.
edit.fix.mythpagesAn editor script to fix odd (appearance) problems in the MythTV contents page that aren't handled well elsewhere.
mk-mythtv_contents_recA csh script to create daily mythtv_contents_rec.YYYYMMDD lists of new recordings.
awk.html.tblAn awk program to produce generic table body content from lines of tab-separated entries in text files.
mk.html.tbl4A script to generate balanced 4-column HTML tables from text lists.
awk.4colAn awk program required by mk.html.tbl4.
get.safari.bookmarksA script to extract links and titles from a Safari Bookmarks.plist file as anchor tags. Used to generate most of the inital content for my interesting links page. (If your browser ignores the script's .txt extension, try view source.)
mk_calendarA csh script to do some pre-processing of the calendar .tbl file and run awk.calendar.
awk.calendarAn awk program to translate my calendar from an nroff .tbl file into HTML.
lj.collageGenerate a collage of a LiveJournal accounts' friends' userpics.
lj.moodsGenerate a page of LiveJournal mood icons, smilies, and gifts with the HTML code to insert the images into journal entries.
lj.gifts_listGenerate a list of LiveJournal virtual-gift icons to include on the page of LiveJournal mood icons.
put_user_picsAdd the current userpics of selected LiveJournal accounts to my collection of avatar images.
mk_copy-pasteGenerate a page of avatar images and the HTML commands that would insert the images into a weblog entry from my collection of avatar images.
awk.copy-pasteNitty-gritty processing of creating the HTML copy-paste page.
awk.hijack.schedAn awk program to convert my text Audio-Hijack recording schedule into HTML table entries. csh script with some embedded awk to convert a manually-updated text file listing our ReplayTV contents into the TV web page.
awk.tv_episodesAn awk program to generate the list of numbered episodes from the entries extracted from the edit.epi.nos ed script that modifies the ReplayTV data.
edit.rtv_episodesAn editor script to modify some show and/or episode titles for the TV Episodes page.
edit.rtv.htmlAn editor script to HTML-encode a few high-bit ASCII characters on the TV Episodes page.
title-tagA csh script around a sed command to add TITLE= attributes to items that have only ALT= attributes. (MSIE (improperly) displays ALT= strings as ToolTip pop-ups. Better-behaved browsers display the ToolTips only from the TITLE= strings.)
touch-24A csh script to touch files with a timestamp 24 hours earlier than the present time. This is used to cause make to rebuild some files no more than once a day.
touch-6A csh script to touch files with a timestamp 6 hours earlier than the present time. This is used to cause make to rebuild some files no more than 4 times a day.
touch-4A csh script to touch files with a timestamp 4 hours earlier than the present time. This is used to cause make to rebuild some files up to 6 times a day (if it's being run all night too).
atpic.uplA [t]csh and awk script to generate another [t]csh script to FTP-upload files to in 100MB batches. (This is the size limit of's upload space.)
awk.comment.netsnapshotA script to insert comment lines for all links in my icon collection. (I'm planning to change all the links to point to, but I don't want to lose the original links.)
photo-weblinkA script to create gallery-source directories and link -named files into them.
photo-txtA script to create and edit photo.jpg.txt files describing the photos; can copy descriptions from preceding photos.
find-photo-txtA script to find all photo .txt files that contain a string.
txt-commentA script to generate photo.jpg.comment files for Lazygal lazygal from photo.jpg.txt files created by feh.
name-albumsA script to create Lazygal lazygal album-name and album-description files for new galleries.
tpuA script to make Pennsic-University instructor tags from the names in the course listings.
tag-allA script to add tags to multiple photos.
txt-tagsA script to create/update .tags files from .txt files.
tags-txtA script to update .txt files from .tags files.
photo-tag-countA script to count the occurences of each photo tag. (This is useful for finding similar (or misspelled) tags that should match.)
change-photo-tagA script to change a string in all .txt and .tag files.
tag-link-photosA script to link photos and .comment files into .tag directories.
awk.lj-photo-relinkAn awk program to generate links to my (now) local photo hosting for icons with filenames that contain the date (and time). These new links replace the defunct or links.
feedbackA script to make the nginx access-log entries created by the feedback.html page readable.
sed.hexcharsA sed script to translate %## hexadecimal sequences to ASCII characters. This is used by the feedback and blockips scripts.
blockipsA script to update an IP block list based on activity in the 2 latest activity-log files.
loop-blockipsA script to repeatedly run blockips with 2-minute delays. If left running in a window, you'll get updates of IP blocks added.
cron-min-blockipsA script for root to run once a minute to run blockips with 5-second delays. The blockips output goes to a log you can tail.
ipnslA script to run nslookup on a list of IP addresses and append the hostname, if found.
nbspA script to expand tabs into spaces and convert multiple spaces into HTML "&nbsp;" sequences.

Editor Scripts used by mytv to Generate my ReplayTV Reports

edit.titlesAn editor script to add apostrophes back to titles (none come through from the MyReplayTV web site), correct some titles that are consistently cut short, and add titles to manual records on the ReplayTV reports.
edit.split.titlesAn editor script to split some long show=episode titles into separate show and episode titles on the ReplayTV reports.
edit.epi.nosAn editor script to add episode numbers to episode titles on the ReplayTV reports. (Source data for awk.tv_episodes.)
edit.recAn editor script to add (possibly stale) record time limits for non-guaranteed shows on the ReplayTV reports.
edit.yearAn editor script to set the correct year reported for programs stored in the ReplayTV more than 1 year. [Our RTV has been crashing more frequently, and never contains programs that old any more.] Also turns out to be a good place to correct mis-titled episodes (the downloaded listing doesn't match what was broadcast) by date.
edit.html.fileAn editor script to add HTML breaks to long lines and encode a few characters on the ReplayTV Contents page.
edit.showsAn editor script to mark which shows (not episodes) household individuals ever care to watch. (Used for printouts at home, not on the web site.)
edit.episodesAn editor script to mark which programs have already been seen by whom. (Used for printouts at home, not on the web site.)

Tools Found on the Web

feh An X11 image viewer aimed mostly at console users. It can create .txt files with descriptions for each image.
exiv2 A command line utility to manage image metadata. It provides fast and easy read and write access to the EXIF, IPTC, and XMP metadata of digital images in various formats.
exiv2 -v -r %Y.%m.%d-%H.%M.%S -F rename files....
Lazygal lazygal Another static web gallery generator written in Python.
Tumult HyperEdit A lightweight HTML (and PHP) editor with a preview pane that displays the web page live as you type. Written by Jonathan Deutsch.
webcheck A web site checker – "a Python script that will check your web for dead links, old pages, slow pages, and similar things." Written by Mike Meyer. (Original location.)
Updated version (1.9.4) maintained by Arthur de Jong.
webcheck version 1.10.3 homepage moved 2009-06-14.
Final Vinyl Mac recording software for Griffin's iMic USB audio adapter (adds a stereo input and output to your Mac or PC. The software is free, but it won't run unless you have a Griffin iMic or PowerWave connected to your computer).
AudacityAudacity is a free audio editor. You can record sounds, play sounds, import and export WAV, AIFF, Ogg Vorbis, and MP3 files, and more.
PintaA Linux cross-platform drawing/editing program modeled after Paint.NET. Its goal is to provide a simplified alternative to GIMP for casual users.
EasyCrop A Mac program to crop and resize images, convert formats, and grab screens or windows. Shareware registration $12 (paid – the unregistered program puts a text banner across its output).
ImageWell A Mac program to crop and resize images. Also allows adding text labels and balloons, and can shape-mask image borders. Screen grab too. Resides in the title bar for easy access. Freeware. Resizing control is not as precise as with EasyCrop or iPhoto. Does not create .PNG files. [ImageWell v2 is out now (May 2004). It does allow the sizing to the pixel that was missing in version 1.] [ImageWell v2 build 222 is out now (Nov 2004). It supports PNG images. Build 224 is also out, for OS X 10.3; I'm still running 10.2.8.]
Iconographer Iconographer is a fully-featured Mac icon editor. It allows you to both change the icons of items and to edit the icon resources used by various programs. (I used it to create the favicon.ico files.) Written by Mihai Parparita of Mscape Software.
email meA link with an encoded mailto tag, used liberally throughout the site. The string is munged to deter harvesting by spammers. See

Tools Provided with MacOS X

iPhoto Does image cropping, resizing, and exports to other formats. But it reads in its entire photo library when it runs, which is huge in my case, so it is very slow for me. (That's why I've turned to ImageWell and EasyCrop).
vim Did all my editing with this common Linux editor (before I started using HyperEdit). Actually, I'm more at home with the Unix editor vi, but this is close enough.

homesite mapemail me