Read the statement by Michael Teeuw here.
.txt file include
-
that worked great…
however, im a little bit stuck again… your expression works fine and return the correct result but only on the first line of the file and only if i remove the [1] from the end of line 5 of the code
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)[1]; wrapper.innerHTML = split; } else { wrapper.innerHTML = "No Data"; } return wrapper; }
do i need to stick it in some kind of loop? or am i reading the contents of file wrong?
again thanks for your help :)
-
@banbutcher is dataFile an array of filenames? then yes, you’ll need a loop.
so, you are moving part of name a, to a new array
then part of name b to the next slot in the arrayarray.push(item)
adds item to the end of the arrayname_of_array =[] initializes name_of_array to be an empty array
then u will need to format the array of partial names
var x = name_of_array.join(separator)
will turn the array into x, a string with separator between the names -
Band.Of.Brothers.E01.1080p.5.1Ch.BluRay.ReEnc-DeeJayAhmed.srt <br> Archer S01E03 Diversity Hire (1080p x265 10bit S94 Joy).mkv <br> devs.s01e02.720p.hdtv.x264-river[eztv].mkv <br> What.We.Do.in.the.Shadows.S02E02.Ghosts.720p.AMZN.WEBRip.DDP5.1.x264-NTb[eztv.io].mkv <br> What.We.Do.in.the.Shadows.S02E01.Resurrection.720p.AMZN.WEBRip.DDP5.1.x264-NTb[eztv.io].mkv <br>
this is the file im reading from… im not sure if thats an array, sorry and i want them outputted same line by line just missing the trailing parts.
again thanks for your help :)
-
@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 {