• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

module that displays a certain text from a website, the text on the website is updated daily

Scheduled Pinned Locked Moved Requests
36 Posts 6 Posters 9.2k Views 7 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Away
    sdetweil @ashishtank
    last edited by sdetweil Jan 20, 2021, 6:07 PM Jan 20, 2021, 6:07 PM

    @ashishtank cheerio lib will parse html to json

    Sam

    How to add modules

    learning how to use browser developers window for css changes

    1 Reply Last reply Reply Quote 1
    • A Offline
      Amoniak
      last edited by Jan 20, 2021, 7:56 PM

      well, I’ll get started then. Keep your fingers crossed.

      1 Reply Last reply Reply Quote 0
      • A Offline
        Amoniak
        last edited by Amoniak Jan 20, 2021, 10:34 PM Jan 20, 2021, 10:11 PM

        i installed cheerio, but i don’t know how to use it.
        do I have to put this now in my “MMM-PoemOfTheDay.js” ?
        Bild 20.01.21 um 23.10.jpg

        S 1 Reply Last reply Jan 20, 2021, 10:19 PM Reply Quote 0
        • S Away
          sdetweil @Amoniak
          last edited by Jan 20, 2021, 10:19 PM

          @Amoniak gotta go read the library usage

          Sam

          How to add modules

          learning how to use browser developers window for css changes

          1 Reply Last reply Reply Quote 0
          • L Offline
            lolo
            last edited by Jan 20, 2021, 11:01 PM

            It gonna be harder than u think as your text is changing daily. Just follow the the pattern.
            Every day this is changed( https://wol.jw.org/hr/wol/h/r19/lp-c).
            new day new text.
            Text is in :
            div id=“dailyText”
            but if you ignore reference in text as (Mat. 16:24, 25; Ivan 15:20) located in a class it’s gonna be more easier.
            And with cheerio u can complete this.

            1 Reply Last reply Reply Quote 0
            • A Offline
              Amoniak
              last edited by Jan 21, 2021, 4:12 PM

              so, this is what my NodeHelper.js looks like. like i thought, the screen is black.

              const axios = require("axios");
              const DetectLanguage = require("detectlanguage");
              
              module.exports = NodeHelper.create({
                      socketNotificationReceived: async function(noti, payload) {
                              if (noti === "START") {
                                      if (payload.updateInterval < 120000) {
                                              payload.updateInterval = 120000;
                                      }
                                      const self = this;
                                      (async function displayWatchtower () {
                                              const poem = await getWatchtower(payload);
                                              self.sendSocketNotification("UPDATE", poem);
                                              setTimeout(displayPoem, payload.updateInterval);
                                      })();
                              }
                      }
              });
              
              const cheerio = require("cheerio");
              const axios = require("axios").default;
              
              const fethHtml = async url => {
                try {
                  const { data } = await axios.get(url);
                  return data;
                } catch {
                  console.error(`ERROR: An error occurred while trying to fetch the URL: ${url}`);
                }
              };
              
              const extracWatchtower = selector => {
                const theme = selector
                  .find(".tabContent active")
                  .find("[class='themeScrp'] > [class='b'])
                  .text()
                  .trim();
              
               const text = selector
                  .find(".bodyTxt")
                  .find("[class='section']")
                  .text()
                  .trim();
              
               return { theme,
                        text
               };
              };
              
              const scrapWatchtower = async () => {
                const watchtowerUrl =
                  "https://wol.jw.org/hr/wol/h/r19/lp-c";
              
                const html = await fethHtml(watchtowerUrl);
              
                const selector = cheerio.load(html);
              
                const searchResults = selector("body")
                    .find("#dailyText"
                );
              
                const deals = searchResults.map((idx, el) => {
                    const elementSelector = selector(el);
                    return extractDeal(elementSelector)
                  })
                  .get();
              
                return Watchtower;
              
              };
              
              1 Reply Last reply Reply Quote 0
              • A Offline
                ashishtank Module Developer
                last edited by Jan 21, 2021, 4:35 PM

                @Amoniak there are lots of missing pieces… add console.log with some message in each function and see how the flow works.

                1 Reply Last reply Reply Quote 0
                • L Offline
                  lolo
                  last edited by Jan 21, 2021, 8:21 PM

                  Try to do something with this code. It will retrieve data from current day. Modifying that node_helper is not great idea.

                      const url=  'https://wol.jw.org/hr/wol/h/r19/lp-c';
                      request({
                          url: url,
                          method: 'GET'
                          }, (error, response, body) => {
                              if (error) {
                                  return console.error(error)
                              };
                           
                              var $ = cheerio.load(body); 
                              //console.log($.html());  
                              const data =  $('div[class="tabContent"]').first();
                                      
                              let header = $(data).find('h2').text();
                              let title = $(data).find('p').first().text();
                              let text = $(data).find('div.pGroup>p').text();
                              //console.log(header,title,text);
                              var recivedData={
                                  header,
                                  title,
                                  text
                              };
                              //console.log(recivedData);
                              
                        
                      });   
                  
                  A 1 Reply Last reply Jan 24, 2021, 5:19 PM Reply Quote 0
                  • F Offline
                    fordi
                    last edited by Jan 24, 2021, 7:35 AM

                    I bet you could use the same technique to see if any playstation 5 are in stock on websites?

                    1 Reply Last reply Reply Quote 0
                    • A Offline
                      Amoniak @lolo
                      last edited by Jan 24, 2021, 5:19 PM

                      @lolo thank you for the code.
                      I used the “MagicMirror-Module-Template” to create a new file and the associated folder.
                      this is my js:

                      ‘’’

                      Module.register(“dnevni_citat”, {
                      defaults: {
                      updateInterval: 60000,
                      retryDelay: 5000
                      },

                          requiresVersion: "2.1.0", // Required version of MagicMirror
                      
                          start: function() {
                                  var self = this;
                                  var dataRequest = null;
                                  var dataNotification = null;
                      
                                  //Flag for check if module is loaded
                                  this.loaded = false;
                      
                                  // Schedule update timer.
                                  this.getData();
                                  setInterval(function() {
                                          self.updateDom();
                                  }, this.config.updateInterval);
                          },
                      
                      const url=  'https://wol.jw.org/hr/wol/h/r19/lp-c';
                      request({
                          url: url,
                          method: 'GET'
                          }, (error, response, body) => {
                              if (error) {
                                  return console.error(error)
                              };
                           
                              var $ = cheerio.load(body); 
                              //console.log($.html());  
                              const data =  $('div[class="tabContent"]').first();
                                      
                              let header = $(data).find('h2').text();
                              let title = $(data).find('p').first().text();
                              let text = $(data).find('div.pGroup>p').text();
                              //console.log(header,title,text);
                              var recivedData={
                                  header,
                                  title,
                                  text
                              };
                              //console.log(recivedData);
                          
                                  }
                          },
                      

                      ‘’’
                      what am I doing wrong?

                      1 Reply Last reply Reply Quote 0
                      • 1
                      • 2
                      • 3
                      • 4
                      • 2 / 4
                      2 / 4
                      • First post
                        18/36
                        Last post
                      Enjoying MagicMirror? Please consider a donation!
                      MagicMirror created by Michael Teeuw.
                      Forum managed by Sam, technical setup by Karsten.
                      This forum is using NodeBB as its core | Contributors
                      Contact | Privacy Policy