Read the statement by Michael Teeuw here.
.txt file include
-
@saschasp you can change your regular expressions to the following:
/Meldung (.*)/ig;
,/Zone (.*)/ig;
and/Zeit (.*)/ig;
. This should help you displaying the data. For the problem with the newest file you need to do the following steps: Scan the directory, sort file list by highest number, read the first file.Scan the directory https://nodejs.org/api/fs.html#fs_fs_readdir_path_options_callback
Sort the file names https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
Read the file https://nodejs.org/api/fs.html#fs_fs_readfile_path_options_callback
-
@strawberry-3-141
Ok, i will try step by step.
Beginning with my first probleme:
The Output message (displayed on the mirror) is only displaying one word after the “identifyer-word”identifyer "Meldung"
Stellmotor Antrieb blockiert
MagicMirror Display only
Stellmotor
Antrieb blockiert is missingThe
identifyer-words
are Meldung Zone ZeitThe content from my txt:
Meldung Stellmotor Antrieb blockiert Zone Nebenantrieb Zeit 6.Juni 2018 10:40 +++ENDE DER DATEI+++
My edited
sensor.js
:Module.register("Home-Status",{ defaults: { updateInterval: 0.5 * 60 * 1000 //reads the file every 30 seconds }, 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){ var meldungRegExp = /Meldung (.*?) /ig; var meldung = meldungRegExp.exec(this.dataFile)[1]; var zoneRegExp = /Zone (.*?) /ig; var zone = zoneRegExp.exec(this.dataFile)[1]; var zeitRegExp = /Zeit (.*?) /ig; var zeit = zeitRegExp.exec(this.dataFile)[1]; wrapper.innerHTML = "Meldung: " + meldung + " Zone: " + zone + " Zeit: " + zeit; } else { wrapper.innerHTML = "No Data"; } return wrapper; } });
Result wich is displayed at MagicMirror:
Meldung:Stellmotor Zone:Nebenantrieb Zeit:6.Juni
-
@saschasp your regular expressens are different from the one i posted, use them and I’m sure it will work
-
hi,
sorry to be dragging up old posts, but im trying to get my mirror to display the contents of a txt file and i have it partly working… i have the contents displaying on my mirror but its all showing up on one line, how can i display it with each line break as in txt file?thanks
-
@banbutcher you will have to replace the line feeds (\n) with html breaks (
) -
hi again,
im after getting my script to update my txt file with the names of downloaded movies and tv series… how would i go about reading the title of the series and just having the title and info ie:
if title has S**E** in it then
filename - Archer S01E01pilot 1080p x265.mkv
desired result - Archer S01E01else its a movie and just add movie name
i think this is the bit of code im to edit but i havent got it working :(
getDom: function(){ var wrapper = document.createElement("div"); if(this.dataFile){ var meldungRegExp = /Meldung (.*?) /ig; var meldung = meldungRegExp.exec(this.dataFile)[1]; var zoneRegExp = /Zone (.*?) /ig; var zone = zoneRegExp.exec(this.dataFile)[1]; var zeitRegExp = /Zeit (.*?) /ig; var zeit = zeitRegExp.exec(this.dataFile)[1]; wrapper.innerHTML = "Meldung: " + meldung + " Zone: " + zone + " Zeit: " + zeit; } else { wrapper.innerHTML = "No Data"; } return wrapper; } });
thanks
Richie
-
@banbutcher said in .txt file include:
Archer S01E01pilot 1080p x265.mkv
using the regex tester,
https://regex101.com/I think this is the regex u want
/.*[S][(0-9)]+[E][(0-9)]+/
-
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 :)
-
@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 arrayarray.push(item)
adds item to the end of the arrayname_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 -
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 :)