fotohtml

#!/bin/ksh

#

# original template    : /home/hans/public/templates/newksh.ksh

# file                        : /home/hans/bin/fotohtml-2.6.ksh

# creator                  : hans

# creation date         : 20021220

#

################################################################################

#

# updater    update date    version    action

# hans        20011015    1.0    script created

# hans        20011024    1.1    html index added

# hans        20011024    1.2    mailto added

# hans        20011115    1.3    problem TMP solved

# hans        20021220    2.0    Simplified alternative added

# hans        20021220    2.1    File extensions removed from html links

# hans        20040415    2.2    html tag <HR> eruit gehaald tbv <H3>_____</H3>

# hans        20040423    2.3    TMP Files netjes opruimen met if exist then weg

# hans        20040517    2.4    html file moved to index.html if not exist

# hans        20040518    2.4    html templates files geintegreerd met cat EOF <<

# hans        20040518    2.4    naam gewijzigd in fotohtml-2.4.ksh#

# hans        20040712    2.5    werk verwijzingen eruit gehekt

# hans        20041116    2.5    TEMPLATE_DIR eruit gehekt omdat  die niet meer nodig is sinds 2.4

# hans        20150517    2.6    editor kate vervangen door geany

################################################################################

#

# Doel van dit script

#

# Zie de functie script uitleg. Daarin wordt uitgelegd wat dit script gaat doen.

################################################################################

# De functies in dit script worden op twee manieren gebruikt :

# als functie en als hulpmiddel om regels uit te hekken.

# Zie het kommentaar aldaar

################################################################################

# De allereerste clear blijft altijd staan !

clear

################################################################################

# STEP : DEFINITIE VAN DATUM EN TIJD

# BEPAAL DATUM EN TIJD VAN NU.

VANDAAG=`/bin/date +%Y-%m-%d`

DE_TIJD=`/bin/date +%H:%M`

MOMENT=`/bin/date +%Y-%m-%d_%H:%M`

MOMENT_FILE=`/bin/date +%Y%m%d_%H%M`

SCRIPT_DATE=`/bin/date +%Y%m%d%H%M`

RUN_TIME=`/bin/date +%Y%m%d%H%M`

################################################################################

# STEP : SPECIALS SETUP

print '\07'

BEEP='\07'

print "$BEEP"

################################################################################

################################################################################

# STEP : SCRIPT PROPERTIES

# Definieer de naam en lokatie van het script

# basename en dirname van dit script

# print De naam van script is vol uit : $0

SCRIPT_PATH=`dirname $0`

SCRIPT_NAME=`basename $0`

################################################################################

# STEP : SHOW SCRIPT PROPERTIES

function script_properties {

clear

print "De filename van het script zelf\t\t: $SCRIPT_NAME"

print "De directory waarin het script staat\t: $SCRIPT_PATH"

print "Het is vandaag\t: $VANDAAG"

print "Het is nu\t: $DE_TIJD"

print "\n"

print "\n"

# print "\nEnter ENTER om door te gaan ..."

# read EEN_TOETS

sleep 1

}

# einde functie script_properties

# Verwijder hieronder het # om de funktie hierboven te aktiveren

script_properties

################################################################################

# STEP : SHOW SCRIPT UITLEG

function script_uitleg {

clear

cat << EOF

********************************************************************************

fotohtml-2.6.ksh : MAKE HTML FILE FOR SHOWING PICTURES IN DIRECTORY

Dit script ...

WERKWIJZE: $SCRIPT_NAME FILE_WORD HTML_TYPE

Syntax :

fotohtml <plaatjes> <mini>

(ipv plaatjes mag u kiezen wat u wilt, mini = wel of niet, maar niets anders)

Bijvoorbeeld:

fotohtml plaatjes

fotohtml plaatjes mini

Er wordt gemaakt :

een html file plaatjes.html met daarin een link naar alle gif, jpg en tif files in de aktueele directory

Daar waar zinvol, komt het FILE_WORD terug in de html e.d.

Er komt een index in met de mogelijkheid om vandaaruit naar elke file te klikken

Er worden geen files gekopieerd of gerenamed.

Als de optie mini wordt meegegeven,

dan wordt er alleen een html file met de plaatjes gemaakt,

zonder index en zonder kliktruken e.d.

********************************************************************************

EOF

}

# einde functie script_uitleg

# Verwijder hieronder het # om de funktie hierboven te aktiveren

# De print en read opdracht moeten hier niet in de functie zelf !

# script_uitleg

# print "\nEnter ENTER om door te gaan ..."

# read EEN_TOETS

################################################################################

# STEP : DEFINITIE VAN DIRECTORIES

# Een gedeelte van de regels kan ook voor in plaats van in de funktie geplaatst worden.

# Voordeel : Ervoor is altijd aktief.

function makethisdir {

if [[ ! -d $1 ]]

then

    print "Directory $1 bestaat nog niet"

    mkdir -p $1

else

    print "Directory $1 bestaat al !\n"

fi

}

function checkthisdir {

if [[ ! -d $1 ]]

then

    print "INPUT_DIR : $1 is er niet !  ... dat is fout ..."

    print "Lees de uitleg ...\nen zoek het uit ...\n"

    print "Eruit bij exit 1"

    exit 1

else

    print "Directory $1 gevonden. Het is OK !"

fi

}

WORK_DIR=$PWD

################################################################################

# STEP : DEFINITIE VAN VARIABELEN

# Definieer even met welke editor we files open op het scherm kunnen zetten

# Tekst files kunnen dan geopend worden met : $EDITOR filename.txt &

if [[ -e /usr/openwin/bin/textedit ]]; then

    EDITOR=/usr/openwin/bin/textedit

elif [[ -e /usr/bin/geany ]]; then

    EDITOR=/usr/bin/geany

else

    print "Geen editor gevonden !"

    print "We mogen toch verder ..."

    sleep 3   

fi

# Openen van een file met volledig path in de variabele

# $EDITOR `basename $MY_FILE_WITH_FULL_PATH` &

# Template files voor het opbouwen van de html file

# TEMPLATE_DIR=/home/hans/public/templates

# Template Body : nodig voor elk plaatje

# TEMPLATE_B=$TEMPLATE_DIR/fotohtml_b.html

# Tijkelijke opslagplaats voor de gemaakte body parts >:-)

TEMPLATE_B_TMP=$PWD/fotohtml_b_tmp.html

# Template Body Mini : nodig voor elk plaatje, (mini variant van Template Body)

# TEMPLATE_M=$TEMPLATE_DIR/fotohtml_m.html

# Tijkelijke opslagplaats voor de gemaakte body parts >:-)

TEMPLATE_M_TMP=$PWD/fotohtml_m_tmp.html

# Template Footer : nodig voor het eind van de html file

# TEMPLATE_F=$TEMPLATE_DIR/fotohtml_f.html

TEMPLATE_F_TMP=$PWD/fotohtml_f_tmp.html

# Template Header : nodig voor het eind van de htmlfile

# TEMPLATE_H=$TEMPLATE_DIR/fotohtml_h.html

# Template Index : nodig voor het maken van de index kliklijst, een regel per foto

# TEMPLATE_I=$TEMPLATE_DIR/fotohtml_i.html

# Tijkelijke opslagplaats voor de gemaakte plaatjes index regels >:-)

TEMPLATE_I_TMP=$PWD/fotohtml_i_tmp.html

# De te maken html file heeft een naam ala plaatje.html

# HTMLFILE=tobespecified in het programma zelf, als parameter 1 = FILE_WORD

################################################################################

# STEP : SHOW VARIABELS

function all_variabels {

print "\n\nOverzicht van alle variabelen\n"

print "FILE_WORD    : $FILE_WORD"

print "PARAM_2    : $PARAM_2"

print "PARAM_3    : $PARAM_3"

print "PARAM_QTY  : $PARAM_QTY"

print "PARAM_FOUT : $PARAM_FOUT"

print "PARAM_X    : $PARAM_X"

print "BIN_DIR    : $BIN_DIR"

print "COMMON_DIR : $COMMON_DIR"

print "DOC_DIR    : $DOC_DIR"

print "INPUT_DIR  : $INPUT_DIR"

print "LOG_DIR    : $LOG_DIR"

print "OUTPUT_DIR : $OUTPUT_DIR"

print "TMP_DIR    : $TMP_DIR"

print "WORK_DIR   : $WORK_DIR"

print "\nEinde van dit overzicht van alle variabels\n\n"

}

# Verwijder hieronder het # om de funktie hierboven te aktiveren

# einde functie all_variabels

# all_variabels

################################################################################

################################################################################

# STEP : PARAMETER DEFINITION

# positional parameters / argumenten test

# Kontroleer de parameters op hun kwaliteit

# Aantal parameters is : 0

# WERKWIJZE: $SCRIPT_NAME

PARAM_QTY=$#

print "Het aantal parameters wordt opgeslagen in PARAM_QTY"

print "Het aantal parameters PARAM_QTY : $PARAM_QTY"

################################################################################

# STEP : TEST OP 2 OF MEER PARAMETERS

# positional parameters / argumenten test

# Kontroleer de parameters op hun kwaliteit

# Aantal parameters is : > 1

# In dit voorbeeld zijn er 3 parameters

# WERKWIJZE: $SCRIPT_NAME FILE_WORD PARAM_2 PARAM_3

# Over de function param3test

# Als het een funktie is :

# dan werkt het niet, want $1,$2,$3 worden niet uitgelezen door FILE_WORD, HTML_TYPE en 3 !

# Als het geheel geen functie is, dan werkt het wel.

# Dus :

# Niet Toepassen van param3test

#     Hek de functie er in (Let op : dus geen hekje bij { en bij } !),

#     Roep de functie niet aan, dan wordt eea dus niet gelezen.

#     Dan worden alle regels van de functie overgeslagen.

#

# Wel Toepassen van param3test

#     Hek de functie er uit (Let op : dus wel een hekje bij { en bij } !),

#     Dan worden alle regels van de functie gelezen, want het is geen functie meer.

FILE_WORD="$1"    ## Dit mag niet binnen een funktie ! (Why not ?)

HTML_TYPE="$2"    ## Dit mag niet binnen een funktie ! (Why not ?)

PARAM_3="$3"    ## Dit mag niet binnen een funktie ! (Why not ?)

# Als param3test nodig is, plaats dan een hekje voor function param3test {

# function param3test {

print "Aantal op te geven parameters is : 2"

# PARAM_QTY=$#  ## PARAM_QTY is eerder in het script bepaald

# ipv == werkt ook : ==, !=, >, <, >=, <=,

if (( PARAM_QTY == 1 )); then

    # FILE_WORD="$1"    ## Dit mag niet binnen een funktie ! (Why not ?)

    print "\nEr is een parameter ingelezen !"

    print "Parameter FILE_WORD is  : $FILE_WORD"

    sleep 1

elif (( PARAM_QTY == 2 )); then

    # FILE_WORD="$1"    ## Dit mag niet binnen een funktie ! (Why not ?)

    # HTML_TYPE="$2"    ## Dit mag niet binnen een funktie ! (Why not ?)

    # PARAM_3="$3"    ## Dit mag niet binnen een funktie ! (Why not ?)

    print "\nEr zijn 2 parameters ingelezen !"

    print "Parameter FILE_WORD is  : $FILE_WORD"

    print "Parameter HTML_TYPE is  : $HTML_TYPE"

    sleep 1

elif (( PARAM_QTY == 0 )); then

    script_uitleg

    print "\nEr zijn geen parameters opgegeven."

    print "Er zijn 1 of 2 parameters nodig."

    print "Het aantal opgegeven parameters is : $PARAM_QTY"

    print "Lees de uitleg ...\n"

    print "Eruit bij exit 21"

    exit 21

else

    script_uitleg

    print "\nHet opgegeven aantal parameters is niet goed."

    print "\nEr zijn 1 of 2 parameters nodig."

    print "De tweede parameter mag alleen maar zijn : mini"

    print "Het aantal opgegeven parameters is : $PARAM_QTY"

    print "Lees de uitleg ...\n"

    print "Eruit bij exit 22"

    exit 22

fi

# }

# einde functie param3test

# Als param3test nodig is, plaats dan een hekje voor de }

# Verwijder hieronder nooit het #. Roep deze functie nooit aan als functie

# param3test

# sleep 1

function param3quality {

# positional parameters / argumenten test

# Kontroleer de parameters op hun kwaliteit

PARAM_FOUT=0

if [[ "$HTML_TYPE" = "mini" ]]; then

    print "Parameter HTML_TYPE is goed : $HTML_TYPE"

else

    print "Parameter HTML_TYPE is fout : $HTML_TYPE # mini"

    PARAM_FOUT=1

fi

# sleep 3

if (( PARAM_FOUT != 0 )); then

    script_uitleg

    print "Parameter FILE_WORD is  : $FILE_WORD"

    print "Parameter HTML_TYPE is  : $HTML_TYPE"

    print "Minstens een ervan heeft geen geldige waarde.\n"

    print "Het aantal opgegeven parameters is : $PARAM_QTY"

    print "\nPARAM_FOUT is : $PARAM_FOUT"

    print "Eruit bij exit 33"

    exit 33

fi

}

# einde functie param3quality

# Verwijder hieronder het # om de funktie hierboven te aktiveren

# param3quality

################################################################################

################################################################################

# STEP : DEFINITIE VAN FUNKTIES

function html_header_maak {

################################################################################

################################################################################

# STEP : TEMPLATE_H

cat << TEMPLATE_H > $HTMLFILE

<HTML>

<HEAD>

    <TITLE>Pictures of $V_HTML_TITEL</TITLE>

    <LINK REL="STYLESHEET" TYPE="text/css" HREF="../stylesheet.css">

</HEAD>

<BODY>

<!--header-->

<a NAME = "bovenaan"></a>

<H1>Pictures of $V_HTML_TITEL</H1>

<H3>_____</H3>

This page has been made by : <a href="mailto:$V_MAILNAAM@provider.nl?Subject=Pictures of $V_HTML_TITEL">$V_HELENAAM</a>

<P>

Latest Update on : <!--#config timefmt="%e %b %Y" --><!--#echo var="LAST_MODIFIED" --><br> by $V_HELENAAM

<br>

<H3>_____</H3>

<H2>Content</H2>

<PRE>

TEMPLATE_H

################################################################################

################################################################################

}

function html_mini_maak {

################################################################################

################################################################################

# STEP : TEMPLATE_M

cat << TEMPLATE_M >> $TEMPLATE_M_TMP

<A href="#bovenaan"><img src="./$INPUTFILE" alt="$V_PLAATJE_TITEL" border=2></A>

<P>

$V_PLAATJE_TITEL

<H3>_____</H3>

TEMPLATE_M

################################################################################

################################################################################

}

function html_index_maak {

################################################################################

################################################################################

# STEP : TEMPLATE_I

cat << TEMPLATE_I >> $TEMPLATE_I_TMP

<A HREF="#$V_PLAATJE_REF">$V_PLAATJE_TITEL</A>

TEMPLATE_I

################################################################################

################################################################################

}

function html_body_maak {

################################################################################

################################################################################

# STEP : TEMPLATE_B

cat << TEMPLATE_B >> $TEMPLATE_B_TMP

<A NAME = "$V_PLAATJE_REF"></A>

<H3>$V_PLAATJE_TITEL</H3>

<A href="#bovenaan"><img src="./$INPUTFILE" alt="$V_PLAATJE_TITEL" border=2></A>

<P>

$V_PLAATJE_TITEL

<H3>_____</H3>

TEMPLATE_B

#<P>

#<PRE>

#<A HREF="#bovenaan">Top ?</A>

#</PRE>

################################################################################

################################################################################

}

function html_footer_maak {

################################################################################

################################################################################

# STEP : TEMPLATE_F_TMP

cat << TEMPLATE_F_TMP >> $TEMPLATE_F_TMP

</BODY>

</HTML>

TEMPLATE_F_TMP

################################################################################

################################################################################

}

html_footer_maak

# EINDE FUNCTIES MAKEN

################################################################################

################################################################################

################################################################################

################################################################################

# STEP : HET SCRIPT ZELF KOMT HIERONDER

clear

cat << EOF

********************************************************************************

SCRIPT : MAKE HTML FILE FOR SHOWING PICTURES IN DIRECTORY

********************************************************************************

EOF

# print " 1 ?"

# read EEN_TOETS

clear

# cd $PWD

print "DIR : $PWD\n"

ls -1 *.[GgJjPpTt][IiNnPp][FfGg] > /dev/null 2>&1

ERROR_CODE=$?; print "ERROR_CODE : $ERROR_CODE"

if (( ERROR_CODE == 0 )); then

# print " 2 ?"

# read EEN_TOETS

        print "\nEr zijn gif,jpg, of tif files"

        print "ERROR_CODE : $ERROR_CODE"

    print "Hier komen de gif,jpg, png of tif files"

    ls -1 *[GgJjPpTt][IiNnPp][FfGg]  | tee $PWD/$FILE_WORD.txt

    HTMLFILE=$PWD/$FILE_WORD.html

    V_HTML_TITEL="` print "$FILE_WORD" | tr [a-z] [A-Z] `"

    V_MAILNAAM="` ypcat passwd | grep -i $LOGNAME | awk -F: '{ print $5 }' | sed 's# #.#g' | tr [A-Z] [a-z] `"

    V_HELENAAM="` ypcat passwd | grep -i $LOGNAME | awk -F: '{ print $5 }' | sed 's# #.#g'`"

    # V_HELENAAM="` ypcat passwd | grep -i $LOGNAME | awk -F: '{ print $5 }' `"

    for INPUTFILE in `cat $PWD/$FILE_WORD.txt`

    do

        print "INPUTFILE : $INPUTFILE komt in de OUTPUTFILE : $HTMLFILE\n\n"

        V_FILE_BODY="`print $INPUTFILE | cut -f1 -d. | tr [A-Z] [a-z]`"

        V_FILE_EXT="`print $INPUTFILE | cut -f2 -d. | tr [A-Z] [a-z]`"

        V_FILE_TITEL="`print $INPUTFILE | cut -f1 -d. | tr [a-z] [A-Z]`"

        V_PLAATJE_REF="`print "$INPUTFILE" | cut -f1 -d.| tr [A-Z] [a-z] `"

        V_PLAATJE_TITEL="` print "$INPUTFILE" | cut -f1 -d. | tr [a-z] [A-Z] `"

        # print "CATTEN MAAR b\n\n"; sleep 1

        # print " 3 ?"

        # read EEN_TOETS

        if [[ "$HTML_TYPE" = "mini" ]]; then

            print "Parameter HTML_TYPE is MINI : $HTML_TYPE"

            html_mini_maak

        else

            print "Parameter HTML_TYPE is niet mini : $HTML_TYPE # mini"

            html_body_maak

            # print "Index maken i\n\n"; sleep 1

            html_index_maak

        fi

    done

        if [[ "$HTML_TYPE" = "mini" ]]; then

            print "Parameter HTML_TYPE is goed : $HTML_TYPE"

            html_header_maak

            print "</PRE>\n<H3>_____</H3>\n" | tee -a $HTMLFILE

            cat $TEMPLATE_M_TMP | tee -a $HTMLFILE

            cat $TEMPLATE_F_TMP | tee -a $HTMLFILE

        else

            print "Parameter HTML_TYPE is niet mini : $HTML_TYPE # mini"

            html_header_maak

            cat $TEMPLATE_I_TMP | tee -a $HTMLFILE

            print "</PRE>\n<H3>_____</H3>\n" | tee -a $HTMLFILE

            cat $TEMPLATE_B_TMP | tee -a $HTMLFILE

            cat $TEMPLATE_F_TMP | tee -a $HTMLFILE

        fi

    else

         print "Er zijn geen gif,jpg, png of tif files"

        print "ERROR_CODE : $ERROR_CODE"

fi

# sleep 1

# ls -l

function html_hernoem {

# HTML file wordt index.html.

# als die al bestond dan bewaren we m voor eenieder die na ons komt.

if [[ -f index.html ]];then

    INDEX_NIEUW="index_$MOMENT_FILE.html"

    print "index.html wordt index_$MOMENT"

    mv index.html $INDEX_NIEUW

fi

    print "HTMLFILE $HTMLFILE wordt gekopieerd index.html"

    cp $HTMLFILE index.html

}

html_hernoem

function ruimtemptekstop {

print "\n\nTemp files opruimen ...\n"

for TEKSTFILE in $PWD/$FILE_WORD.txt $TEMPLATE_B_TMP $TEMPLATE_F_TMP $TEMPLATE_I_TMP $TEMPLATE_M_TMP

do

if [[ -f $TEKSTFILE ]];then

    print "TEKSTFILE $TEKSTFILE wordt opgeruimd ..."

    \rm $TEKSTFILE

fi

done

}

# Verwijder hieronder het # om de funktie hierboven te aktiveren

# Haal hieronder het hekje weg als script klaar is

ruimtemptekstop

print "\n\nKlaar !\n"

# $EDITOR $HTMLFILE &

################################################################################

# STEP : REPLACE LINK BY HAND, NOT BY SCRIPT

function newrevision {

clear; cd /home/hans/bin; ls -l

# gebruik onderstaande commando's met de hand om in de bin directory

# een symbolisch link (mooie naam, naar laatste versie) naar je script (met versie erbij) te maken

\rm /home/hans/bin/fotohtml

ln -s /home/hans/bin/fotohtml-2.6.ksh /home/hans/bin/fotohtml

}