[flalug] Dr. Fun viewer

From: Eben King (eben1@tampabay.rr.com)
Date: Sun Jul 17 2005 - 23:55:37 EDT


OK, so I think this works. It started out as a quick hack, then grew. It's
a script that pulls in the "Dr. Fun" cartoon (drawn M-F, one panel, similar
to "The Far Side", views it, then deletes it. It stores what day you're on
in ~/.df . It starts at the beginning of the archive (September, 1993) and
goes forward. If ~/.df does not exist, it will be created. I think I
quoted all instances of variables where it's necessary, so the script
shouldn't have a problem with $HOME containing a space.

Oh, if you don't have pdksh, wget, and xv, you'll need them; portability is
varying degrees of difficulty.

#! /bin/ksh

typeset -Z2 dateYY dateMM dateDD
typeset -Z6 date

pref_file="$HOME/.df"

[[ -e $pref_file ]] || echo 930924 > "$pref_file"
[[ -w $pref_file ]] || pref_file=/dev/null

[[ -s $pref_file ]] && {
    date=$(<$pref_file)
    if [[ ${#date} != 6 ]] ; then
        echo "$pref_file is corrupt."
        echo "${#date} chars"
        exit 1
    fi
    dateYY=${date%????}
    dateMM=$(( ${date#??} / 100))
    dateDD=${date#????}
}

trap 'kill %1' EXIT

while : ; do
    case $(date -d $dateYY$dateMM$dateDD +%a) in
        Sat|Sun) ;;
        *) date=$dateYY$dateMM$dateDD
                file=df$date.jpg
                wget -q ibiblio.org/Dave/Dr-Fun/df$dateYY$dateMM/$file
                if [[ -r $file ]] ; then
                    { xv -maxpect $file && echo $date > "$pref_file" ; } &
                    sleep 1
                    rm $file
                    wait
                fi
    esac
    dateDD=$((dateDD + 1))
    if [[ ( ($dateMM = 01 || $dateMM = 03 || $dateMM = 05 || $dateMM = 07 \
          || $dateMM = 08 || $dateMM = 10 || $dateMM = 12) && ($dateDD > 31) ) \
          || ( ($dateMM = 02) && ($dateDD > 29) ) \
          || ( ($dateMM = 04 || $dateMM = 06 || $dateMM = 09 || $dateMM = 11)\
          && ($dateDD > 30) ) ]] ; then
        dateDD=1
        dateMM=$((dateMM + 1))
        if [[ $dateMM > 12 ]] ; then
            dateMM=1
            dateYY=$((dateYY + 1))
            if [[ $dateYY > 99 ]] ; then
                dateYY=0
            fi
        fi
    fi
done

-- 
-eben    ebQenW1@EtaRmpTabYayU.rIr.OcoPm    home.tampabay.rr.com/hactar
              
      He who will not reason is a bigot; he who cannot is a fool;
        and he who dares not is a slave.  -Sir William Drummond



This archive was generated by hypermail 2.1.3 : Fri Aug 01 2014 - 20:06:34 EDT