Autor Thema: Headlines aus Tagesschau RSS extrahieren  (Gelesen 4031 mal)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15081
  • s/fhem\.cfg/configDB/g
Headlines aus Tagesschau RSS extrahieren
« am: 14 Februar 2015, 19:42:52 »
Voraussetzung: Das perl Modul XML::Simple muss installiert sein!

use XML::Simple;
use HttpUtils;

sub tagesschau {
  my ($lines) = shift;
  $lines //= 10;

  my ($i,$nachrichten,$response,@ticker,$ua,$url,$xml);

  $i = 0;
  $url = "http://www.tagesschau.de/xml/rss2";
  $response = GetFileFromURLQuiet($url,3,undef,1);
  $xml         = new XML::Simple;
  $nachrichten = $xml->XMLin($response, ForceArray => ['item']);

  while ($i < $lines) {
    my $h = latin1ToUtf8($nachrichten->{channel}{item}[$i]{title});
    last unless $h;
    push (@ticker,$h);
    $i++;
  }
  return join("\n", @ticker);
}

Aufgerufen wird die Funktion einfach mit

tagesschau(<anzahlZeilen>)
Wird <anzahlZeilen> weggelassen, werden 10 Zeilen zurückgegeben.



Beispiel:

In der Eingabezeile des fhem Frontend eingeben:

{tagesschau}
liefert als Ergebnis:

Angriffe aus islamkritische Künstler - ein Überblick
Boko Haram überfällt Großstadt in Nigeria
Schüsse in Kopenhagen bei Veranstaltung mit Karikaturisten
Fußball-Bundesliga: Torfestivals in München und Leverkusen
Bundesliga-Liveticker: Bayern empfängt den HSV
Chronologie der Krise: Februar 2015
Neuseeland: Hoffnung für 60 der 200 gestrandeten Wale
Waffenruhe in Ostukraine: Hält sie oder hält sie nicht?
Ratingagentur Fitch stuft Österreich herab
Der Libanon am zehnten Jahrestag des Attentats auf Hariri
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 14.12.2018 - 18:30 Uhr

Offline ptigges

  • New Member
  • *
  • Beiträge: 3
Antw:Headlines aus Tagesschau RSS extrahieren
« Antwort #1 am: 30 Juli 2015, 08:51:50 »
Vielen Dank, super Codeschnipsel!

Offline Thargor

  • Full Member
  • ***
  • Beiträge: 159
Antw:Headlines aus Tagesschau RSS extrahieren
« Antwort #2 am: 19 April 2016, 22:40:52 »
Funktioniert das bei euch noch?

Ich bekomme seit kurzen immer:
No value specified for 'KeyAttr' option in call to XMLin() at /usr/local/FHEM/share/fhem/FHEM/99_myUtils.pm line 358.

Leider konnte ich nicht nachvollziehen was sich bei mir geändert hat.

Offline Hans Franz

  • Sr. Member
  • ****
  • Beiträge: 527
Antw:Headlines aus Tagesschau RSS extrahieren
« Antwort #3 am: 20 April 2016, 09:30:13 »
Ersetze/ändere die Zeile so:
$nachrichten = $xml->XMLin($response, ForceArray => ['item'], KeyAttr => []);Sollte dann wieder gehen.

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

Offline Thargor

  • Full Member
  • ***
  • Beiträge: 159
Antw:Headlines aus Tagesschau RSS extrahieren
« Antwort #4 am: 20 April 2016, 09:43:59 »

Super vielen Dank!
Nur interessehalber, wieso ist die Änderung nötig geworden?

Offline hartenthaler

  • Full Member
  • ***
  • Beiträge: 264
Antw:Headlines aus Tagesschau RSS extrahieren
« Antwort #5 am: 27 April 2016, 19:05:34 »
Nett! Aber wie setzt ihr die Headlines ein? Habt ihr Anwendungsbeispiele? Ich könnte mir vorstellen, dass ich eine TabletUI-Seite baue in der die letzten entgangenen Anrufe, die Termine für den Tag, die Fahrzeit zur Arbeit, eine große Uhr und eben die Tagesschau-Headlines dargestellt werden. So als Einstieg in den Tag. Allerdings kann es sein, dass man zu einer Headline noch weitere Infos haben möchte, weil das Thema so spannend ist. Also ein Link?
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

Offline hartenthaler

  • Full Member
  • ***
  • Beiträge: 264
Antw:Headlines aus Tagesschau RSS extrahieren
« Antwort #6 am: 11 Oktober 2016, 23:46:48 »
Ich habe die Funktion noch um html-Tags erweitert und zeige sie dann folgendermaßen an:
define tagesschau.headlines weblink htmlCode { tagesschau("html",20) }

Und hier die Änderungen:
################################################################
###                     Tagesschau-Headlines               
################################################################

# 1. optionaler Parameter: "html"/"text" für html-Liste oder Text-Liste (Standard)
# 2. optionaler Parameter: Anzahl der Listeneinträge (Standard = 10)

use XML::Simple;
use HttpUtils;

sub tagesschau (;$$) {
  my ($list, $lines) = @_;
  $list //= "text";
  $lines //= 10;

  my ($i,$l,$nachrichten,$response,@ticker,$url,$xml);

  $url         = "http://www.tagesschau.de/xml/rss2";
  $response    = GetFileFromURLQuiet($url,3,undef,1);
  $xml         = new XML::Simple;
  $nachrichten = $xml->XMLin($response, ForceArray => ['item'], KeyAttr => []);
  $l = ($list ne "text");

  push (@ticker,"<ul>") if $l;
  $i = 0;
  while ($i < $lines) {
    my $h = latin1ToUtf8($nachrichten->{channel}{item}[$i]{title});
    last unless $h;
$h = "<li>".$h."</li>" if $l;
    push (@ticker,$h);
    $i++;
  }
  push (@ticker,"</ul>") if $l;
  return join("\n", @ticker);
}

PS: es gibt übrigens noch einen Thread zum Anzeigen/Wiedergeben auf Sonos der 100-Sekunden-Tagesschau: https://forum.fhem.de/index.php/topic,45384.0.html
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

Offline Benni

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1837
  • FHEMinist
Antw:Headlines aus Tagesschau RSS extrahieren
« Antwort #7 am: 12 Oktober 2016, 05:17:24 »
Nett! Aber wie setzt ihr die Headlines ein? Habt ihr Anwendungsbeispiele?

Ich nutze die Headlines in Infopanel. Das hat eine eingebaute Ticker-Funktion um so was anzuzeigen.

Aus dieser einfachen Idee heraus ist übrigens das Modul rssFeed entstanden ;D

FHEM (FL 9.9) (configDB+DbLog) auf Debian Wheezy.
Jede Menge HM mit 2x HMUART (WeMos+esp-link) über VCCU.
UniRoll an CUL868. Sebury F2-2 RFID über ESPEasy
Module: 98_rssFeed und 98_QRCode

Offline gbomacfly

  • Jr. Member
  • **
  • Beiträge: 81
  • FHEM Fan
Antw:Headlines aus Tagesschau RSS extrahieren
« Antwort #8 am: 08 Januar 2018, 12:34:03 »
Genialer Schnipsel, Danke dafür.
Ich würde die Headlines gerne mit nem Link versehen, kann mir jemand Hilfestellung geben?
FHEM auf Debian Server, LogDB, MAX!-HT, Yeelight, Sonoff-Tasmota, IT, Signalduino434, nanoCUL868
FHEM-Keller auf RPI Zero mit OBIS (FHEM2FHEM)
FHEM-WZ auf RPI Zero - BT auf Alexa
Diverse Eigenbausensoren mit Arduino/MQTT

Offline gbomacfly

  • Jr. Member
  • **
  • Beiträge: 81
  • FHEM Fan
Antw:Headlines aus Tagesschau RSS extrahieren
« Antwort #9 am: 13 Februar 2018, 22:28:53 »
Endlich kam ich zum Spielen, hier die angepasste Funktion mit Links :)

sub tagesschau (;$$) {
  my ($list, $lines) = @_;
  $list //= "text";
  $lines //= 10;

  my ($i,$l,$nachrichten,$response,@ticker,$url,$xml);

  $url         = "http://www.tagesschau.de/xml/rss2";
  $response    = GetFileFromURLQuiet($url,3,undef,1);
  $xml         = new XML::Simple;
  $nachrichten = $xml->XMLin($response, ForceArray => ['item'], KeyAttr => []);
  $l = ($list ne "text");

  push (@ticker,"<ul>") if $l;
  $i = 0;
  while ($i < $lines) {
    my $h = latin1ToUtf8($nachrichten->{channel}{item}[$i]{title});
    my $l = latin1ToUtf8($nachrichten->{channel}{item}[$i]{link});

    last unless $h;
$h = "<li><a href=\"" . $l . "\" target=\"_blank\">" .$h."</a></li>" if $l;
    push (@ticker,$h);
    $i++;
  }
  push (@ticker,"</ul>") if $l;
  return join("\n", @ticker);
}
FHEM auf Debian Server, LogDB, MAX!-HT, Yeelight, Sonoff-Tasmota, IT, Signalduino434, nanoCUL868
FHEM-Keller auf RPI Zero mit OBIS (FHEM2FHEM)
FHEM-WZ auf RPI Zero - BT auf Alexa
Diverse Eigenbausensoren mit Arduino/MQTT