#!/usr/bin/perl

($htmfile, @phrases) = @ARGV;
usage() if($phrases[0]!~/\S/);
$htmfile =~ s/^.*\/\//\//;
$sep = "!%!%!";
usage("html file $htmfile does not exist!") if(! -f $htmfile);
println("- read $htmfile ...");
open(F, "<$htmfile") or die("ERROR: cannot read $htmfile: $!");
while(<F>){
	chomp($_);
	$line = trim($_);
	if($line=~/^<tr><td class=\"field_name\"[^>]*><i>(.+):<\/i><\/td>/){
		$field = $1;
		$field =~ s/\s+//g;
		$valstart = 0;
		$value = "";
		next;
	}
	elsif($line=~/^<td class=\"field_data\"[^>]*>/){
		$valstart = 1;
		$value = "";
	}
	if($valstart){
		$value .= " ". strip($line);
	}
	if($line=~/^<tr><td colspan=\"2\"><hr *\/><\/td><\/tr>$/ or $line=~/^<\/table><br *\/>$/ or $line=~/<h3>.+<\/h3>/){
		$entry = lc("$Title $UserName $Password $Notes $URL $LastModificationTime");
#println($entry);
		$matches = 1;
		for($p=0;$p<$#phrases+1;$p++){
			$phrase = $phrases[$p];
			$matches = 0 if($entry!~/$phrase/i);
		}
		if($matches){
			$entries{$Title} = "$Title$sep$UserName$sep$Password$sep$Notes$sep$URL$sep$LastModificationTime";
		}
		$valstart = 0;
		$value = "";
		$Title = "";
		$UserName = "";
		$Password = "";
		$Notes = "";
		$URL = "";
		$LastModificationTime = "";
	}
	elsif($line=~/<\/td><\/tr>$/){
		$valstart = 0;
		$name = $field;
		$$field = trim(strip($value));
#println("- $field: ". $$field);
		$value = "";
		next;
	}
}
close(F);

println("<link rel='stylesheet' href='/styles.css'/>");
println("<table width='100%'><tr><th width='80' align='left'>Title</th><th width='80' align='left'>User</th><th width='80' align='left'>Password</th><th width='80' align='left'>URL</th><th width='100' align='left'>Last modified</th><th width='600' align='left'>Notes</th></tr>");
@entries = sort(@entries);
$matchnr = 0;
@keys = keys(%entries);
for($e=0;$e<$#keys+1;$e++){
	($Title, $UserName, $Password, $Notes, $URL, $LastModificationTime) = split(/$sep/, $entries{$keys[$e]});
	println("<tr><td>$Title</td><td>$UserName</td><td>$Password</td><td>$URL</td><td>$LastModificationTime</td><td>$Notes</td></tr>");
}
println("</table>");
println("Found $matchnr matches");






sub strip{
	my $str = shift;
	$str =~ s/<[^>]+>//g;
	$str =~ s/<[^>]+>//g;
	$str =~ s/<[^>]+>//g;
	$str =~ s/<[^>]+>//g;
	return $str;
}
sub trim{
	my $str = shift;
	$str =~ s/^\s+//gs;
	$str =~ s/\s+$//gs;
	return $str;
}
sub prepareValue{
	my $val = shift;
	$val =~ s/\&nbsp;/ /gs;
	$val =~ s/\s\s+/ /gs;
	return $val;
}
sub usage{
	my $errmsg = shift;
	println("usage: $0 <html-file> <search-phrase1> [search-phrase2...]");
	my $rc = 0;
	$rc = 1 if($errmsg=~/\S/);
	println("ERROR: $errmsg") if($errmsg=~/\S/);
	exit $rc;
}
sub println{
	my $str = shift;
	print "$str\n";
}
sub urldecode{
        my $str = shift;
        $str =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;
        $str =~s/\&#(\d+);/chr($1)/eg;
        return $str;
}

$str = <<EOF
<tr><td class="field_name" style="width: 20%;"><i>Title:</i></td>
<td class="field_data" style="width: 80%;"><b>Nick Dillmann Cloud</b></td></tr>
<tr><td class="field_name" style="width: 20%;"><i>User Name:</i></td>
<td class="field_data" style="width: 80%;">https://www.dillmann-cloud.de/6b</td></tr>
<tr><td class="field_name" style="width: 20%;"><i>Password:</i></td>
<td class="field_data" style="width: 80%;"><code>Uzykk9</code></td></tr>
<tr><td class="field_name" style="width: 20%;"><i>Notes:</i></td>
<td class="field_data" style="width: 80%;">Liebe Eltern der Klasse 6b,<br />
<br />
wie am Elternabend angesprochen, erhalten Sie den Zugangslink zur Dillmann-Cloud:<br />
<br />
https://www.dillmann-cloud.de/6b<br />
<br />
Passwort: Uzykk9<br />
<br />
<br />
<br />
Ich habe im Ordner Organisatorisches der 6b eine Kalenderübersicht für die AB-Wochen hinterlegt. Dies ist für den Religionsunterricht wichtig, welcher abwechselnd in Präsenz und im Fernunterricht stattfindet.<br />
<br />
Im BNT-Ordner der 6b habe ich eine Wochenübersicht für die geteilte Stunde am Freitag (BNT/Sport) hinterlegt. Die genannte Gruppe hat in dieser Woche BNT-Unterricht. Zusätzlich finden Sie dort das Material für das Baumtagebuch, welches ich bereits in kopierter Form ausgeteilt habe für den Fall, dass doch ein Blatt verloren gehen sollte. Weiteres BNT-Material wird vorerst nicht hinterlegt.<br />
<br />
Herzliche Grüße und noch eine schöne Woche,<br />
<br />
Barbara Bertsch</td></tr>
<tr><td class="field_name" style="width: 20%;"><i>Last Modification Time:</i></td>
<td class="field_data" style="width: 80%;">10/2/2020 5:59:38 AM</td></tr>
<tr><td colspan="2"><hr /></td></tr>
...
<tr><td class="field_name" style="width: 20%;"><i>Title:</i></td>
<td class="field_data" style="width: 80%;"><b>ChatGPT</b></td></tr>
<tr><td class="field_name" style="width: 20%;"><i>User Name:</i></td>
<td class="field_data" style="width: 80%;">simon.bruegmann@gmail.com</td></tr>
<tr><td class="field_name" style="width: 20%;"><i>URL:</i></td>
<td class="field_data" style="width: 80%;"><a href="https://chat.openai.com/chat">https://chat.openai.com/chat</a></td></tr>
<tr><td class="field_name" style="width: 20%;"><i>Last Modification Time:</i></td>
<td class="field_data" style="width: 80%;">4/5/2023 6:46:15 AM</td></tr>
<tr><td colspan="2"><hr /></td></tr>
<tr><td class="field_name" style="width: 20%;"><i>Title:</i></td>
<td class="field_data" style="width: 80%;"><b>YouChat</b></td></tr>
<tr><td class="field_name" style="width: 20%;"><i>User Name:</i></td>
<td class="field_data" style="width: 80%;">simon.bruegmann@gmail.com</td></tr>
<tr><td class="field_name" style="width: 20%;"><i>Password:</i></td>
<td class="field_data" style="width: 80%;"><code>Simon148</code></td></tr>
<tr><td class="field_name" style="width: 20%;"><i>URL:</i></td>
<td class="field_data" style="width: 80%;"><a href="https://you.com">https://you.com</a></td></tr>
<tr><td class="field_name" style="width: 20%;"><i>Last Modification Time:</i></td>
<td class="field_data" style="width: 80%;">4/7/2023 12:25:35 PM</td></tr>
</table><br />

EOF
