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

      Awesome i will try and get it working tonight!

      Thanks,

      Richie

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