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

      @sdetweil

      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

      S 1 Reply Last reply Reply Quote 0
      • 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