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 37.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.
    • S Do not disturb
      sdetweil @banbutcher
      last edited by sdetweil

      @banbutcher >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?

      sure

      // should make this a config variable by adding to module defaults
      // then would be this.config.counter
      // get display limit, 10 if not specified in defaults
      var counter=this.config.counter || 10
                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
                     // and the view limit has not been reached
                     if(filename.length >0 && counter>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);
                            if(split)                        
                                td.innerText=split
                            else
                                td.innerText='name not matched '+ filename
                            counter--;
                      }
            }
      return wrapper;
      

      or using the text form

      var wrapper = document.createElement("div");
      		if(this.dataFile){
                              var output_list= [];
                              // should make this a config variable by adding to module defaults
                             // then would be this.config.counter
                             // get display limit, 10 if not specified in defaults
                             var counter=this.config.counter || 10
                              // 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 && counter >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
                                     if(split)
                                        output_list.push(split)
                                     else 
                                         output_list.push('name not matched '+ filename)
                                     // end of data and row
                                     output_list.push("< /td>< /tr>")
                                     counter--;
                                  } 
                              }  
                              // 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

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

        @sdetweil

        the counter part worked great, but then when i tried to add it if loop for the name check, im getting “no data” maybe i messed up copying across?

                                var output_list= [];
        			var counter=this.config.counter || 11
                                // 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 && counter>0) {
                                       // get the filename prefix
                                       var split = splitRegExp.exec(filename);
                                       // save name to the output list, as a table entry
                                       // table has a row, 
                                       output_list.push("<tr><td>")
        			       // with data
        			       if(split )
                                          output_list.push(split)
        			       else
        			          output_list.push('name not found:'+ filename)
                                       // end of data and row
                                       output_list.push("</td></tr>")
        			       counter--;
                                    } 
                                }  
                                // insert the table into the wrapper
        			wrapper.innerHTML = "<table>" + output_list.join('')+ "</table>";
        		 } else {
        			wrapper.innerHTML = "No Data";
        		}
        
        S 1 Reply Last reply Reply Quote 0
        • S Do not disturb
          sdetweil @banbutcher
          last edited by sdetweil

          @banbutcher said in .txt file include:

          im getting “no data” maybe i messed up copying across?

          sorry, don’t understand the words…

          this is the test if the regex worked

                                         if(split)
                                            output_list.push(split)
          			       else
          			          output_list.push('name not found:'+ filename)
          

          Sam

          How to add modules

          learning how to use browser developers window for css changes

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

            @sdetweil

            this code works…

            		if(this.dataFile){
                                    var output_list= [];
            			var counter=this.config.counter || 11
                                    // 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 && counter>0) {
                                           // get the filename prefix
                                           var split = splitRegExp.exec(filename);
                                           // save name to the output list, as a table entry
                                           // 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>")
            			       counter--;
                                        } 
                                    }  
                                    // insert the table into the wrapper
            			wrapper.innerHTML = "<table>" + output_list.join('')+ "</table>";
            		 } else {
            

            this code doesnt…

                                    var output_list= [];
            			var counter=this.config.counter || 11
                                    // 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 && counter>0) {
                                           // get the filename prefix
                                           var split = splitRegExp.exec(filename);
                                           // save name to the output list, as a table entry
                                           // table has a row, 
                                           output_list.push("<tr><td>")
            			       // with data
            			       if(split.length >0 )
                                              output_list.push(split)
            			       else
            			          output_list.push('name not found:'+ filename)
                                           // end of data and row
                                           output_list.push("</td></tr>")
            			       counter--;
                                        } 
                                    }  
                                    // insert the table into the wrapper
            			wrapper.innerHTML = "<table>" + output_list.join('')+ "</table>";
            		 } else {
            			wrapper.innerHTML = "No Data";
            		}
            

            Richie :)

            1 Reply Last reply Reply Quote 0
            • S Do not disturb
              sdetweil @sdetweil
              last edited by sdetweil

              @banbutcher

              my fault… I ‘assumed’ that regex would return an empty string… it returns a null value…

              I fixed my sample, and your paste with the correct test

              if(split)
              

              instead of

              if(split.length>0)
              

              Sam

              How to add modules

              learning how to use browser developers window for css changes

              1 Reply Last reply Reply Quote 0
              • S Do not disturb
                sdetweil
                last edited by

                and for others trying to implement code, you can debug using the developers console, OR make little sample files and run them directly in node

                i named this testit.js in the user home folder (~/testit.js)

                var dataFile=["Archer S01E02Someshow.tv",
                "Archer S01E03Someshow .tv",
                "Archer S01e02Someshow .tv",
                "Archer S01E04Someshow .tv",
                "Archer S01E05someshow .tv",
                "Archer s01E02Someshow .tv",
                "Archer S01E09Someshow .tv",
                ]
                var counter1=10
                
                
                                    if(dataFile){
                                        var output_list= [];
                                        // should make this a config variable by adding to module defaults
                                       // then would be this.config.counter
                                       // get display limit, 10 if not specified in defaults
                                       var counter=counter1 || 10
                                        // 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 dataFile) {
                                            // if the name is not zero length (split could have returned for just linefeed
                                            if(filename.length >0 && counter >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
                                               if(split)
                                                  output_list.push(split)
                                               else 
                                                   output_list.push('name not matched '+ filename)
                                               // end of data and row
                                               output_list.push("</td></tr>")
                                               counter--;
                                            } 
                                        }  
                                    }
                                        // insert the table into the wrapper
                            console.log( "<table>" + output_list.join('')+ "</table>");
                

                and then

                cd ~
                node testit.js
                

                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

                  Perfect!!

                  now i can go to bed! :D tomorrows task will be styling with css! any pointers?

                  as always… thanks again!!

                  Richie

                  S 1 Reply Last reply Reply Quote 0
                  • S Do not disturb
                    sdetweil @banbutcher
                    last edited by sdetweil

                    @banbutcher said in .txt file include:

                    styling with css! any pointers

                    sorry, that is my weakness… I cannot make anything look good… I can tell you if it DOES look good, but cannot do it myself… I have no eye for that all…

                    Sam

                    How to add modules

                    learning how to use browser developers window for css changes

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