die neusten Magic the Gathering Spoiler in FHEM

Begonnen von igami, 31 August 2017, 13:18:33

Vorheriges Thema - Nächstes Thema

igami

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 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);;\
}
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED