NEWS
Test/Support für Adapter rssfeed und vis-2-widgets-rssfeed
-
@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 -
@dicken sagte in Test Adapter rssfeed v0.0.x:
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
DickenHm muss mal schauen ob ich das prüfe ob sich der Dateninhalt seit dem letzten Mal geändert hat bevor ich den datenpunkt neu schreibe.
Allerdings ist mir damals aufgefallen, das manche Provider dennoch irgendetwas ändern auch wenn kein neuer Artikel dazu kam. Daher, selbst wenn ich es vergleiche wird es nicht bei jedem rss so funktionieren.
Um welchen rss handelt es sich? Dann kann ich mal schauen.Man könnte in das rss Template auch das Schreiben des datenpunkts mit der Anzahl der Artikel seit dem letzten Mal lesen schreiben.
Du müsstest in deinem Skript dann nur ein datenpunkt mit einem Datum des letzten Lesens beschreiben.
Ich kann morgen mal ein Beispiel dafür bereitstellen. -
@oliverio sagte in Test Adapter rssfeed v0.0.x:
Um welchen rss handelt es sich? Dann kann ich mal schauen.
Ist mir jetzt bei mehreren Aufgefallen, der Aufbau im Datenpunkt scheint überall gleich.
Beispiel: https://www.movie-infos.net/cms/index.php/NewsFeed/pubdate":"2021-03-23T07:38:12.000Z"
beim neusten Beitrag wird immer mit aktualisiert im Datenpunkt (also ändert sich, auch wenn der Beitrag kein neuer ist).
-
@dicken sagte in Test Adapter rssfeed v0.0.x:
@oliverio sagte in Test Adapter rssfeed v0.0.x:
Um welchen rss handelt es sich? Dann kann ich mal schauen.
Ist mir jetzt bei mehreren Aufgefallen, der Aufbau im Datenpunkt scheint überall gleich.
Beispiel: https://www.movie-infos.net/cms/index.php/NewsFeed/pubdate":"2021-03-23T07:38:12.000Z"
beim neusten Beitrag wird immer mit aktualisiert im Datenpunkt (also ändert sich, auch wenn der Beitrag kein neuer ist).
probiere mal folgendes Skript
Die beiden Datenpunkte am Anfang des Skripts musst du selbst manuell erstellen. Beide sind vom typ numerisch.
In den Datenpunkt lastread schreibst du dann den Zeitpunkt wann du gelesen hast als Timestamp mitnew Date().toTime()
Einen Schwachpunkt gibt es noch.
Wenn du längers den RSS nicht liest, dann verändert sich die Zahl maxread auch nicht mehr, da die Provider ja meist nur eine gewisse Anzahl von Artikel über RSS bereitstellenvar rssFeedDP = "rssfeed.0.tagesschau"; var lastreadDP ="0_userdata.0.lastread"; var unreadDP ="0_userdata.0.unread"; var articles,maxdate,unread; on(rssFeedDP, function (obj) { unread=0; maxdate = getState(lastreadDP).val; try { var rssObj = JSON.parse(obj.state.val); articles = rssObj.articles; } catch { return; } articles.forEach(function(item){ if (maxdate<new Date(item.pubdate).getTime()) unread=unread+1; }); setState(unreadDP,unread); });
-
Hey vielen Dank
@oliverio sagte in Test Adapter rssfeed v0.0.x:
In den Datenpunkt lastread schreibst du dann den Zeitpunkt wann du gelesen hast als Timestamp mit
new Date().toTime()Wie mach ich das denn?
Kenn mich da nich so aus, bis jetzt nur ein bisschen mit Blockly gespielt immer.
-
@dicken sagte in Test Adapter rssfeed v0.0.x:
Wenn ich dann über die Navigation auf meine RSS View gehe, wird mein Datenpunkt wieder auf 0 gesetzt
Zeig mal den Code, wo du das umgesetzt hast
Mit Blockly kenn ich mich gar nicht aus. -
@oliverio sagte in Test Adapter rssfeed v0.0.x:
@dicken sagte in Test Adapter rssfeed v0.0.x:
Wenn ich dann über die Navigation auf meine RSS View gehe, wird mein Datenpunkt wieder auf 0 gesetzt
Zeig mal den Code, wo du das umgesetzt hast
Mit Blockly kenn ich mich gar nicht aus.Ne, ich wollte damit nur sagen dass ich normalerweise bis jetzt nur mit Blockly gearbeitet habe
Bin grad auf der Arbeit, aber ich habe deinen Code 1:1 in ein JS Script gepackt.var rssFeedDP = "rssfeed.0.tagesschau"; var lastreadDP ="0_userdata.0.lastread"; var unreadDP ="0_userdata.0.unread"; var articles,maxdate,unread; on(rssFeedDP, function (obj) { unread=0; maxdate = getState(lastreadDP).val; try { var rssObj = JSON.parse(obj.state.val); articles = rssObj.articles; } catch { return; } articles.forEach(function(item){ if (maxdate<new Date(item.pubdate).getTime()) unread=unread+1; }); setState(unreadDP,unread); });
Und die Datenpunkte als nummerisch angelegt.
Ich wollte nur wissen ob ich noch was zusätzlich machen muss, weil ich nicht verstanden hab, was du mit diesem Schritt meinst, bzw. was ich da machen soll:@oliverio sagte in Test Adapter rssfeed v0.0.x:
In den Datenpunkt lastread schreibst du dann den Zeitpunkt wann du gelesen hast als Timestamp mit
new Date().toTime() -
@dicken sagte in Test Adapter rssfeed v0.0.x:
Wenn ich dann über die Navigation auf meine RSS View gehe, wird mein Datenpunkt wieder auf 0 gesetzt
Anstatt beim lesen einen datenpunkt auf 0 zu stellen musst du den Zeitpunkt wann du gelesen hast in Millisekunden in den datenpunkt schreiben.
-
@oliverio sagte in Test Adapter rssfeed v0.0.x:
@dicken sagte in Test Adapter rssfeed v0.0.x:
Wenn ich dann über die Navigation auf meine RSS View gehe, wird mein Datenpunkt wieder auf 0 gesetzt
Anstatt beim lesen einen datenpunkt auf 0 zu stellen musst du den Zeitpunkt wann du gelesen hast in Millisekunden in den datenpunkt schreiben.
Ah also in den Buttoneinstellungen in der View muss das dann rein, werde ich nachher testen und berichten
-
@dicken sagte in Test Adapter rssfeed v0.0.x:
@oliverio sagte in Test Adapter rssfeed v0.0.x:
@dicken sagte in Test Adapter rssfeed v0.0.x:
Wenn ich dann über die Navigation auf meine RSS View gehe, wird mein Datenpunkt wieder auf 0 gesetzt
Anstatt beim lesen einen datenpunkt auf 0 zu stellen musst du den Zeitpunkt wann du gelesen hast in Millisekunden in den datenpunkt schreiben.
Ah also in den Buttoneinstellungen in der View muss das dann rein, werde ich nachher testen und berichten
Probier mal. In vis sind manche Dinge wieder etwas anders wie in blockly oder Skript
-
@oliverio sagte in Test Adapter rssfeed v0.0.x:
@dicken sagte in Test Adapter rssfeed v0.0.x:
@oliverio sagte in Test Adapter rssfeed v0.0.x:
@dicken sagte in Test Adapter rssfeed v0.0.x:
Wenn ich dann über die Navigation auf meine RSS View gehe, wird mein Datenpunkt wieder auf 0 gesetzt
Anstatt beim lesen einen datenpunkt auf 0 zu stellen musst du den Zeitpunkt wann du gelesen hast in Millisekunden in den datenpunkt schreiben.
Ah also in den Buttoneinstellungen in der View muss das dann rein, werde ich nachher testen und berichten
Probier mal. In vis sind manche Dinge wieder etwas anders wie in blockly oder Skript
Funktioniert leider nicht, wenn ich beim Button in der VIS wo ich den Wert übergebe "new Date().toTime()" eintrage, schreibt der auch 1:1 "new Date().toTime()" in den Datenpunkt lastread.
-
@dicken
Welches Widget verwendest du dafür genau? -
@oliverio sagte in Test Adapter rssfeed v0.0.x:
@dicken
Welches Widget verwendest du dafür genau?Den hier:
-
@dicken
Bitte einen Export davon machen -
@oliverio sagte in Test Adapter rssfeed v0.0.x:
@dicken
Bitte einen Export davon machen[{"tpl":"i-vis-universal","data":{"g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"iUniversalWidgetType":"Navigation","iValueType":"boolean","iValueComparison":"equal","iStateResponseTime":"0","iStateResetValueTime":"0","iNavWait":"99","iPopUpBackground":"#666666","iPopUpPreventClickOutside":"","iPopUpShowTitle":"true","iPopUpTitle":"","iPopUpTitleColor":"#ffffff","iPopUpCloseBtnColor":"#dc2e2e","iPopUpWidth":"800px","iPopUpHeight":"500px","iPopUpPosition":"center","iPopUpCornerRadiusUL":"12","iPopUpCornerRadiusUR":"0","iPopUpCornerRadiusLR":"12","iPopUpCornerRadiusLL":"0","iPopUpShadowXOffset":"2","iPopUpShadowYOffset":"2","iPopUpShadowBlur":"2","iPopUpShadowSpread":"1","iPopUpShadowColor":"#111111","iButtonCol":"#537EA6","iButtonActive":"#3e5a74","iButtonColHover":"","iOpacityBack":"1","iCornerRadiusUL":"0","iCornerRadiusUR":"0","iCornerRadiusLR":"0","iCornerRadiusLL":"0","iContentFlexDirection":"vertical","iContentVertAlign":"iSpace-between","iContentOrder":"orderImgText","iOpacityCtn":"1","iTextColor":"#ffffff","iTextSize":"16","iTextAlign":"iCenter","iTextSpaceTop":"0","iTextSpaceBottom":"0","iTextSpaceLeft":"0","iTextSpaceRight":"0","iIconSize":"70","iImgAlign":"iCenter","iImgSpaceTop":"-5","iImgSpaceBottom":"-10","iImgSpaceLeft":"0","iImgSpaceRight":"0","iImgRotation":"0","iImgBlinkFalse":"0","iImgBlinkTrue":"0","iImgColorFalse":"","iImgColorTrue":"","iShadowXOffset":"0","iShadowYOffset":"0","iShadowBlur":"0","iShadowSpread":"0","iShadowColor":"#111111","iShadowColorActive":"#111111","iShadowColorHover":"","iShadowInnerXOffset":"0","iShadowInnerYOffset":"0","iShadowInnerBlur":"0","iShadowInnerSpread":"0","iShadowInnerColor":"#111111","iShadowInnerColorActive":"#111111","iShadowInnerColorHover":"","iBorderSize":"0","iBorderStyle":"none","iBorderColor":"#ffffff","iBorderColorActive":"#ffffff","iBorderColorHover":"","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"nav_view":"002_predb","visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","views":["002_predb"],"iImageFalse":"/icons-mfd-svg/scene_scene.svg","iImageTrue":"/icons-mfd-svg/scene_scene.svg","iTextFalse":"RSS","iTextTrue":"RSS","iImgColorInvertFalse":true,"iImgColorInvertTrue":true,"value":"new Date().toTime() ","oid":"0_userdata.0.rss.movieinfos_lastread"},"style":{"left":"152px","top":"684px","width":"110px","height":"87px"},"widgetSet":"vis-inventwo"}]
-
@dicken sagte in Test Adapter rssfeed v0.0.x:
@oliverio sagte in Test Adapter rssfeed v0.0.x:
@dicken
Bitte einen Export davon machen[{"tpl":"i-vis-universal","data":{"g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"iUniversalWidgetType":"Navigation","iValueType":"boolean","iValueComparison":"equal","iStateResponseTime":"0","iStateResetValueTime":"0","iNavWait":"99","iPopUpBackground":"#666666","iPopUpPreventClickOutside":"","iPopUpShowTitle":"true","iPopUpTitle":"","iPopUpTitleColor":"#ffffff","iPopUpCloseBtnColor":"#dc2e2e","iPopUpWidth":"800px","iPopUpHeight":"500px","iPopUpPosition":"center","iPopUpCornerRadiusUL":"12","iPopUpCornerRadiusUR":"0","iPopUpCornerRadiusLR":"12","iPopUpCornerRadiusLL":"0","iPopUpShadowXOffset":"2","iPopUpShadowYOffset":"2","iPopUpShadowBlur":"2","iPopUpShadowSpread":"1","iPopUpShadowColor":"#111111","iButtonCol":"#537EA6","iButtonActive":"#3e5a74","iButtonColHover":"","iOpacityBack":"1","iCornerRadiusUL":"0","iCornerRadiusUR":"0","iCornerRadiusLR":"0","iCornerRadiusLL":"0","iContentFlexDirection":"vertical","iContentVertAlign":"iSpace-between","iContentOrder":"orderImgText","iOpacityCtn":"1","iTextColor":"#ffffff","iTextSize":"16","iTextAlign":"iCenter","iTextSpaceTop":"0","iTextSpaceBottom":"0","iTextSpaceLeft":"0","iTextSpaceRight":"0","iIconSize":"70","iImgAlign":"iCenter","iImgSpaceTop":"-5","iImgSpaceBottom":"-10","iImgSpaceLeft":"0","iImgSpaceRight":"0","iImgRotation":"0","iImgBlinkFalse":"0","iImgBlinkTrue":"0","iImgColorFalse":"","iImgColorTrue":"","iShadowXOffset":"0","iShadowYOffset":"0","iShadowBlur":"0","iShadowSpread":"0","iShadowColor":"#111111","iShadowColorActive":"#111111","iShadowColorHover":"","iShadowInnerXOffset":"0","iShadowInnerYOffset":"0","iShadowInnerBlur":"0","iShadowInnerSpread":"0","iShadowInnerColor":"#111111","iShadowInnerColorActive":"#111111","iShadowInnerColorHover":"","iBorderSize":"0","iBorderStyle":"none","iBorderColor":"#ffffff","iBorderColorActive":"#ffffff","iBorderColorHover":"","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"nav_view":"002_predb","visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","views":["002_predb"],"iImageFalse":"/icons-mfd-svg/scene_scene.svg","iImageTrue":"/icons-mfd-svg/scene_scene.svg","iTextFalse":"RSS","iTextTrue":"RSS","iImgColorInvertFalse":true,"iImgColorInvertTrue":true,"value":"new Date().toTime() ","oid":"0_userdata.0.rss.movieinfos_lastread"},"style":{"left":"152px","top":"684px","width":"110px","height":"87px"},"widgetSet":"vis-inventwo"}]
Bei Wert muss du so etwas dann eintragen.
Den Datenpunktnamen noch entsprechend anpassen. Das a: ohne leerzeichen danach muss so bleiben
allerdings dient dieser nur als Dummy, so das man im 2.Argument den Zeitwert ermitteln kann. Das erfordert leider die Notation von vis.{a:0_userdata.0.lastread;new Date().getTime()}
-
Hmm?? Sorry ich versteh es leider nicht
Was trag ich jetzt bei Object-ID im Widget und was bei Wert im Widget ein.habe das jetzt bei Wert eingefügt:
{a:0_userdata.0.rss.movieinfos_lastread;new Date().getTime()}
Aber das bringt keine Veränderung im Datenpunkt bei klicken. Jetzt schreibt er garnichts neues mehr in den Datenpunkt.