[SLUG] Dr. Fun viewer

From: Eben King (eben1@tampabay.rr.com)
Date: Sun Jul 17 2005 - 23:56:23 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 list is provided as an unmoderated internet service by Networked Knowledge Systems (NKS). Views and opinions expressed in messages posted are those of the author and do not necessarily reflect the official policy or position of NKS or any of its employees.



This archive was generated by hypermail 2.1.3 : Fri Aug 01 2014 - 17:57:30 EDT