NEWS
Test/Support für Adapter rssfeed und vis-2-widgets-rssfeed
-
Guten Abend zusammen,
ich würde gerne immer nach dem letzten Beitrag eines RSS Feed filtern. Der Plan ist, mich zu benachrichtigen, wenn ein neuer Beitrag vorhanden ist.Inhalt der Benachrichtigung soll dann nach Möglichkeit der Titel des aktuellen Beitrages sein.
LG
-
@thiel_marvin
du könntest ein skript erstellen, das immer bei Änderung des rss-datenpunkt
den titel des letzten Artikels liest und mit dem wert des Titels aus der letzten abfrage vergleicht und dann eine nachricht versendet.
je nach Inhalt des RSS sollte alternativ auch nach einem ID verglichen werden. den liefert aber nicht jeder RSS mit. Nach Datum geht meistens auch nicht, da viele das Artikeldatum entsprechend anpassen. Aber auch das muss RSS-Stream individuell geschaut werden was besser ist. Der nachfolgende Pseudocode hat den Nachteil, das er nur den letzten Titel prüft. Falls mehr wie ein neuer Artikel seit der letzten Abfrage neu ist, wir nur der letzte versendet.
Dafür müsste man noch ein bisschen mehr Code schreiben.Pseudocode
-Wenn Rss-datenpunkt geändert - wenn Titel_aus_aktueller_Abfrage!=Titel_aus_letzter_Abfrage dann - Sende Benachrichtigung - speicherere Titel_aus_aktueller_Abfrage in Titel_aus_letzter_Abfrage
-
@OliverIO hi und guten morgen,
ich möchte auch rss feeds für meinen smart table einbauen und bin gerade auf der Suche was die beste Lösung sein könnte, so wie Du die Daten aufbereitest finde ich schon sehr gut.
Nun meine Frage: Kann ich diese Animation auch mit diesem Adapter realisieren:
https://codepen.io/cassidoo/pen/MyaWzp
Die News werden vertikal gefadet und das finde ich sehr smooth. Das sieht halt auf nen großen Monitor mega aus.Hintergrund: Ich möchte immer nur eine News auf einen FullHD Monitor mit einer Auflösung von 1920 x 1080px anzeigen lassen, sprich den Titel, das Datum und die Beschreibung, also richtig schön groß, dass man sie gemütlich vom Sofa aus lesen kann.
Vielen Dank schon vorab für Deine Antwort.
VG
Sebastian -
Sollte kein Problem sein.
Alles was innerhalb des Tags content-slider ist in das Template rübernehmen
Auch die css Angaben können da mit entsprechenden Tags eingefügt werden.
Die Titel werden dir ja dann als JavaScript Objekt angeliefert, die du dann ebenfalls in die li/ul Liste reinschreibst.Schau dir mal die Hilfe zum Widget an, da sind ein paar Beispiele drin, wie du die Befehle richtig anwendest.
Allerdings wird bei jeder Aktualisierung des rss streams das Widget neu erzeugt und die Abarbeitung beginnt von vorne.
Wenn du ein Neues Template Erstellt hast, Teile es bitte hier, dann füge ich es in die Hilfe ein.
Wenn du Probleme hast, dann auch hier. Bin allerdings die nächsten 2 Wochen im Urlaub und kann nichts am Rechner nachvollziehen. -
@OliverIO guten morgen,
hab es nun anders über das Script als Vorlage hier: https://forum.iobroker.net/topic/6072/gelöst-newsfeed-in-iobroker-vis-darstellen/43 gelöst. Hab es so angepasst, dass man per Script x-viele Feeds integrieren kann und habe moment.js für vernünftige Datumsformatierung verwendet und auch Bilder sind in der Anzeige möglich.
Kommt wirklich nice, mit dem fade effekt von jquery.Dazu habe ich unter Scripts folgendes angepasst und integriert.
Grundscript:
Js:$("#slideshow > div:gt(0)").hide(); setInterval(function() { $('#slideshow > div:first') .fadeOut(1000) .next() .fadeIn(1000) .end() .appendTo('#slideshow'); }, 3000);
Css:
#slideshow { margin: 80px auto; position: relative; width: 240px; height: 240px; padding: 10px; box-shadow: 0 0 20px rgba(0, 0, 0, 0.4); } #slideshow > div { position: absolute; top: 10px; left: 10px; right: 10px; bottom: 10px; }
html:
<div id="slideshow"> <div> feed 1 </div> <div> feed 2 </div> <div> feed 3 </div> </div>
Da ich selber Webentwickler bin, war das nicht wirklich die große Herausforderung.
Vielleicht kannst Du ja was mit den Snippets anfangen.
Ich bin mit dem Ergebnis für V 0.0.1b sehr zufrieden. Kann natürlich noch einiges verbessert und optimiert werden, aber für einen Schnellschuss ist es ok. -
@Sebastian-IO
Hi,danke für deinen Vorschlag. Ich habe die Technik etwas angepasst , so dass es alles ein sich geschlossenes Template ergibt, welches direkt im Widget eingetragen werden kann und sich die Formatierung auch nicht mit anderen widgets beißt. Ein paar deiner Formatierungen habe ich entfernt, so das es möglichst multifunktional für alle anwendbar ist. Besondere Ränder und Abstände kann man dann dennoch individuell hinzufügen. Aber hier ist jetzt der gerade so notwendige css und javascript-Anteil enthalten.
Er ist dann in der widget-Hilfe im nächsten Release mit enthalten.<script> // Konfigurationsbereich Anfang var fadeTime = 1000; //Zeit in Millisekunden zum Ein und Ausblenden eines Artikels var showTime = 4000; //Zeitdauer, wie lange ein Artikel angezeigt werden soll // Konfigurationsbereich Ende </script> <style> #{wname} .slideshow { position: relative; } #{wname} .slideshow > div { position: absolute; display: none; } #{wname} .slideshow > div:nth-child(0n+1) { display: block; } </style> <script> setInterval(function() { $('#{wname} .slideshow > div:first') .fadeOut(fadeTime) .next() .fadeIn(fadeTime) .end() .appendTo('#{wname} .slideshow'); }, showTime); </script> <%= meta.title %> <div class="slideshow"> <% articles.forEach(function(item){ %> <div> <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;" /> </div> <% }); %> </div>
-
Neue Version 0.0.30
- Die Abhängigkeiten zu anderen Bibliotheken wurde aktualisiert
- Die Testkonfiguration für travis und appveyor wurde aktualisiert
- die Hilfe wurde mit Templatebeispielen erweitert.
-
Moin Moin,
Ich versuche ein RSS Feed als Marquee 3 auf einem Wandtablet (Galaxy Tab A T580) mit FullyBrowser zum laufen zu kriegen.
Auf Windows 10 per Chrome Browser läuft es wunderbar, auf dem Fully Kiosk Brower hingegen wird nichts angezeigt. -
kannst du bitte mal schauen welche webview version auf deinem android installiert ist?
evtl habe ich javascript features verwendet, die da noch nicht drin sind.
ggfs. mal die webview aktualisieren.Das müsste bei den Komponenten in google play als
Android System Webview
aufgelistet sein. -
@oliverio Hat sich erledigt. habe den Cache im Browser geleert, und nun funktioniert es Danke trotzdem für die schnelle Antwort.
-
Hallo,
ich habe gerade den Adapter getestet, funktioniert soweit ganz gut.
Leider habe ich bei einigen RSS-Feeds das Problem, das die Reihenfolge in den RSS-Feeds falsch ist. Ich hätte die Reihenfolge gerne nach Datum/Uhrzeit sortiert. Kannst Du da im Adapter eine Funktion vorsehen, oder gibt es evtl. schon was, was ich hier einsetzen kann?LG und Danke für den tollen Adapter,
Matthias -
@smarthome-tricks-de sagte in Test Adapter rssfeed v0.0.x:
Hallo,
ich habe gerade den Adapter getestet, funktioniert soweit ganz gut.
Leider habe ich bei einigen RSS-Feeds das Problem, das die Reihenfolge in den RSS-Feeds falsch ist. Ich hätte die Reihenfolge gerne nach Datum/Uhrzeit sortiert. Kannst Du da im Adapter eine Funktion vorsehen, oder gibt es evtl. schon was, was ich hier einsetzen kann?LG und Danke für den tollen Adapter,
MatthiasHallo,
das widget funktioniert mit einem template-system (ejs), bei dem, ohne das irgend etwas konfiguriert wird,
intern ein standard template vorgegeben wird:Das ist das template, welches auch intern verwendet wird.
<% articles.forEach(function(item){ %> <p><%- item.meta_name || item.meta_title || '' %></p> <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;" /> <% }); %>
https://github.com/oweitman/ioBroker.rssfeed#template-based-on-examples
Falls du die Einträge sortieren, filtern, das Layout ändern, dann kannst du das template individuell anpassen.
In der Readme steht auch, was articles und meta ist, welche an das template als variablen übergeben werden.^In der Widgethilfe, welche über vis am besten anzuschauen ist, stehen auch noch ein paar weitere template-Vorschläge drin
Weiteren Fragen gerne.
du kannst gerne auch mal das widget JSON Template2 aus dem gleichen adapter anschauen.
Damit kann man beliebig viele JSON-Datenpunkte hinzufügen und sich über das selbe template system ein individuelles widget bauen. -
@oliverio Danke, läuft perfekt
-
Hey, hab den Adapter auch seit kurzem am laufen und alles funktioniert wie es soll, danke erstmal für die Arbeit
Ich hätte allerdings einen Erweiterungswunsch: Wäre es machbar eine Möglichkeit einzubauen, auch in die andere Richtung zu filtern?
Soll heißen: bei rss_filter kann ich ja ein Wort angeben was enthalten sein muss im Artikel, Titel, ... damit es angezeigt wird.
Könnte man da auch eine Funktion einbauen, dass ich mit -Wort, nur Artikel anzeige, die NICHT das Wort "Wort" enthalten?Also dass man bestimmte Wörter ausgrenzen kann?
LG
Dicken -
@dicken sagte in Test Adapter rssfeed v0.0.x:
Hey, hab den Adapter auch seit kurzem am laufen und alles funktioniert wie es soll, danke erstmal für die Arbeit
Ich hätte allerdings einen Erweiterungswunsch: Wäre es machbar eine Möglichkeit einzubauen, auch in die andere Richtung zu filtern?
Soll heißen: bei rss_filter kann ich ja ein Wort angeben was enthalten sein muss im Artikel, Titel, ... damit es angezeigt wird.
Könnte man da auch eine Funktion einbauen, dass ich mit -Wort, nur Artikel anzeige, die NICHT das Wort "Wort" enthalten?Also dass man bestimmte Wörter ausgrenzen kann?
LG
Dicken@OliverIO
Sorry für den Doppelpost, aber ist das denkbar? Oder eher nicht? Verstehst du überhaupt was ich meine? Bin nicht der beste im Erklären und Beschreiben -
@dicken sagte in Test Adapter rssfeed v0.0.x:
@dicken sagte in Test Adapter rssfeed v0.0.x:
Hey, hab den Adapter auch seit kurzem am laufen und alles funktioniert wie es soll, danke erstmal für die Arbeit
Ich hätte allerdings einen Erweiterungswunsch: Wäre es machbar eine Möglichkeit einzubauen, auch in die andere Richtung zu filtern?
Soll heißen: bei rss_filter kann ich ja ein Wort angeben was enthalten sein muss im Artikel, Titel, ... damit es angezeigt wird.
Könnte man da auch eine Funktion einbauen, dass ich mit -Wort, nur Artikel anzeige, die NICHT das Wort "Wort" enthalten?Also dass man bestimmte Wörter ausgrenzen kann?
LG
Dicken@OliverIO
Sorry für den Doppelpost, aber ist das denkbar? Oder eher nicht? Verstehst du überhaupt was ich meine? Bin nicht der beste im Erklären und Beschreibenja sorry, hatte noch nicht geantwortet.
war noch mal am überlegen, wie ich das umsetze.
Dafür gibt es mehrere Möglichkeiten.- Das was du vorgeschlagen hast, als erstes Zeichen ein Minus, so das das Wort danach nicht vorkommen darf
- Das Feld auf Regex umstellen, dann könnte man notfalls auch komplexere Ausdrücke verwenden. Die Nicht-Suche wäre aber dann von den Zeichen her nicht so einfach einzugeben, aber grundsätzlich schon möglich
- Ich mach gar nix Da die RSS-Ausgabe auf Basis eines Templates basiert, das man selbst anpassen kann und mit entsprechenden Javascript-Anweisungen alles Filtern/Sortieren/Ausklammern kann wie man möchte. Bei einem Beispiel wäre ich natürlich behilflich
-
@oliverio sagte in Test Adapter rssfeed v0.0.x:
@dicken sagte in Test Adapter rssfeed v0.0.x:
@dicken sagte in Test Adapter rssfeed v0.0.x:
Hey, hab den Adapter auch seit kurzem am laufen und alles funktioniert wie es soll, danke erstmal für die Arbeit
Ich hätte allerdings einen Erweiterungswunsch: Wäre es machbar eine Möglichkeit einzubauen, auch in die andere Richtung zu filtern?
Soll heißen: bei rss_filter kann ich ja ein Wort angeben was enthalten sein muss im Artikel, Titel, ... damit es angezeigt wird.
Könnte man da auch eine Funktion einbauen, dass ich mit -Wort, nur Artikel anzeige, die NICHT das Wort "Wort" enthalten?Also dass man bestimmte Wörter ausgrenzen kann?
LG
Dicken@OliverIO
Sorry für den Doppelpost, aber ist das denkbar? Oder eher nicht? Verstehst du überhaupt was ich meine? Bin nicht der beste im Erklären und Beschreibenja sorry, hatte noch nicht geantwortet.
war noch mal am überlegen, wie ich das umsetze.
Dafür gibt es mehrere Möglichkeiten.- Das was du vorgeschlagen hast, als erstes Zeichen ein Minus, so das das Wort danach nicht vorkommen darf
- Das Feld auf Regex umstellen, dann könnte man notfalls auch komplexere Ausdrücke verwenden. Die Nicht-Suche wäre aber dann von den Zeichen her nicht so einfach einzugeben, aber grundsätzlich schon möglich
- Ich mach gar nix Da die RSS-Ausgabe auf Basis eines Templates basiert, das man selbst anpassen kann und mit entsprechenden Javascript-Anweisungen alles Filtern/Sortieren/Ausklammern kann wie man möchte. Bei einem Beispiel wäre ich natürlich behilflich
Kein Problem, ich will ja was von dir und nicht umgekehrt
Also das Minus war ja jetzt nicht in Stein gemeisselt, sollte lediglich meine Erklärung vereinfachen.
Ich kenn mich mit dem Aufbau eines Adapters nicht aus, aber könnte man nicht auch statt dem Feld "rss-filter" einfach zwei Felder einbauen? "Rss-Filter+" (für Wörter die enthalten sein sollen) und "Rss-Filter-" (Für Wöter die nicht enthalten sein sollen)?Die dritte Möglichkeit wär vermutlich für dich am einfachsten, aber für alle anderen nicht
Aber wenn du dich dazu entscheidest, würd ich mich natürlich über ein Beispiel freuen -
@dicken
ich suche immer nach multifunktionalen lösungen und nicht solche, die genau ein konkretes Problem lösen. Dadurch werden die widgets immer komplexer und irgendwann nicht mehr Pflegbar oder man macht diese durch Änderungen nicht mehr rückwärtskompatibel -
@oliverio sagte in Test Adapter rssfeed v0.0.x:
@dicken
ich suche immer nach multifunktionalen lösungen und nicht solche, die genau ein konkretes Problem lösen. Dadurch werden die widgets immer komplexer und irgendwann nicht mehr Pflegbar oder man macht diese durch Änderungen nicht mehr rückwärtskompatibelOk das seh ich natürlich ein, wie gesagt, hab keinerlei Ahnung welcher Aufwand dahinter steckt.
Mach dir in Ruhe gedanken und berichte einfach wofür du dich entschieden hast Wenn es zuviel Aufwand ist, hab ich da natürlich auch vollstes Verständnis für -
Auf die Gefahr hin Dreist zu wirken
Ich hätte da noch ein kleines anliegen, bzw. vllt gibts da auch ein einfaches Workaround ohne dein zutun @OliverIOIch wollte mir mit dem Red Number Widget anzeigen lassen, wieviel ungelesene neue RSS-Feed beiträge es gibt.
Habe mir ein Script geschrieben, welches auf Änderungen des RSS-Feed-Datenpunktes einen eigens erstellen Datenpunkt immer um 1 erhöht.
Wenn ich dann über die Navigation auf meine RSS View gehe, wird mein Datenpunkt wieder auf 0 gesetzt.
Das funktioniert auch wunderbar, das Problem is nur dass der Datenpunkt des RSSFeeds aus deinem Adapter auch geändert wird, wenn es garkeinen neuen Beitrag gibt. Ich glaub die Zeit der Abfrage wird da auch reingeschrieben.
Ergo erhöht sich mein Datenpunkt jedesmal um 1 wenn der RSS-Feed abgefragt wird.Hättest du da nen schnellen Lösungsansatz für, oder hat vllt jemand anderes sich sowas schonmal gebaut?
Würd mich über eine Antwort freuen
LG
Dicken