#!/usr/bin/perl use strict; use warnings; use POSIX qw(strftime); use LWP::Simple; # alle wichtigen Einstellungen my $website='...'; my $dbug_file='debug.log'; my $line_file='tmp_lines.txt'; my $stat_file='posting_stats.txt'; my $wait_time=60; print "Hello, ScheduledWorld...\n"; # Hash mit den Titeln my %found_lines; # schon mal gefundene Titel Laden wenn vorhanden if(-f $line_file) { open(my $fh, '<', $line_file) or die(qq(ERROR open "$line_file" "$!"\n)); my $pos=0; while(<$fh>) { chomp($_); $found_lines{$_}=$pos; $pos++; } close($fh); } while (1) { # defug datei öffnen open(my $dbug_fh, '>>', $dbug_file) or die(qq(ERROR open "$dbug_file" "$!"\n)); # webseite holen my $site = get($website); # wenn die Seite geladen werden konnte if($site) { # Hash mit den neuen Titeln my %new_found_lines; # Zeigt an wie viele neue Einträge hinzu gekommen sind my $offset=0; # finde alle "Titel" my @entry_chunks=$site=~m!\Q
\E(.+?)\Q
\E!g; print $dbug_fh "num chunks: ".scalar(@entry_chunks)."\n"; # Zeilenenden aus den Titeln entfernen chomp(@entry_chunks); # alle gefundenen Titel durch gehen for my $i (0..$#entry_chunks) { my $found=$entry_chunks[$i]; # wenn der Titel schon bekannt ist if(exists($found_lines{$found})) { print "$i old: $found\n"; # titel an anderer stelle? my $moved=$found_lines{$found}-$i; print $dbug_fh "i:$i offset:$offset moved:$moved old: $found\n"; } # wenn der Titel neu ist else { $offset++; print "$i new: $found\n"; print $dbug_fh "i:$i offset:$offset new: $found\n"; } # Titel von der Webseite dem neuen Hash hinzufügen $new_found_lines{$found}=$i; } # list der Titel speichern, # status_datei ergänzen # wenn sich was geändert hat. if($offset) { # aktuelle zeit my $time_now=strftime('%d-%m-%Y %H:%M',localtime); # Titel schreiben if(open(my $line_fh, '>', $line_file)) { print $line_fh join("\n", @entry_chunks); close($line_fh); } else { warn(qq(ERROR open "$line_file" "$!"\n)); print $dbug_fh qq(ERROR open "$line_file" "$!"\n); } # Status schreiben if(open(my $fh, '>>', $stat_file)) { print $fh "offset: $offset\n"; print $fh "$time_now\n"; close($fh); } else { warn(qq(ERROR open "$stat_file" "$!"\n)); print $dbug_fh qq(ERROR open "$stat_file" "$!"\n); } } # alte Titel den Neuen überschreiben %found_lines=%new_found_lines; print $dbug_fh "offset: $offset\n"; } # Fehlermeldung wenn die Seite nicht geladen wurde else { warn "ERROR load website $website\n"; print $dbug_fh "ERROR load website $website!\n"; } print $dbug_fh strftime('%d-%m-%Y %H:%M',localtime); print $dbug_fh "\n################################################################debug\n"; close($dbug_fh); # warten sleep($wait_time); }