Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Adapter für Webseitenüberwachung

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Adapter für Webseitenüberwachung

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      Aiouh @liv-in-sky last edited by

      @liv-in-sky Wow, Vielen Dank. Ich lass das mal tuckern und bin gespannt 👍

      liv-in-sky 1 Reply Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky @Aiouh last edited by liv-in-sky

        @aiouh

        heute gab es ein neues angebot

        habe das script so verändert, das eine nachricht auf alexa kommt, wenn neues angebot da ist und auch, wenn ein angebot verschwindet - ich hoffe, dass script macht alles richtig - werden wir dann sehen, wenn sich die angebote ändern bzw gelöscht bzw dazukommen

        • du musst das mit dem cheerio - wie oben erklärt" machen
        • du brauchst 2 datenpunkte, die du im script oben einträgst
        • man kann auch eine benachrichtigung für telegram, whatsapp,email oder sowas dazufügn
        • es ist jetzt ein schedule drin - dann läuft es automatisch

        //LINK FORUM
        //https://forum.iobroker.net/post/672195
        //@liv-in-sky 1.9.21
        
        const cheerio = require('cheerio');
        
        
        
        //----HIER MUSS SETTING ANGEPASST WERDEN----------------------------------------------------------------------------------------------------
        
         let mySavedDataDP="0_userdata.0.CONTROL-OWN.AAATEST.ImmoScoutAngebote";  //dp für die existierenden angebote
         let myAlarmDP='alexa2.0.Echo-Devices.G0916D10016202R7.Commands.speak';  // alexadp oder irgend ein datenpunkt vom typ : zeichenkette/string
        
        //----AB HIER NICHTS ÄNDERN-----------------------------------------------------------------------------------------------------------------
        
        
         if(getState(mySavedDataDP).val==null || getState(mySavedDataDP).val==undefined || getState(mySavedDataDP).val=="" ) setState(mySavedDataDP,[].toString())
        
        const request = require('request');
        
        const equalsIgnoreOrder = (a, b) => {
         if (a.length !== b.length) return false;
         const uniqueValues = new Set([...a, ...b]);
         for (const v of uniqueValues) {
           const aCount = a.filter(e => e === v).length;
           const bCount = b.filter(e => e === v).length;
           if (aCount !== bCount) return false;
         }
         return true;
        }
        
        let mySchedule1="  9,19,59 9-23 * * * "; // 
        
         schedule(mySchedule1,  function () {
        
           
           let mySavedData=getState(mySavedDataDP).val.split(",")
        request('https://portal.immobilienscout24.de/ergebnisliste/80909765',(error, response, html)=>{
         if (response.statusCode==200){ //log(html)
        
          const $ = cheerio.load(html)
                                      const list4 = $('*')
                                                         .find('figure > a')
                                                         .toArray()
                                                         .map(element => { return $(element).attr('href')}); //log(list4.length +"---"+list4)
                                       let list5; 
                                       list4.length>0 ? list5 = list4.map(x => x.replace(/(\/.*?\/.*?\/.*?)\/.*/,"$1")) : list5=[];                  
             
                       if (html.includes('Leider konnten keine Angebote mit den ')) {log("keine Angebote")} 
                        else {
                      
                             //  log("Vergleich "+equalsIgnoreOrder(list5,mySavedData).toString())
                             //  log("Vergleich "+list5+"  ---  "+mySavedData);
                               if(!equalsIgnoreOrder(list5,mySavedData)) {
                                                                        if(list5.length < mySavedData.length) { log("ein Angebote ist weg");
                                                                                                                 setState(myAlarmDP,"ein Angebote ist weg");
                                                                         } 
                                                                         else {setState(myAlarmDP,"neue Angebote sind da für immobilienscout");
                                                                               log("neue Angebote sind da") ;}
                                                                        
                                                                        
                                                                        mySavedData=[]; mySavedData = list5.slice(0); //Array Copy
                                                                        setState(mySavedDataDP,mySavedData.toString());
                                                                       // log(list5[0]+"  ---  "+mySavedData);
        
                               }
        
                           }
                           }
        
        
        });
         });
        
        
        
        
        
        

        A 2 Replies Last reply Reply Quote 0
        • A
          Aiouh @liv-in-sky last edited by

          @liv-in-sky 🙂 Test läuft 👍

          1 Reply Last reply Reply Quote 0
          • A
            Aiouh @liv-in-sky last edited by Aiouh

            @liv-in-sky Hi, scheinz zu klappen. Der DBP sieht bei mir jetzt so aus.

            /expose/80909765/129468267
            

            Wäre schick wenn das gleich eine URL wäre 😉

            Im "Alexa DP" steht

            ein Angebote ist weg
            
            liv-in-sky 2 Replies Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky @Aiouh last edited by

              @aiouh

              habe es verfolgt - heute kam ein neues angebot und wurde mir gemeldet - etwas später kam dann, ein angebot ist weg und auch dies war richtig - das neue angebot wurde wieder gelöscht - hat schon mal gut funktioniert

              bei der url war ich mir nicht sicher, ob du die brauchst - wie möchtest du das eigentlich ansehen - über die vis oder über eine nachricht?

              A 1 Reply Last reply Reply Quote 0
              • A
                Aiouh @liv-in-sky last edited by Aiouh

                @liv-in-sky Hey es ist schon Weihnachten. Nee mal im Ernst Vielen Dank dass Du Dich da so reinhängst.
                Ich denke das Einfachste wäre es "einfach" eine URL als datapoint zu haben, den kann man ja auf Änderung prüfen und sich den Inhalt per mail/pushover schicken lassen. Oder in der vis verwenden., zumindest das krieg ich selbst mit Blockly hin 😊

                liv-in-sky 2 Replies Last reply Reply Quote 0
                • liv-in-sky
                  liv-in-sky @Aiouh last edited by

                  @aiouh

                  habe mir das mal angeschaut - eigentlich wollte ich eine tabelle machen mit einem bild und das in der vis sichtbarmachen - leider geht das nicht so einfach, weil das alles ineinander verschachtelt ist - wäre ein zu großer aufwand

                  wegen der url teste ich gerade

                  1 Reply Last reply Reply Quote 0
                  • liv-in-sky
                    liv-in-sky @Aiouh last edited by liv-in-sky

                    @aiouh

                    hier- mit url - test - wird in den myAlarmDP geschrieben

                    vergiss nicht die dp wieder einzutragen - sind ja meine drin 🙂

                    zum testen, ob die url richtig ist, einfach den inhalt vom state mySavedDataDP unter dem objekte-tab im admin löschen - das script wird dann nach dem def. schedule ausgeführt und die url sollte dann drinstehen

                    EDIT - war fehler im script - muss ich erst ausbessern

                    1 Reply Last reply Reply Quote 0
                    • liv-in-sky
                      liv-in-sky @Aiouh last edited by liv-in-sky

                      @aiouh

                      müßte eher stimmen

                      //LINK FORUM
                      //https://forum.iobroker.net/post/672195
                      //@liv-in-sky 2.9.21
                      
                      const cheerio = require('cheerio');
                      
                      
                      
                      //----HIER MUSS SETTING ANGEPASST WERDEN----------------------------------------------------------------------------------------------------
                      
                       let mySavedDataDP="0_userdata.0.CONTROL-OWN.AAATEST.ImmoScoutAngebote";  //dp für die existierenden angebote
                       let myAlarmDP='alexa2.0.Echo-Devices.G09XXXXXX2R7.Commands.speak';  // alexadp oder irgend ein datenpunkt vom typ : zeichenkette/string
                      
                      //----AB HIER NICHTS ÄNDERN-----------------------------------------------------------------------------------------------------------------
                      
                      
                       if(getState(mySavedDataDP).val==null || getState(mySavedDataDP).val==undefined || getState(mySavedDataDP).val=="" ) setState(mySavedDataDP,[].toString())
                      
                      const request = require('request');
                      
                      const equalsIgnoreOrder = (a, b) => {
                       if (a.length !== b.length) return false;
                       const uniqueValues = new Set([...a, ...b]);
                       for (const v of uniqueValues) {
                         const aCount = a.filter(e => e === v).length;
                         const bCount = b.filter(e => e === v).length;
                         if (aCount !== bCount) return false;
                       }
                       return true;
                      }
                      
                      let mySchedule1="  9,19,59 8-23 * * * "; // 
                      
                       schedule(mySchedule1,  function () {
                      
                         
                         let mySavedData=getState(mySavedDataDP).val.split(",")
                      request('https://portal.immobilienscout24.de/ergebnisliste/80909765',(error, response, html)=>{
                       if (response.statusCode==200){ //log(html)
                      
                        const $ = cheerio.load(html)
                                                    const list4 = $('*')
                                                                       .find('figure > a')
                                                                       .toArray()
                                                                       .map(element => { return $(element).attr('href')}); //log(list4.length +"---"+list4)
                                                     let list5; 
                                                     list4.length>0 ? list5 = list4.map(x => x.replace(/(\/.*?\/.*?\/.*?)\/.*/,"$1")) : list5=[];                  
                           
                                     if (html.includes('Leider konnten keine Angebote mit den ')) {log("keine Angebote")} 
                                      else {
                                           
                                           //  log("Vergleich "+equalsIgnoreOrder(list5,mySavedData).toString())
                                           //  log("Vergleich "+list5+"  ---  "+mySavedData);
                                           
                                             if(!equalsIgnoreOrder(list5,mySavedData)) {
                                                                                      if(list5.length < mySavedData.length) { log("ein Angebote ist weg");
                                                                                                                               setState(myAlarmDP,"ein Angebote ist weg");
                                                                                                                            } 
                                                                                       else {log(mySavedData.length)
                                                                                            setState(myAlarmDP,`https://portal.immobilienscout24.de/`+list4[mySavedData.length-1]); 
                                                                                            //setState('0_userdata.0.CONTROL-OWN.AAATEST.ImmoScoutUrl',`https://portal.immobilienscout24.de/`+list4[mySavedData.length-1]); 
                                                                                            log("neue Angebote sind da") ;
                                                                                            }
                                                                                       }
                                                                                       mySavedData=[]; mySavedData = list5.slice(0); //Array Copy
                                                                                       setState(mySavedDataDP,mySavedData.toString());
                                           }
                                       }});
                       });
                      
                      
                      

                      A 1 Reply Last reply Reply Quote 1
                      • A
                        Aiouh @liv-in-sky last edited by

                        @liv-in-sky Ich hab noch die e-mail Benachrichtigung gebastelt, scheint gut zu funktionieren.
                        Nochmals Vielen Dank 👍

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate
                        FAQ Cloud / IOT
                        HowTo: Node.js-Update
                        HowTo: Backup/Restore
                        Downloads
                        BLOG

                        406
                        Online

                        32.0k
                        Users

                        80.4k
                        Topics

                        1.3m
                        Posts

                        adapter webseite überwachen
                        6
                        25
                        2021
                        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