Neus Modul 98_rssFeed - Abrufen von RSS News-Feeds

Begonnen von Benni, 06 Dezember 2015, 20:34:39

Vorheriges Thema - Nächstes Thema

hillbicks

*sigh*

Ich hatte gestern das update gemacht und anschliessend einen restart. In der Zwischenzeit hatte ich aber Aenderungen an einem Modul vorgenommen und dabei hatte sich der Owner geaendert, sprich, update ist abgebrochen, was mir aber nicht aufgefallen war. Erst grade als ich die Version nochmal gecheckt habe und anschliessend die Logs durchgegangen bin.

Sorry fuer diesen dummen Fehler, ich hoffe es hat Dich nicht all zuviel Zeit gekostet mit der VM :)

Benni

Zitat von: hillbicks am 25 Dezember 2015, 19:43:09
Sorry fuer diesen dummen Fehler, ich hoffe es hat Dich nicht all zuviel Zeit gekostet mit der VM :)

Passt schon! Mir ist lieber, der Fehler liegt bei dir, als bei mir  ;D
Und die Stunde für die VM war ja deswegen nicht nicht um sonst. So ne VM kann man ja noch weiter verwenden, das dient mir doch gleich noch als Jessie Test-System. ;)


hillbicks

Dann ist ja gut, mir ist sowas nur trotzdem aeussert unangenehm, weil es mich doch selber immer aergert wenn es andersrum ist. ;)

Aber vielleicht auch gar nicht schlecht nochmal zu sehen das man selbst auch nicht davor gefeilt ist solche "dummen" Fehler zu machen. Was fuer eine Ueberraschung, eh? :P

Danke Dir nochmal und einen schoenen Urlaub noch :)

rasti

#18
Hallo,

ich habe hier folgenden rss feed  :
http://www.stimme.de/storage/rss/rss/regioticker/regioticker.xml

Bei dem ist das Feld description nicht immer befüllt, anstelle dessen steht da ein Feld
<content:encoded>

Das führt dann zu einem Reading der Art "HASH(0x3800748)" was sich unschön liest....

Siehe hier:

<item>
         <pubDate>Tue, 02 Feb 2016 18:30:02 +0100</pubDate>
         <timestamp>1454434202</timestamp>
         <title><![CDATA[Schwerpunkte bei Einbrüchen - Region ]]></title>
         <link>http://www.stimme.de/3564464</link>
         <description><![CDATA[    ]]></description>
         <content:encoded><![CDATA[ 88 Einbrüche in Neckarsulm, 38 in Öhringen, 35 in Bad Rappenau, dagegen kein einziger Einbruch in Cleebronn, Jagsthausen und Krautheim: Die Einbruchsstatistik der Polizei vom Vorjahr zeigt auffällige regionale Unterschiede. Autobahnnähe ist ein wichtiger Einflussfaktor. Jetzt stellt sich heraus, dass aber auch die Gemeinden entlang der Stadtbahn häufig betroffen sind. Die Polizei weiß von Fällen, in denen Täter mit der Stadtbahn anreisten. ]]></content:encoded>
         <guid>http://www.stimme.de/3564464</guid>
      </item>


Könntest du da ein Attribut setzen so das  z.B. bei encodedcontent=1 das andere Feld in die readings kommt ?
Oder als Notlösung das Reading dann leer lässt.

Grüße

Ralf

Augschburger

Hallo benni,

ich wollte mich für das Modul bedanken, ich nutze es inzwischen gerne. Die Darstellung erfolgt auf dem fhem tablet ui als <div data-type="label">
Das Widget kommt allerdings mit den Zeilenumbrüchen nicht zurecht oder schneidet dann ab (was ja an anderer Stelle Sinn machen kann), deshalb habe ich in Zeile 499 des 98_rssFeed.pm folgenden Code eingefügt:
$cdesc=~s/\x0A/ /;
Falls Du mal irgendwann Lust hast, das (ggf. per attr-Switch) zu implementieren...  :)

Viele Güße,
  Hans-Jörg

Benni

Zitat von: rasti am 03 Februar 2016, 00:56:26
Bei dem ist das Feld description nicht immer befüllt, anstelle dessen steht da ein Feld
<content:encoded>

Das führt dann zu einem Reading der Art "HASH(0x3800748)" was sich unschön liest....

Schaue ich mir am WE mal an.

Zitat von: Augschburger am 03 Februar 2016, 16:07:56
$cdesc=~s/\x0A/ /;
Falls Du mal irgendwann Lust hast, das (ggf. per attr-Switch) zu implementieren...  :)

Schaue ich mich auch am WE an. Mache ich evtl. sogar etwas generischer ;)

Benni

Ab morgen gibt es per update eine neue Version des Moduls.

Neu hinzugekommen ist die Möglichkeit per Attribut rfCustomTextPrepFn eine Funktion anzugeben (bspw. aus 99_myUtils.pm), mit der die Texte vor dem setzen der Readings, bzw. der Ticker-Zeilen beliebig manipuliert werden können (genaue Beschreibung in der commandref).

Zitat von: Augschburger am 03 Februar 2016, 16:07:56
$cdesc=~s/\x0A/ /;
Das kann nun mit dieser Funktion umgesetzt werden:

sub rssFeedPrep($$)
{
    my($texttype,$text) = @_;
    $text=~s/\x0A/ / if($texttype =~/description/);
    return $text;
}



Zitat von: rasti am 03 Februar 2016, 00:56:26
Das führt dann zu einem Reading der Art "HASH(0x3800748)" was sich unschön liest....

Auch das kann nun mit rfCustomTextPrepFn gelöst werden:

sub rssFeedPrep($$)
{
    my($texttype,$text) = @_;
    return ' ' if ($text=~/HASH\(.*\)/);
}


Weiterhin habe ich <content:encoded> als encodedContent in die Auswahl für die Readings mit aufgenommen.
Auswahl erfolgt wie gewohnt über das Attribut rfReadings

rasti

Hallo Benni,

ich habe ein update durchgeführt, bei dem fhem sich auch das Modul neu geholt hat.
shutdown restart auch durchgeführt.

Aber ich sehe die neuen readings nicht, was mache ich falsch ?
Siehe Screenshot, in der Liste hätte ich das neue encodedContent erwartet ?!?

Gruß

Ralf

Benni

#23
Guten Morgen Ralf!

Das kann noch nicht die aktuelle Version gewesen sein.
Die ist erst ab heute ab ca. 8:00 Uhr im Update enthalten.

Versuche es einfach später nochmal.

Update: habe eben noch mal geschaut. Inzwischen wird die aktuelle Version ausgeliefert ;)

Gruß Benni.

rasti

Zitat von: Benni am 08 Februar 2016, 06:49:44
Guten Morgen Ralf!

Das kann noch nicht die aktuelle Version gewesen sein.
Die ist erst ab heute ab ca. 8:00 Uhr im Update enthalten.

Versuche es einfach später nochmal.

Update: habe eben noch mal geschaut. Inzwischen wird die aktuelle Version ausgeliefert ;)

Gruß Benni.

Danke dir !

Werde heute oder morgen abend dazu kommen das mal zu testen

Gruß

Ralf

rasti


Raemsna

Hallo Benni,

erstmal vielen Dank für dieses tolle Modul, das ich sehr gerne nutze.

Ich gerate mit ziemlicher Sicherheit jetzt stark ins Offtopic, aber ich drehe mich im Kreis und komme leider nicht weiter (Sorry dafür!)

Folgendes Szenario:
- Ich hole mit dem Modul ein Rss-Feed ab.
- per einer Routine in der myUtils durchsuche ich alle geholten Titel nach Suchwörtern. Wenn ein Suchwort gefunden wurde, lasse ich mir eine E-Mail mit dem RSS Titel, etc. schicken (soweit funktioniert alles)

Nun das Problem:
- da ich nicht möchte, dass ich wiederholt dieselben Meldungen bekomme (Titel ist nach dem nächsten Lauf immernoch im Reading vorhanden), schreibe ich mir nach dem Versenden der E-Mail alle pubDates in eine Datei, z.B.:


Fri, 12 Feb 2016 21:53:01 +0100
Fri, 12 Feb 2016 20:57:01 +0100


- beim nächsten Durchlauf lese ich diese in eine Variable ein ($founds)
- nun möchte ich abfragen, ob ein Titel (auf dem ein Suchwort padst), bereits einmal per Mail versendet wurde. Falls ja, dann springe weiter zum nächsten Titel:


if ($founds =~ m/$val_pubDate/) {
        print out "Der Titel $val_title wurde bereits gemeldet und wird ignoriert";
next;
}


Und genau dieser letzte CodeBlock funktioniert nicht: Obwohl das pubDate des aktuellen Titels ($val_pubDate) ebenfalls in der Variable $founds vorkommt, überspringt die Abfrage dieses IF.

Wie gesagt, sorry für offtopic, aber vielleicht hat ja trotzdem jemand Muße mir zu helfen.

Grüße
Raemsna

Benni

Ja! Das ist mal mächtig OT!
Das Thema wäre wohl eher "wie verwende ich Variablen in Perl-regex?"

Hier trotzdem ein Erklärungsversuch mit möglichem Lösungsvorschlag:
Das Problem wird sein, dass in der Variablen auch Zeichen enthalten sind, die in regex spezielle Bedeutung haben (s.g. Metazeichen).
Sollen diese ignoriert werden, kann vor der Variablen \Q (quotemeta) angegeben werden:


$found =~ m/\Q$val_pubDate/


Das problemverursachende Metazeichen im genannten Beispiel dürfte übrigens das + bei der Zeitzonenangabe sein, dies könnte man auch direkt mit einem \ vorangestellt quoten.


accessburn

#28
Könnt ihr mir mal helfen?
Ich wollte in der vorbereitung für FTUI einen Newsticker einbinden.

Wenn ich aber den Feed aufrufe bekomme ich in FHEM nur eine weiße Seite :'(

Feed:
http://news.gcffm.de/rss_feed.xml

Log:
Zitat2016.04.10 22:02:14 3: myNews: ERROR can't convert feed response
2016.04.10 22:04:18 3: myNews: ERROR: no response getting rss data from url
2016.04.10 22:06:29 1: memGzip: Wide character in memGzip at /opt/fhem//FHEM/01_FHEMWEB.pm line 459
2016.04.10 22:06:31 1: memGzip: Wide character in memGzip at /opt/fhem//FHEM/01_FHEMWEB.pm line 459
2016.04.10 22:06:36 1: memGzip: Wide character in memGzip at /opt/fhem//FHEM/01_FHEMWEB.pm line 459
2016.04.10 22:07:53 1: memGzip: Wide character in memGzip at /opt/fhem//FHEM/01_FHEMWEB.pm line 459

Gzip ist aber installiert.

cfg:
Zitatdefine myNews rssFeed http://news.gcffm.de/rss_feed.xml 3600
attr myNews room BBB


EDIT:
nach "rfEncode utf8" scheint es zumindest zu laufen. Jedoch ist das reading leer:
Das bleibt jedoch übrig:
2016.04.10 22:26:34 3: myNews: ERROR can't convert feed response


Internals:
   DEF        http://news.gcffm.de/rss_feed.xml 3600
   INTERVAL   3600
   NAME       myNews
   NEXTUPDATE Sun Apr 10 23:25:53 2016
   NR         473
   NTFY_ORDER 50-myNews
   STATE      Sun Apr 10 22:26:34 2016
   TYPE       rssFeed
   URL        http://news.gcffm.de/rss_feed.xml
   Readings:
     2016-04-10 22:26:34   gzippedFeed     0
     2016-04-10 22:26:34   state           Sun Apr 10 22:26:34 2016
Attributes:
   rfEncode   utf8
   room       BBB


Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

Benni

Hallo,

irgendwas ist anscheinend mit dem Feed nicht in Ordnung!
Wenn ich die URL im Browser aufrufe erhalte ich auch eine Fehlermeldung (s. Anhang)

So wie's aussieht wird kein vollständiger Feed geliefert. Der bricht irgendwo mitten im XML ab (2. Anhang).

Gruß Benni.