
@lolo there it is.
many, many, many thanks. and thanks for adding explanations

@lolo there it is.
many, many, many thanks. and thanks for adding explanations
@lolo
thank you, I’ll try right now
@lolo
i did that. it is still not displayed
i added this configuration in the config.js file:
{
module: “MMM-Dnevni_citat”,
position: “middle_center”
@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?
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;
};
i installed cheerio, but i don’t know how to use it.
do I have to put this now in my “MMM-PoemOfTheDay.js” ?

well, I’ll get started then. Keep your fingers crossed.
@ashishtank i got it now, i will now try to parse the html response to extract the text, any good tips?
@ashishtank ok, I have installed the module, but it only shows me a black screen
@ashishtank said in module that displays a certain text from a website, the text on the website is updated daily:
MMM-PoemOfTheDay is perfect to adapt for your need. Instead of poem site you need to get data from WatchTower site and parse the html response to extract the text.
wow, thank you very much for your feedback, I’ll try to see if I can do it.