Read the statement by Michael Teeuw here.
.txt file include
-
@banbutcher reading how
-
this is my main module .js
i think this is where im reading from :/
Module.register("deluge",{ defaults: { updateInterval: 10 * 60 * 1000 //reads the file every 10 mins }, start: function(){ this.sendSocketNotification("START", this.config); }, socketNotificationReceived: function(notification, payload) { if(notification === "DATA"){ this.dataFile = payload; this.updateDom(); } }, // getDom: function(){ // var wrapper = document.createElement("div"); // if(this.dataFile){ // wrapper.innerHTML = this.dataFile; // } else { // wrapper.innerHTML = "No data"; // } // return wrapper; // } getDom: function(){ var wrapper = document.createElement("div"); if(this.dataFile){ var splitRegExp = /.*[S][(0-9)]+[E][(0-9)]+/ig; var split = splitRegExp.exec(this.dataFile); wrapper.innerHTML = split; } else { wrapper.innerHTML = "No Data"; } return wrapper; } });
again thanks for your help :)
im in way overmy head here!
-
@banbutcher reading in the node_helper, sending up to the module.
-
Node_helper :)
const NodeHelper = require("node_helper"); const fs= require("fs"); module.exports = NodeHelper.create({ //here comes the part of the nodehelper after the 3 dots as posted above socketNotificationReceived: function(notification, payload) { if(notification === "START"){ this.config = payload; this.readData(); setInterval(() => { this.readData(); }, this.config.updateInterval); } }, readData: function(){ //to read a file to do the following fs.readFile("new-tv-list.txt", "utf8", (err, data) => { if (err) throw err; this.sendSocketNotification("DATA", data); }); } });
-
@banbutcher I won’t have time to look at this tonight
-
@sdetweil
not a problem at all, i really appreciate your help so far in this topic and every other question ive had across the board! :thumbs_up_light_skin_tone: -
@banbutcher ok, the fs.readFile() returns ALL the content of the file. I still would remove the utf8.
but you want a list of names, not a stream of characters…
so you need to split the stream into an array.a list of text ‘lines’ has a character after each, called a line feed, we don’t want those
but the last filename MAY or MAY NOT be followed by a line feed. (depends on how the file was created)
anyhow we can fix that
I would change the readData function in node_helper like this
readData: function(){ //to read a file to do the following fs.readFile("new-tv-list.txt", (err, data) => { var output_data = null // if there was no error if (!err){ // convert byte stream to array of names output_data=data.toString().concat("\n").split('\n') } // always send something back to module, so it can display messages // might be null if there was an error this.sendSocketNotification("DATA", output_data); }); }
then to fix the module side
build an html table structurevar wrapper = document.createElement("div"); if(this.dataFile){ var output_list= []; // setup regex, no i no g (only once, and case sensitive) var splitRegExp = /.*[S][(0-9)]+[E][(0-9)]+/; // loop thru the list of filenames for(filename of this.dataFile) { // if the name is not zero length (split could have returned for just linefeed if(filename.length >0) { // get the filename prefix var split = splitRegExp.exec(filename); // save name to the output list, as a table entry // remove space after the ->< , the forum hides everything after unless a space // table has a row, output_list.push("< tr>< td>") // with data output_list.push(split) // end of data and row output_list.push("< /td>< /tr>") } } // insert the table into the wrapper wrapper.innerHTML = "< table>" + output_list.join('')+ "< /table>"; } else {
-
you can also you divs instead of a table, and then set a css style
‘display’:‘inline-flex’
‘flex-direction’:‘vertical’and u can also use code to create the tree instead of text (don’t use the output_list anymore)
(and u can use this with divs too, don’t need as many elements)var table=document.createElement("table") wrapper.appendChild(table) for(filename of this.dataFile) { // if the name is not zero length (split could have returned for just linefeed if(filename.length >0) { // get the filename prefix var tr=document.createElement("tr") table.appendChild(tr) var td=document.createElement("td") tr.appendChild(td) var split = splitRegExp.exec(filename); td.innerText=split } } return wrapper;
-
-
wow… works like a charm! lists all tv shows perfectly! :)
is there any way to print a line if the regex isn’t met… ie like a movie title instead of a series title with s01e03 attached?
and possibly limit output to 10 lines?Thanks,
Richie