Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Link von Webseite heraus parsen. Vertretungsplan Schule

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] Link von Webseite heraus parsen. Vertretungsplan Schule

    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      Creator last edited by

      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?

      1 Reply Last reply Reply Quote 0
      • C
        Creator last edited by

        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?

        1 Reply Last reply Reply Quote 0
        • Jey Cee
          Jey Cee Developer last edited by

          Npm module kann man auch installieren in dem man in der JavaScript Adapter Konfiguration den Namen des Moduls einträgt.

          Gesendet von Unterwegs

          1 Reply Last reply Reply Quote 0
          • C
            Creator last edited by

            > 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.

            1 Reply Last reply Reply Quote 0
            • Jey Cee
              Jey Cee Developer last edited by

              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

              1 Reply Last reply Reply Quote 0
              • BuZZy
                BuZZy last edited by

                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ß

                1 Reply Last reply Reply Quote 0
                • C
                  Creator last edited by

                  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. 🙂

                  1 Reply Last reply Reply Quote 0
                  • C
                    Creator last edited by

                    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.

                    1 Reply Last reply Reply Quote 0
                    • C
                      Creator last edited by

                      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 🙂

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      838
                      Online

                      31.7k
                      Users

                      79.8k
                      Topics

                      1.3m
                      Posts

                      4
                      9
                      1936
                      Loading More Posts
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes
                      Reply
                      • Reply as topic
                      Log in to reply
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      The ioBroker Community 2014-2023
                      logo