NEWS
Test/Support für Adapter rssfeed und vis-2-widgets-rssfeed
-
@Oli
Bei 2
Du musst im Template einfach nur ein Style oder ein class Attribut bei Datum und bei Titel ergänzen, je nachdem wo du die css Anweisungen hinschreiben möchtest.https://wiki.selfhtml.org/wiki/HTML/Universalattribute#style
Wie gesagt, bei 3 muss ich experimentieren, da ich aktuell Den DatenPunkt Bei jeder Anfrage erneut schreibe egal ob sich was geändert hat oder nicht. Das kann sein dass das dann jedes Mal getriggert wird auch wenn sich nichts geändert hat
kann man da was machen ?
wenn ich das forum anzeigen lasse kommt bei einem spoiler mit code:

-
Neue Version 0.0.9
- die css-attribute, die in vis eingegeben werden können, werden nun auch auf das innere span element angewendet, da diese sonst dort nicht ankommen.
- die package-lock.json wurde aktualisiert, da in einer der abhängigen bibliotheken ein security hinweis existiert
- die einzelnen feeds können nun in Kategorien (Unterordner im Objektbaum) gespeichert werden.
- Der Mechanismus zur Aktualisierung von Datenpunkten wurde verbessert. Leider ändern einige RSS-Anbieter selbst Attribute (pubdate) auch wenn sich der eigentliche Inhalt nicht verändert hat. Daher überprüft der adapter nun selbst, ob sich die Attribute title und description geändert haben.
Wenn ihr Fehler entdeckt oder weitere Verbesserungen benötigt, dann gerne hier im Forum reinschreiben.
-
kann man da was machen ?
wenn ich das forum anzeigen lasse kommt bei einem spoiler mit code:

@liv-in-sky sagte in Test Adapter rssfeed v0.0.x:
kann man da was machen ?
wenn ich das forum anzeigen lasse kommt bei einem spoiler mit code:

Grundsätzlich kann man immer was machen. Die Frage ist nur, lohnt sich das.
Das was du da siehst ist der original code des iobroker-Forums, um diese spoilertexte anzuzeigen. Im Forum ist dann sicherlich ein zusätzliches javascript-bibliothek verlinkt, der diese n Code erkennt und dafür sorgt, das das versteckt angezeigt wird, bzw. auf Knopfdruck dann angezeigt wird.
Wenn du nicht das Forum mit all seinen javascript bibliotheken in deiner View nachstellen willst, dann ist das wahrscheinlich sehr aufwändig.
evtl. könnte man mit regex solche blöcke rauslöschen. aber regex ist bei html tags nicht besonders gut -
Neue Version 0.0.9
- die css-attribute, die in vis eingegeben werden können, werden nun auch auf das innere span element angewendet, da diese sonst dort nicht ankommen.
- die package-lock.json wurde aktualisiert, da in einer der abhängigen bibliotheken ein security hinweis existiert
- die einzelnen feeds können nun in Kategorien (Unterordner im Objektbaum) gespeichert werden.
- Der Mechanismus zur Aktualisierung von Datenpunkten wurde verbessert. Leider ändern einige RSS-Anbieter selbst Attribute (pubdate) auch wenn sich der eigentliche Inhalt nicht verändert hat. Daher überprüft der adapter nun selbst, ob sich die Attribute title und description geändert haben.
Wenn ihr Fehler entdeckt oder weitere Verbesserungen benötigt, dann gerne hier im Forum reinschreiben.
-
@liv-in-sky sagte in Test Adapter rssfeed v0.0.x:
kann man da was machen ?
wenn ich das forum anzeigen lasse kommt bei einem spoiler mit code:

Grundsätzlich kann man immer was machen. Die Frage ist nur, lohnt sich das.
Das was du da siehst ist der original code des iobroker-Forums, um diese spoilertexte anzuzeigen. Im Forum ist dann sicherlich ein zusätzliches javascript-bibliothek verlinkt, der diese n Code erkennt und dafür sorgt, das das versteckt angezeigt wird, bzw. auf Knopfdruck dann angezeigt wird.
Wenn du nicht das Forum mit all seinen javascript bibliotheken in deiner View nachstellen willst, dann ist das wahrscheinlich sehr aufwändig.
evtl. könnte man mit regex solche blöcke rauslöschen. aber regex ist bei html tags nicht besonders gut -
Neue Version 0.0.9
- die css-attribute, die in vis eingegeben werden können, werden nun auch auf das innere span element angewendet, da diese sonst dort nicht ankommen.
- die package-lock.json wurde aktualisiert, da in einer der abhängigen bibliotheken ein security hinweis existiert
- die einzelnen feeds können nun in Kategorien (Unterordner im Objektbaum) gespeichert werden.
- Der Mechanismus zur Aktualisierung von Datenpunkten wurde verbessert. Leider ändern einige RSS-Anbieter selbst Attribute (pubdate) auch wenn sich der eigentliche Inhalt nicht verändert hat. Daher überprüft der adapter nun selbst, ob sich die Attribute title und description geändert haben.
Wenn ihr Fehler entdeckt oder weitere Verbesserungen benötigt, dann gerne hier im Forum reinschreiben.
-
die Schrift lässt sich jetzt anpassen, danke dafür, allerdings fängt die Laufschrift nach vier von über hundert Meldungen wieder von vorne an.
Woran könnte das liegen?
-
-
-
@sigi234
ok, mehrmals probieren neu zu starten oder
alle datenpunkte löschen und alle feeds in admin löschen und dann neu starten, dann feeds neu eiungeben oder
adapter deinstallieren, neu installierenbei mir gab es wegen den neuen attributen in der config kein problem.
aber man sieht, das die effekte auf unterschiedlichen rechnern anders ausfallen können (auch wenn sie das nicht sollten)da wir hier in alpha sind, ist die sicherste Methode immer den adapter zu deinstallieren und dann neu zu installieren.
-
mir ist noch was aufgefallen, wenn ich in den Adaptereinstellung etwas ändere und speichere, kommt immer diese Meldung.
@Oli sagte in Test Adapter rssfeed v0.0.x:
mir ist noch was aufgefallen, wenn ich in den Adaptereinstellung etwas ändere und speichere, kommt immer diese Meldung.
ja leider, das kommt aber sehr unregelmäßig und ich konnte noch nicht feststellen
warum iobroker da manchmal meckert. Daten werden immer gespeichert.
habe leider auch die stelle noch nicht gefunden, an der der dialog geöffnet wird. dann könnte ich nachschauen, was er da genau prüft. -
@sigi234
ok, mehrmals probieren neu zu starten oder
alle datenpunkte löschen und alle feeds in admin löschen und dann neu starten, dann feeds neu eiungeben oder
adapter deinstallieren, neu installierenbei mir gab es wegen den neuen attributen in der config kein problem.
aber man sieht, das die effekte auf unterschiedlichen rechnern anders ausfallen können (auch wenn sie das nicht sollten)da wir hier in alpha sind, ist die sicherste Methode immer den adapter zu deinstallieren und dann neu zu installieren.
Ok, speichern und löschen geht. V 0.0.10
Mehrmals gestartet und aktuallisiert.Es werden jetzt nicht alle DP als Objekt angelegt.


rssfeed.0 2020-03-22 21:53:14.772 info (12220) starting. Version 0.0.10 in C:/Program Files/iobroker/Test/node_modules/iobroker.rssfeed, node: v10.16.3 rssfeed.0 2020-03-22 21:53:10.947 info (17732) Terminated (START_IMMEDIATELY_AFTER_STOP): Without reason rssfeed.0 2020-03-22 21:53:10.946 info (17732) terminating rssfeed.0 2020-03-22 21:53:10.946 info (17732) cleaned everything up... rssfeed.0 2020-03-22 21:53:10.945 info (17732) Got terminate signal TERMINATE_YOURSELF rssfeed.0 2020-03-22 21:53:10.877 info (17732) starting. Version 0.0.10 in C:/Program Files/iobroker/Test/node_modules/iobroker.rssfeed, node: v10.16.3 rssfeed.0 2020-03-22 21:53:07.510 info (1080) Terminated (START_IMMEDIATELY_AFTER_STOP): Without reason rssfeed.0 2020-03-22 21:53:07.509 info (1080) terminating rssfeed.0 2020-03-22 21:53:07.508 info (1080) cleaned everything up... rssfeed.0 2020-03-22 21:53:07.506 info (1080) Got terminate signal TERMINATE_YOURSELF rssfeed.0 2020-03-22 21:49:10.984 info (1080) starting. Version 0.0.10 in C:/Program Files/iobroker/Test/node_modules/iobroker.rssfeed, node: v10.16.3 -
Ok, speichern und löschen geht. V 0.0.10
Mehrmals gestartet und aktuallisiert.Es werden jetzt nicht alle DP als Objekt angelegt.


rssfeed.0 2020-03-22 21:53:14.772 info (12220) starting. Version 0.0.10 in C:/Program Files/iobroker/Test/node_modules/iobroker.rssfeed, node: v10.16.3 rssfeed.0 2020-03-22 21:53:10.947 info (17732) Terminated (START_IMMEDIATELY_AFTER_STOP): Without reason rssfeed.0 2020-03-22 21:53:10.946 info (17732) terminating rssfeed.0 2020-03-22 21:53:10.946 info (17732) cleaned everything up... rssfeed.0 2020-03-22 21:53:10.945 info (17732) Got terminate signal TERMINATE_YOURSELF rssfeed.0 2020-03-22 21:53:10.877 info (17732) starting. Version 0.0.10 in C:/Program Files/iobroker/Test/node_modules/iobroker.rssfeed, node: v10.16.3 rssfeed.0 2020-03-22 21:53:07.510 info (1080) Terminated (START_IMMEDIATELY_AFTER_STOP): Without reason rssfeed.0 2020-03-22 21:53:07.509 info (1080) terminating rssfeed.0 2020-03-22 21:53:07.508 info (1080) cleaned everything up... rssfeed.0 2020-03-22 21:53:07.506 info (1080) Got terminate signal TERMINATE_YOURSELF rssfeed.0 2020-03-22 21:49:10.984 info (1080) starting. Version 0.0.10 in C:/Program Files/iobroker/Test/node_modules/iobroker.rssfeed, node: v10.16.3@sigi234
ok, das müssen wir in teilprobleme aufteilen:1.) bleibt der adapter dann grün? oben hattest du ja das problem, das der adapter zwischen grün und rot wechselt.
2) das nicht alle datenpunkte sofort angelegt werden hat damit zu tun, das die letzte Abfrage in der adapter config nun gespeichert wird und nicht vorher wieder neu abgefragt wird, bevor diese Zeit abgelaufen ist. ich werden mal noch was machen, das man das forcieren kann, das alle feeds sofort neu abgefragt werden. von daher warte mal die Zeit in Minuten ab, die du da als refresh eingestellt hast. dann werden die Datenpunkte wieder neu angelegt.
3) zum log: die "starting" und "terminating" einträge passen damit zusammen als du gedrückt hast? zwischen dem 2. starting und 3.starting liegen gerade mal 3 sekunden -
@sigi234
ok, das müssen wir in teilprobleme aufteilen:1.) bleibt der adapter dann grün? oben hattest du ja das problem, das der adapter zwischen grün und rot wechselt.
2) das nicht alle datenpunkte sofort angelegt werden hat damit zu tun, das die letzte Abfrage in der adapter config nun gespeichert wird und nicht vorher wieder neu abgefragt wird, bevor diese Zeit abgelaufen ist. ich werden mal noch was machen, das man das forcieren kann, das alle feeds sofort neu abgefragt werden. von daher warte mal die Zeit in Minuten ab, die du da als refresh eingestellt hast. dann werden die Datenpunkte wieder neu angelegt.
3) zum log: die "starting" und "terminating" einträge passen damit zusammen als du gedrückt hast? zwischen dem 2. starting und 3.starting liegen gerade mal 3 sekunden@OliverIO sagte in Test Adapter rssfeed v0.0.x:
@sigi234
ok, das müssen wir in teilprobleme aufteilen:1.) bleibt der adapter dann grün? oben hattest du ja das problem, das der adapter zwischen grün und rot wechselt.
Ja
- das nicht alle datenpunkte sofort angelegt werden hat damit zu tun, das die letzte Abfrage in der adapter config nun gespeichert wird und nicht vorher wieder neu abgefragt wird, bevor diese Zeit abgelaufen ist. ich werden mal noch was machen, das man das forcieren kann, das alle feeds sofort neu abgefragt werden. von daher warte mal die Zeit in Minuten ab, die du da als refresh eingestellt hast. dann werden die Datenpunkte wieder neu angelegt.
Ok
- zum log: die "starting" und "terminating" einträge passen damit zusammen als du gedrückt hast? zwischen dem 2. starting und 3.starting liegen gerade mal 3 sekunden
Ja
-
Unter Abteilung Tester konnte ich kein Topic anlegen. Bitte dort hin verschieben.
Nachdem ich immer weider lese, wie sich die Leute mit rss-Feeds abmühen,
habe ich einen Adapter dazu geschrieben.
Dieser hat aktuell minimale Fähigkeiten, man kann damit aber
schon annehmbare Ergebnisse erzielen.Verwendete Bausteine
Um die Flexibilität bei der Anzeige der Feeds bieten zu können, erfolgt die Formatierung der Ausgabe
über ein template-system.
Eine Vorlage werde ich hier weiter unten kopieren.
Beschreibung der Formatierung und Syntax finden sich auf den folgenden Seiten
https://ejs.co/ und https://github.com/mde/ejsEinlesen der Feeds.
Dazu verwende ich ein node modul namens feedparser.
Dieses Modul kann verschiedene RSS-Standards (RSS, Atom, and RDF).
Dazu ist er noch dazu in der Lage, die Attribute zu normalisieren, so das es in der Ausgabe egal ist,
wie der jeweilige Standard ein bestimmtes Feld nennt.
https://github.com/danmactough/node-feedparserInstallation und Einrichtung
Schritt 1 - Installation
Der Adapter ist aktuell nur auf github verfügbar.
Name des Repository ist https://github.com/oweitman/iobroker.rssfeedSchritt 2 - Instanz hinzufügen
Der Adapter müsste dann im Abschnitt adapter im iobroker angezeigt werden.
Manchmal kommt es vor, das insbesondere bei Webänderungen (Widgets/Konfigurationsdialog) die Änderungen nicht sichtbar sind, muss evtl. auf der Kommandozeile folgender Befehl ausgeführt werden:
iobroker upload rssfeed
Im rechten Bereich in der Zeile des Adapters kann über den Plus-Knopf eine Instanz hinzugefügt werdenSchritt 3 - Konfiguration
Die Konfiguration ist relativ simpel. Es gibt nur wenige Felder
Refresh: ist die generelle Vorgabe, wie oft in Minuten der Feed neu abgerufen werden soll. Voreinstellung ist 60
Maximale Artikel im Datenpunkt: Hier kann die Gesamtmenge der zu verarbeitenden Daten begrenz werden.Dann je neuen Feed:
Name: Ein eindeutiger Name, darf nicht doppelt vorkommen
Url: Die vollständige Adresse des Feed (mit http:// oder https://)
Refresh: Bei Erfassung kann ein abweichender Wert angegeben werden. Ansonsten wird die generelle Vorgabe genommenNach Neustart und Abruf der Daten ist der Feed als JSON-Datenpunkt im Objektbaum zu finden.
Schritt 4 - vis und widgets
Um die Feeds anzuzeigen gibt es ein widget. Dieses kann über den Suchfilter in vis mittels rssfeed gefunden werden.
Das widget hat folgende Einstellmöglichkeiten
rss_oid Hier wird der JSON-Datenpunkt des gewünschten feeds ausgewählt. Ich habe festgestellt, das der Objektbrowser hier nicht imnmer zufriedenstellend funktioniert, da er die im JSON enthaltenen HTML-Anteile versucht dazustellen.
Alternativ die Datenpunkt ID direkt aus vis kopieren.
template: Hier kann ein template erfasst werden, welches javascript und html gemischt enthalten kann.maxarticles: Hier kann widget individuell die Anzahl der Artikel begrenzt werden.
Alle anderen Einstellungen sind identisch zu den anderen widgets, Die Formatvorgaben gellten generell für alle widgetinhalte
Die widgets rssfeed Meta helper und rssfeed Article helper unterstützen bei der Erstellung eines Templates,
indem dort komfortabel die meta-Informationen und die Attribute eines Artikels angezeigt werden.
Im widget rssfeed Article Helper kann man den Artikel auswählen, dessen Attribute angezeigt werden soll, sowie das Präfix anpassen, so dass es einfacher ist dieses in das Template zu kopieren.Ein weiteres widget hat nichts direkt mir rssfeed zu tun und ist in diesem adapter voraussichtlich temporär zu Gast.
Template anhand von Beispielen
Ein Beispiel, welches ich mit den folgenden RSS Feeds getestet habe:<%= meta.title %> <% articles.forEach(function(item){ %> <p><small><%- vis.formatDate(item.pubdate, "TT.MM.JJJJ SS:mm") %></small></p> <h3><%- item.title %></h3> <p><%- item.description %></p> <div style="clear:both;" /> <% }); %>Das Templatesystem arbeitet mit bestimmten Tags.
Die verwendeten Tags bedeuten das folgenden
<%= Der Inhalt des enthaltenen Ausdrucks/Variable wird escaped ausgegenen.
<%- Der Inhalt des enthaltenen Ausdrucks/Variable wird unescaped ausgegenen.
<% Tag ohne Ausgabe, wird für javascriptanweisungen verwendet
%> ist generell ein schließender Tag um eines der vorherigen abzuschließen
Alles was außerhalb dieser Tags ist, wird genau so dann angezeigt bzw. wenn es HTML ist als HTML interpretiert ausgegeben. (siehe bspw das p-tag,div-tag,small-tagInnerhalb des Templates habt ihr 2 vorgegebene variablen zur Verfügung
meta: Hier sind alle Metainformationen zum Feed enthalten. Die folgenden Inhalte stehen zur Verfügung. Ich denke die Bezeichner sind selbst erklärend. In der Hilfe werde ich diese noch genauer Beschreiben. bzw den Inhalt spezifizieren (manche sind Arrays)
meta.title
meta.description
meta.link
meta.xmlurl
meta.date
meta.pubdate
meta.author
meta.language
meta.image
meta.favicon
meta.copyright
meta.generator
meta.categoriesarticles: Ist ein Array mit einzelnen Elementen (javascript array). Jedes Element hat die folgenden Eigenschaften.
Damit es zum Beispiel passt mache ich hier mal das Prefix item davor. Aber wenn ihr wollt könnt ihr das selbst wählen. Es muss dann nur in der Schleife (forEach) entsprechend benannt werden. Auch hjier sind die Bezeichner erst einmal selbst erklärend. Nicht in jedem Feed sind alle attribute auch gefüllt. Die wichtigsten sind im obigen Template bereits enthalten.item.title
item.description
item.summary
item.link
item.origlink
item.permalink
item.date
item.pubdate
item.author
item.guid
item.comments
item.image
item.categories
item.source
item.enclosures"<%= meta.title %> <% articles.forEach(function(item){ %> <p><small><%- vis.formatDate(item.pubdate, "TT.MM.JJJJ SS:mm") %></small></p> <h3><%- item.title %></h3> <p><%- item.description %></p> <div style="clear:both;" /> <% }); %>Kurze Beschreibung was in den einzelnen Zeilen passiert
Z1: Der Feed-titel wird ausgegeben
Z2: Ohne Ausgabe. Schleife über alle articles, bei jedem Durchgang wird das aktuelle Element der variable item zugewiesen.
Z3: Datum und Uhrzeit wird ausgegeben und wird in einem p/small-Tag eingeschlossen zur Formatierung. Zur Formatierung wird die vis-eigene Datumsformatfunktion verwendet. Beschreibung ist im adapter vis zu finden.
Z4: Der Titel des Artikels wird ausgegeben. Zur Formatierung wird der Tag für Überschrift 3 verwendet
Z5: Der Inhalt des Artikels wird ausgegeben und in einem p-Tag eingeschlossen. Hier ist, zumindest bei den beiden Beispielen, HTML-code enthalten, der meist ein Bild, sowie beschreibenden Text mitbringt
Z6: Ein div-Tag, das ausgegeben werden muss, um eine spezielle Formatierung im Feed wieder aufzuheben.
Z7: Ohne Ausgabe. Hier wird die Schleife geschlossen. Alles was zwischen Z2 und Z7 definiert wurde, wird für jeden einzelnen Artikel wiederholt.Ich freue mich über reges testen und Vorschlag von Erweiterungen.
Fehler können hier, aber auch auf github https://github.com/oweitman/ioBroker.rssfeed
gemeldet werden.Wie kann ich im template die Farben verändern?
-
Neue Version v0,0,11
- Das Layout des Konfigurationsdialogs wurde optimiert
- Ein Knopf forceRefresh wurde eingeführt. Damit können alle Feeds sofort abgerufen werden. Die Timer für den einzelnen Feed starten neu. Der Knopf ist im Ordner "info" im Objektbaum zu finden.
-
@sigi234
Die generellen Farben können in den widget-Einstellungen angepasst werden.
Um einzelne Attribute einzufärben gilt das was ich oben schon mal geschrieben habe
https://forum.iobroker.net/post/398001
Um spezielle Attribute innerhalb eines Artikels einzufärben ist Feed individuell und abhängig davon, wie der Inhalt vom Lieferant formatiert wurde. -
Unter Abteilung Tester konnte ich kein Topic anlegen. Bitte dort hin verschieben.
Nachdem ich immer weider lese, wie sich die Leute mit rss-Feeds abmühen,
habe ich einen Adapter dazu geschrieben.
Dieser hat aktuell minimale Fähigkeiten, man kann damit aber
schon annehmbare Ergebnisse erzielen.Verwendete Bausteine
Um die Flexibilität bei der Anzeige der Feeds bieten zu können, erfolgt die Formatierung der Ausgabe
über ein template-system.
Eine Vorlage werde ich hier weiter unten kopieren.
Beschreibung der Formatierung und Syntax finden sich auf den folgenden Seiten
https://ejs.co/ und https://github.com/mde/ejsEinlesen der Feeds.
Dazu verwende ich ein node modul namens feedparser.
Dieses Modul kann verschiedene RSS-Standards (RSS, Atom, and RDF).
Dazu ist er noch dazu in der Lage, die Attribute zu normalisieren, so das es in der Ausgabe egal ist,
wie der jeweilige Standard ein bestimmtes Feld nennt.
https://github.com/danmactough/node-feedparserInstallation und Einrichtung
Schritt 1 - Installation
Der Adapter ist aktuell nur auf github verfügbar.
Name des Repository ist https://github.com/oweitman/iobroker.rssfeedSchritt 2 - Instanz hinzufügen
Der Adapter müsste dann im Abschnitt adapter im iobroker angezeigt werden.
Manchmal kommt es vor, das insbesondere bei Webänderungen (Widgets/Konfigurationsdialog) die Änderungen nicht sichtbar sind, muss evtl. auf der Kommandozeile folgender Befehl ausgeführt werden:
iobroker upload rssfeed
Im rechten Bereich in der Zeile des Adapters kann über den Plus-Knopf eine Instanz hinzugefügt werdenSchritt 3 - Konfiguration
Die Konfiguration ist relativ simpel. Es gibt nur wenige Felder
Refresh: ist die generelle Vorgabe, wie oft in Minuten der Feed neu abgerufen werden soll. Voreinstellung ist 60
Maximale Artikel im Datenpunkt: Hier kann die Gesamtmenge der zu verarbeitenden Daten begrenz werden.Dann je neuen Feed:
Name: Ein eindeutiger Name, darf nicht doppelt vorkommen
Url: Die vollständige Adresse des Feed (mit http:// oder https://)
Refresh: Bei Erfassung kann ein abweichender Wert angegeben werden. Ansonsten wird die generelle Vorgabe genommenNach Neustart und Abruf der Daten ist der Feed als JSON-Datenpunkt im Objektbaum zu finden.
Schritt 4 - vis und widgets
Um die Feeds anzuzeigen gibt es ein widget. Dieses kann über den Suchfilter in vis mittels rssfeed gefunden werden.
Das widget hat folgende Einstellmöglichkeiten
rss_oid Hier wird der JSON-Datenpunkt des gewünschten feeds ausgewählt. Ich habe festgestellt, das der Objektbrowser hier nicht imnmer zufriedenstellend funktioniert, da er die im JSON enthaltenen HTML-Anteile versucht dazustellen.
Alternativ die Datenpunkt ID direkt aus vis kopieren.
template: Hier kann ein template erfasst werden, welches javascript und html gemischt enthalten kann.maxarticles: Hier kann widget individuell die Anzahl der Artikel begrenzt werden.
Alle anderen Einstellungen sind identisch zu den anderen widgets, Die Formatvorgaben gellten generell für alle widgetinhalte
Die widgets rssfeed Meta helper und rssfeed Article helper unterstützen bei der Erstellung eines Templates,
indem dort komfortabel die meta-Informationen und die Attribute eines Artikels angezeigt werden.
Im widget rssfeed Article Helper kann man den Artikel auswählen, dessen Attribute angezeigt werden soll, sowie das Präfix anpassen, so dass es einfacher ist dieses in das Template zu kopieren.Ein weiteres widget hat nichts direkt mir rssfeed zu tun und ist in diesem adapter voraussichtlich temporär zu Gast.
Template anhand von Beispielen
Ein Beispiel, welches ich mit den folgenden RSS Feeds getestet habe:<%= meta.title %> <% articles.forEach(function(item){ %> <p><small><%- vis.formatDate(item.pubdate, "TT.MM.JJJJ SS:mm") %></small></p> <h3><%- item.title %></h3> <p><%- item.description %></p> <div style="clear:both;" /> <% }); %>Das Templatesystem arbeitet mit bestimmten Tags.
Die verwendeten Tags bedeuten das folgenden
<%= Der Inhalt des enthaltenen Ausdrucks/Variable wird escaped ausgegenen.
<%- Der Inhalt des enthaltenen Ausdrucks/Variable wird unescaped ausgegenen.
<% Tag ohne Ausgabe, wird für javascriptanweisungen verwendet
%> ist generell ein schließender Tag um eines der vorherigen abzuschließen
Alles was außerhalb dieser Tags ist, wird genau so dann angezeigt bzw. wenn es HTML ist als HTML interpretiert ausgegeben. (siehe bspw das p-tag,div-tag,small-tagInnerhalb des Templates habt ihr 2 vorgegebene variablen zur Verfügung
meta: Hier sind alle Metainformationen zum Feed enthalten. Die folgenden Inhalte stehen zur Verfügung. Ich denke die Bezeichner sind selbst erklärend. In der Hilfe werde ich diese noch genauer Beschreiben. bzw den Inhalt spezifizieren (manche sind Arrays)
meta.title
meta.description
meta.link
meta.xmlurl
meta.date
meta.pubdate
meta.author
meta.language
meta.image
meta.favicon
meta.copyright
meta.generator
meta.categoriesarticles: Ist ein Array mit einzelnen Elementen (javascript array). Jedes Element hat die folgenden Eigenschaften.
Damit es zum Beispiel passt mache ich hier mal das Prefix item davor. Aber wenn ihr wollt könnt ihr das selbst wählen. Es muss dann nur in der Schleife (forEach) entsprechend benannt werden. Auch hjier sind die Bezeichner erst einmal selbst erklärend. Nicht in jedem Feed sind alle attribute auch gefüllt. Die wichtigsten sind im obigen Template bereits enthalten.item.title
item.description
item.summary
item.link
item.origlink
item.permalink
item.date
item.pubdate
item.author
item.guid
item.comments
item.image
item.categories
item.source
item.enclosures"<%= meta.title %> <% articles.forEach(function(item){ %> <p><small><%- vis.formatDate(item.pubdate, "TT.MM.JJJJ SS:mm") %></small></p> <h3><%- item.title %></h3> <p><%- item.description %></p> <div style="clear:both;" /> <% }); %>Kurze Beschreibung was in den einzelnen Zeilen passiert
Z1: Der Feed-titel wird ausgegeben
Z2: Ohne Ausgabe. Schleife über alle articles, bei jedem Durchgang wird das aktuelle Element der variable item zugewiesen.
Z3: Datum und Uhrzeit wird ausgegeben und wird in einem p/small-Tag eingeschlossen zur Formatierung. Zur Formatierung wird die vis-eigene Datumsformatfunktion verwendet. Beschreibung ist im adapter vis zu finden.
Z4: Der Titel des Artikels wird ausgegeben. Zur Formatierung wird der Tag für Überschrift 3 verwendet
Z5: Der Inhalt des Artikels wird ausgegeben und in einem p-Tag eingeschlossen. Hier ist, zumindest bei den beiden Beispielen, HTML-code enthalten, der meist ein Bild, sowie beschreibenden Text mitbringt
Z6: Ein div-Tag, das ausgegeben werden muss, um eine spezielle Formatierung im Feed wieder aufzuheben.
Z7: Ohne Ausgabe. Hier wird die Schleife geschlossen. Alles was zwischen Z2 und Z7 definiert wurde, wird für jeden einzelnen Artikel wiederholt.Ich freue mich über reges testen und Vorschlag von Erweiterungen.
Fehler können hier, aber auch auf github https://github.com/oweitman/ioBroker.rssfeed
gemeldet werden.Cool wäre noch wenn man die Konfiguration speichern und wieder einspielen kann.
-
hier mal ein Beispiel, wie das mit den Farben funktioniert
<% articles.forEach(function(item){ %> <p><item.pubdate style="color:Orange">Veröffentlichungsdatum: <%- vis.formatDate(item.pubdate, "TT.MM.JJJJ SS:mm")%> Uhr</p> <h3><item.title style="color:Lightgreen"><%- item.title %></h3> <p><small><%- item.description %></small></p> <div style="clear:both;" /> <% }); %> -
hier mal ein Beispiel, wie das mit den Farben funktioniert
<% articles.forEach(function(item){ %> <p><item.pubdate style="color:Orange">Veröffentlichungsdatum: <%- vis.formatDate(item.pubdate, "TT.MM.JJJJ SS:mm")%> Uhr</p> <h3><item.title style="color:Lightgreen"><%- item.title %></h3> <p><small><%- item.description %></small></p> <div style="clear:both;" /> <% }); %>@Oli sagte in Test Adapter rssfeed v0.0.x:
hier mal ein Beispiel, wie das mit den Farben funktioniert
Danke geht, wie bekomme ich das Fragezeichen weg? Sollte ein Ö sein.
