NEWS
[gelöst] Link von Webseite heraus parsen. Vertretungsplan Schule
-
Hallo zusammen,
die Schule meine Kindes bietet die Information an, ob was ausfällt und welche Unterrichtsstunde wie vertreten wird.
Das schreit quasi danach im Vis dargestellt zu werden. :mrgreen:
Leider ist das ein PDF Dokument und der Link dahin verändert sich bei jeder Aktualisierung.
Zum Glück steht dieser aber auf der selben Stelle auf deren Webseite.
Ich habe zwei Fragen weil mein Erfahrungen mit NodeJs überschaubar sind.
Damit ich das PDF Laden kann brauch ich die URL in einem JS Objekt damit Vis da drauf zugreifen kann.
Daher die erste Frage:
Wie bzw. mit was sollte ich die Webseite nach dem Link parsen? Habe was gelesen von htmlparser2 aber eventuell gibt es ja auch noch andere vorhandene Boardmittel.
Soweit bin ich bereits:
var request = require('request'); var url = 'http://wordpress.nibis.de/rsdelme/vertretungsplan-holbeinstrasse/'; function getLink() { request(url, function(err, stat, body) { if(err) log('Error: ' + err, error); log(body); }); } getLink();
Die zweite Frage betrifft eher VIS, aber weil es dazu gehört
Die PDF Datei würde ich super gerne in einem Dialog darstellen.
Quasi Button welcher ein Dialog öffnet wo dann sofort das PDF dargestellt wird.
Dazu jemand eine Idee?
-
Ich habe jetzt noch mal ein wenig experimentiert.
Leider komme ich nicht weiter.
Gefunden habe ich cheerio basiert auf htmlparser2.
Allerdings kann ich das in iobroker Javascript nicht nutzen.
var request = require('request'); var cheerio = require('cheerio'); var url = 'http://wordpress.nibis.de/rsdelme/vertretungsplan-holbeinstrasse/'; function Test() { request(url, function(err, stat, body) { if(err) log('Error: ' + err, error); $ = cheerio.load(body); log($('#post-3317').html()); }); } // Start bei Skriptstart Test();
Führt aber zu einem :
javascript.0 script.js.Vertretung: Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/node_modules/cheerio
Ich habe das Installiert in /opt/iobroker mit "npm install cheerio" sowie "npm install htmlparser2"
Ich habe da wohl noch das eine oder andere Verständnis Problem. Kann mir jemand bitte auf die Sprünge helfen?
-
Npm module kann man auch installieren in dem man in der JavaScript Adapter Konfiguration den Namen des Moduls einträgt.
Gesendet von Unterwegs
-
> Npm module kann man auch installieren in dem man in der JavaScript Adapter Konfiguration den Namen des Moduls einträgt.
Ich glaube das muss man wohl genau so machen. Klappt super. Danke!var request = require('request'); var cheerio = require('cheerio'); var url = 'http://wordpress.nibis.de/rsdelme/vertretungsplan-holbeinstrasse/'; function Test() { request(url, function(err, stat, body) { if(err) log('Error: ' + err, error); $ = cheerio.load(body); log($('#post-3317 a').attr('href')); }); } // Start bei Skriptstart Test();
Jetzt muss ich nur noch raus finden, wie ich die Datei in VIS darstellen könnte.
-
So auf die schnelle hätte ich vorgeschlagen das PDF in ein Bild umwandeln. Dazu gibt es das Modul pdf2image.
Möglicherweise geht es auch mit phantomjs das als Adapter für iobroker verfügbar ist.
Gesendet von Unterwegs
-
Wenn du den Link von der Seite geholt hast kannst du im VIS mit dem iFramewidget das PDF darstellen.
Als Quelle für das iFramewidget gibst du ein:
http://docs.google.com/gview?url=http://wordpress.nibis.de/rsdelme/files/2015/08/Vertretungsplan-12.09.2017-S-aktuell1.pdf&embedded=true
Achte dabei auf den Teil in der Mitte.. Da musst du die URL zu dem Vertretungsplan einfügen (ich habe ihn jetzt schon als Beispiel eingefügt)..
Gruß
-
http://docs.google.com/gview?url=http://wordpress.nibis.de/rsdelme/files/2015/08/Vertretungsplan-12.09.2017-S-aktuell1.pdf&embedded=true
Genau so was hatte ich gesucht. Super Danke.
So muss man das PDF nicht runterladen auf dem Tab.
Sehr sehr Nice.
-
Hm ich hänge doch noch an einer Stelle im VIS.
Wie kann ich denn im iFrame Widget eine Objekt ID nutzen? Ich kann hier nur den Link selber hinterlegen.
Der komplette Link steht in einem Objekt.
-
Konnte es lösen, das Zauberwort heißt hier "Bindings"
https://github.com/ioBroker/ioBroker.vis
Als Quelle bei iFrame Widget habe ich jetzt folgendes hinterlegt.
{javascript.0.Status.agency.link}
Und das funktioniert wie gewollt