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.
    • S Offline
      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 Offline
          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 Offline
              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 Offline
                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 Offline
                    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