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
}