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.

    .txt file include

    Scheduled Pinned Locked Moved Troubleshooting
    59 Posts 6 Posters 34.9k Views 6 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.
    • B Offline
      banbutcher
      last edited by banbutcher

      @sdetweil

      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 :)

      S 1 Reply Last reply Reply Quote 0
      • S Offline
        sdetweil @banbutcher
        last edited by

        @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 array

        array.push(item)
        adds item to the end of the array

        name_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

        Sam

        How to add modules

        learning how to use browser developers window for css changes

        1 Reply Last reply Reply Quote 0
        • B Offline
          banbutcher
          last edited by

          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 :)

          S 1 Reply Last reply Reply Quote 0
          • S Offline
            sdetweil @banbutcher
            last edited by

            @banbutcher reading how

            Sam

            How to add modules

            learning how to use browser developers window for css changes

            1 Reply Last reply Reply Quote 0
            • B Offline
              banbutcher
              last edited by banbutcher

              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!

              S 2 Replies Last reply Reply Quote 0
              • S Offline
                sdetweil @banbutcher
                last edited by

                @banbutcher reading in the node_helper, sending up to the module.

                Sam

                How to add modules

                learning how to use browser developers window for css changes

                1 Reply Last reply Reply Quote 0
                • B Offline
                  banbutcher
                  last edited by

                  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);
                  		});
                  	}
                  });
                  
                  1 Reply Last reply Reply Quote 0
                  • S Offline
                    sdetweil @banbutcher
                    last edited by

                    @banbutcher I won’t have time to look at this tonight

                    Sam

                    How to add modules

                    learning how to use browser developers window for css changes

                    B 1 Reply Last reply Reply Quote 0
                    • B Offline
                      banbutcher @sdetweil
                      last edited by

                      @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:

                      S 1 Reply Last reply Reply Quote 0
                      • S Offline
                        sdetweil @banbutcher
                        last edited by sdetweil

                        @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 structure

                        var 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 {
                        

                        Sam

                        How to add modules

                        learning how to use browser developers window for css changes

                        S 1 Reply Last reply Reply Quote 0
                        • 1
                        • 2
                        • 3
                        • 4
                        • 5
                        • 6
                        • 5 / 6
                        • First post
                          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