NEWS
RSS Parser
-
@pix danke, für eine Antwort.
Wenn ich Link Text aufrufe, bekomme ich aber noch die Daten angezeigt.
/* VIS VBB Newsfeed {1} Bringt einen RSS-Feed als Tabelle in ioBroker setzt die Library xml2js voraus (in Javascript Einstellungen zufügen) {1} {1} erstellt: 11.05.2017 von Torsten (auf Basis von Bluefox Code und Pix) */ createState('RSS-Feed.VBB.Tabelle', {write: true, read: true, name: 'RSS Feed VBB Tabelle', type: 'string', desc: 'VBB RSS Feed als HTML Tabelle'}); createState('RSS-Feed.Optin', true, {write: true, read: true, name: 'Optin RSS Feeds abrufen', type: 'boolean', desc: 'Sollen RSS-Feeds abgerufen werden?'}); var link = 'https://www.vbb.de/broken_lifts.xml'; //var vbb = 'vbb-name'; var idOptin = 'RSS-Feed.Optin', optin_beschreibung = 'RSS Feed', idFeedTabelle = 'RSS-Feed.VBB.Tabelle'; function RSS_einlesen () { // alle 5 Minuten var optin = getState(idOptin).val; var parseString = require('xml2js').parseString; var request = require('request'); if (optin) request(link, function (error, response, body) { if (!error && response.statusCode == 200) { parseString(body, { explicitArray: false, mergeAttrs: true }, function (err, result) { //log(JSON.stringify(result, null, 2)); if (err) { log("Fehler: " + err); } else { /* // Titel links, Inhalt rechts var tabelle ='<table class="rss_feed"><thead><tr><th>Titel</th><th>Beschreibung</th></tr></thead><tbody>'; for(var i = 0; i <result.rss.channel.item.length; i++) { tabelle += '<tr><td>' + result.rss.channel.item[i].title + '</td>'</br>'<td>' + result.rss.channel.item[i].description + '</td></tr>'; } */ // Titel oben, INhalt darunter (wie in der Zeitung) var tabelle ='<table class="rss_feed"><thead><tr><th>BVG Aufzugsstörung</p></th></tr></thead><tbody>'; for(var i = 0; i <result.rss.channel.item.length; i++) { tabelle += '<tr><td>' + result.rss.channel.item[i].title + '</td></tr><tr><td>' + result.rss.channel.item[i].description + '</td></tr><tr><td>' + result.rss.channel.item[i].vbb/-name + '</td></tr>'; } tabelle += '</tbody></table>'; setState(idFeedTabelle, tabelle); } }); } else { log(error); } }); // Ende request log('RSS-Feed ' + link + ' eingelesen'); } schedule("*/10 * * * *", RSS_einlesen); RSS_einlesen(); // Opt In setzen - Logging on( { id: idOptin, change: 'ne' }, function (obj) { if (obj.newState.val === false || obj.newState.val =='false') { log('Opt in Variable <' + optin_beschreibung + ' Push> auf <aus/' + obj.newState.val + '> gesetzt ', 'info'); } else if (obj.newState.val === true || obj.newState.val =='true') { log('Opt in Variable <' + optin_beschreibung + ' Push> auf <ein/' + obj.newState.val + '> gesetzt ', 'info'); } });
-
Das sieht ja schon wieder so Kacke aus
-
Ich schieße gleich mal nach:
Der Link hat sich nur geändert: https://www.vbb.de/broken_lifts.xmlIch checke gerade das Skript ....
-
@pix danke dir.
Bin aber jetzt erstmal bis heute Abend unterwegs.
-
So, habe mal das Skript etwas angepasst:
Es gab noch ein Problem, ich musst edie unerlaubte XML Element Namen ersetzen. Einige hatten einen Bindestrich, dann streikt der Parser.Als Widget einfach ein HTML Widget nehmen und den Datenpunkt der TAbelle als Binding einfügen {javascript.2.RSS-Feed.VBB.Tabelle}
Gruß
Pix -
@pix du bist einfach super.
Vielen, vielen Dankt und ich habe mich dumm und dämlich gesucht, woran es gelegen hat.
-
Hallo RSS-Freunde,
würde auch gerne den RSS-Feed der Tagesschau z. B. über das Script von @pix einbinden, aber scheitere. Folgendermaßen bin ich vorgegangen:
- Skript von @pix 1:1 kopiert
- Link der Tagesschau entsprechend in Zeile 26 des Scrips ersetzt: http://www.tagesschau.de/xml/rss2
- Script gestartet
- Widget ebenfalls in meine View kopiert
- allerdings erscheint im "Live"Modus der View in der HTML-Tabelle bloß "undefined"
Habt ihr eine Idee, was ich falsch mache ggf. noch bedenken muss, wenn ich das Script / Widget von oben einfach in meine View kopiere ?
Danke euch!
-
@Bostil siehe Post von Pix.
Zitat:
"Als Widget einfach ein HTML Widget nehmen und den Datenpunkt der TAbelle als Binding einfügen {javascript.2.RSS-Feed.VBB.Tabelle}" -
Danke dir @senger1985 erstmal. Ich vermute, ich übersehe bloß eine "Kleinigkeit". Ich werde mal konkreter:
- Das ist nun mein Script (zu 100% das von @pix, bloß den RSS-Feed mal angepasst) und unter common > RSS-Feed abgespeichert und gestartet
- weiterhin habe ich sein Widget einfach kopiert, aber den Pfad auf meinen (siehe unterhalb) angepasst:
Objekte:
Widget im View:
- den Javascript Adapter habe ich um "request" + "xml2js" ergänzt und den Adapter neu gestartet
Erhalte bereits im Script folgende Warnung:
-
@Bostil habe gerade selbst etwas getestet und umgeschrieben, aber leider auch keine Lösung gefunden.
-
@Bostil Frohes Neues! Du hast immer noch die VBB spezifischen Abfragen im Skript. Das Skript fragt die computerbase-Seite ab und versucht dann die gesperrten Rolltreppen zu finden. Kann ja nicht gehen.
Schau mal hier, ob du einen besseren Ansatz findest:
Gruß
Pix -
Hallo @pix vielen Dank für deine Hilfe.
Habe jetzt mal deinen Beitrag vom 05.11.2015 hier rausgekramt und erstmal alles (Script, CSS, Widget) eins zu eins übernommen, leider schlägt es noch fehl. Hast du noch im Kopf, welche Dinge im Script noch korrigiert werden mussten aufgrund zwischenzeitlichen Anpassungen ?
Dankeschön.
-
Hallo RRS Community
spiele gerade mit dem Scripts um die aktuellen Verkehrsmeldungen aus meiner Gegen anzuzeigen. Im original "https://www.vbb.de/broken_lifts.xml" läufts super aber wenn ich es mit "https://www.oeamtc.at/feeds/verkehr/a9.xml" versuche bekomme ich keine Daten in die Tabelle. Hatte wer von euch das gleiche Problem? DANKE -
Gefunden und gelöst. Wenn da nur ein item zurückkommt wird kein Array instanziert. Dann einfach ohne Index benutzen und schon gehts.
-
Hallo @pix
du hast mir ja 2019 super, bei meinem Script, für die BVG/VBB-Aufzugsstörungen geholfen und das Script lief auch jahrelang super.
Nur haben die Betreiber jetzt die XML-Datei umgeschrieben und einfach eine "Wall-of-Text" hinterlegt.
Kann man daraus auch, irgendwie an die Daten, zum parsen kommen?
Hier nochmal die Seite: http://brokenlifts.org/rss
Danke und frohe Ostern