Vielleicht gibt es hier ja noch dein ein oder anderen Magic Spieler der sich auch für neue Spoiler interessiert.
Um mich per Telegram benachrichtigen zu lassen musste ich erstmal rausfinden wann es neue Spoiler gibt. Leider stellt http://www.magicspoiler.com/ keinen RSS feed bereit.
Schnell habe ich die Seite http://midnightmtgo.com/site/mtgrss/magic-spoiler-rss gefunden welche mir die Daten so (https://feed2js.org//feed2js.php?src=http%3A%2F%2Fwww.magicspoiler.com%2Ffeed%2F&chan=y&num=5&desc=1&au=y&date=y&targ=y&utf=y&html=y) bereitstellt.
Jetzt brauchte ich nur noch ein at welches jede Stunde prüft ob neue Spoiler vorhanden und kann auf das Event reagieren um mir eine Benachrichtigung per Telegram zu schicken :)
Raw definition:
defmod MagicSpoiler at +*01:00:00 {\
my $RSS = GetFileFromURL("http://feed2js.org//feed2js.php?src=http%3A%2F%2Fwww.magicspoiler.com%2Ffeed%2F&chan=y&num=5&desc=1&au=y&date=y&targ=y&utf=y&html=y");;\
$RSS =~ s/(document\.write\('|'\).)//g;;\
my @spoiler = split("\n", $RSS);;\
shift @spoiler for 1..6;;\
pop @spoiler;;\
$RSS = join("\n", @spoiler);;\
$RSS =~ s/\n+/\n/g;;\
$RSS =~ s/\–./–/g;;\
@spoiler = split(/\n<\/li>\n?/, $RSS);;\
\
my $hash = $defs{MagicSpoiler};;\
my @oldSpoiler;;\
my $oldSpoiler = ReadingsVal("MagicSpoiler", "oldSpoiler", "");;\
\
readingsBeginUpdate($hash);;\
\
for (my $i = 0;; $i < @spoiler;; $i++){\
my ($url, $name) = ($spoiler[$i] =~ m/<a class="rss-item" href="([^"]+)" target="_blank">([^"]+)<\/a>/g);;\
my @url;;\
$url[0] = GetFileFromURL($url);;\
@url = ($url[0] =~ m/src="([^"]+)"/g);;\
$url = $url[3] if(@url == 9 || @url == 10);;\
my $changed = ($name =~ m/$oldSpoiler/ ? 0 : 1);;\
push(@oldSpoiler, $name);;\
my $oracle = (split("\n", $spoiler[$i]))[2];;\
my $spoiler = "spoiler-" . sprintf("%02d", ($i + 1));;\
\
readingsBulkUpdate($hash, "$spoiler-name", $name, $changed);;\
readingsBulkUpdate($hash, "$spoiler-url", $url, 0);;\
delete $hash->{READINGS}->{"$spoiler-oracle"};;\
readingsBulkUpdate($hash, "$spoiler-oracle", $oracle, 0)\
if($oracle ne "");;\
}\
\
readingsBulkUpdate($hash, "oldSpoiler", join("|", sort(@oldSpoiler)), 0);;\
readingsEndUpdate($hash, 1);;\
}