save some information from a xml or json to a txt file



  • Hi, at all!!

    @strawberry-3-141 I know you haven’t time because of your work. So if anybody other can help me feel free to say.

    I like to have a module, or better not an module only a little code. It should work a little bit like the new module MMM-DWD-WarnWeather - Wetterwarnungen. I have a api link from a weather source which service a xml or json file. That not the problem. Now i like to read out some information and then it should automaticly save this in a txt file. Thats the diffrent to the module. This shows the information but I only like to run a script (JS/PHP/BASH or whatever) which automaticly read the information and write to a txt file.

    Ok now you say “use google!!!” And I answer you "Oh I have google the last two days, and try every code I found. I try Javascript/PHP and Python scripts but it didn’t work. And there are a big Problem too. My coding experince is very simple. So I can google, copy, test, try but no big chances at a code.

    Maybe someone can help me. :-)

    Greets gismo



  • @gismo2006 why you want to have the txt file? if you want to display the data from the txt file, it will be much easier to display the json file. This is what most of the modukles are doing, get a json file and display the data. then you could investigate those modules on how they handle the json data.



  • oh sorry i forgett, to describe. I have several bash scripts. For a example an bash script which display time an other one which display date. Now I have create a module for myself using the Hotword module by alexya. It works perfect. When i say “aktuellesDatum” (in englich actuellDate) my mirror says In german “Today is the 20. October 2016” for example. The same at the timescript.
    Then I have (I thing you as a good coder like to kill mke :-D ) a php script on my own webserver who runs at start up (I use cronjob) to read out the rss feed of the german website “Tageschschau” (A news site") and write the header in a txt file. Then the txst file is automaticly copied in in my own modulefolder. Then I write a module for myself again, using hotword detection again. If I now say “Aktuelle Nachrichten” (Actually News) My mirror reads out loudly the TXT file. (before it will read out my mirror create an acutell txt file ,whit the newest news)

    So I haven’t to look at the mirror, maybe durring take a shower in the morning. (Every day the same, I haven’t enough time in the morning :-D ) or something else i will inform about actually news, time or edate. I have tested several tts but the best for me was pico2wav. And a feature i added at this way too, was to read out loud the ip adress of the mirror. So I can simple control the pi if my monitor didn’t work. (save shut down for example).

    AND NOW. the thing i need this txt file I asked for. I like to do the same whit a little weather sentences about the actuall weather. In the json or xml file which I have was written Wolkig (cloudly) and in an other tag the temp. If I have finisched this I like to say “AktuellesWetter” (actuaklly weather) and my mirror says “10 °C, wolkig” So I will know very fast what clothes I need and (for example) I need a umbrella.

    Now you like to say maybe, “you write you read out the feeds of the Tagesschau feed. Why do you not use this for the txt you like too?” I will answer I have test it but it didn’t work.

    greets gismo


  • Module Developer

    Hey @gismo2006,
    I think i can help you. As i started to develop MMM-DWD-WarnWeather, i used a little Pythonscript to explore the API. So if Python would be ok for you, just explain what Data should be written to your Text file and i can modify the Script for you.



  • @LukeCodewalker Hi, YEAH! THANK YOU! Python will be OK for me. I have tested a python script, that I found at the www. Lat days. But it didn’t work. Late today if I have some time I will post some more information OK?

    Greets gismo


  • Module Developer

    @gismo2006 sure =)



  • @LukeCodewalker

    Here some more information:

    I use this link to use the api (It the same website which is use for the default Weather modul)

    http://api.openweathermap.org/data/2.5/weather?id=2934486&lang=de&units=metric&mode=xml&appid=

    (I only cut out my api key at he end)

    This link create a xml file (You can change into json, simply erase xml in the link and put json there)

    This xml looks like this:

                 DE
    

    And, I only like that your python script read out the line till and if it possible the line and .

    It would be perfekt. But that I can took later by learning myself. If your python script can read out the xml file and save in a txt file it will be great.

    Greets gismo


  • Module Developer

    @gismo2006 here it is. just place your app id and the path of the file, where the text should go.

    import json
    import subprocess
    
    APP_ID = ''
    FILE_PATH = 'test.txt'
    
    url = 'http://api.openweathermap.org/data/2.5/weather?id=2934486&lang=de&units=metric&mode=json&appid=' + APP_ID
    curl_req = 'curl -L ' + '"' + url + '"'
    p = subprocess.Popen(curl_req, stdout=subprocess.PIPE, shell=True)
    (output, err) = p.communicate()  
    p_status = p.wait()
    
    try:
        decoded = json.loads(output)
        weather = decoded['weather'][0]['description']
        temp = decoded['main']['temp']
        f = open(FILE_PATH,'w')
        f.write('Today is ' + weather + ' and ' + str(temp) + ' degrees.')
        f.close()
    except (ValueError, KeyError, TypeError):
        pass
    


  • @LukeCodewalker

    Hi, thank you for the code. But there was a little misstake I think. I have copied your code and save. put in my api and the right folder.

    then the first try. All works fine the code generate a test.txt file. But then I oen the txt file it was empty.
    Ok I think maybe I put in something wrong. But everything was ok.

    At a second try I chnage the folder name, because I think maybe the was some folder Rights or something else. But the same. The txt file was empty.

    At my next try I cut of the f.write line and there was only written f.write(‘Today is’)
    And I see everything work like it should. In the txt file was written Today is. Now I put some more in this line again. Everything works fine till I put the word weather. If I put this the txt file will be empty.

    I like to try something mor later today. But I want give you a feedback. And I like to say thank you.

    greets gismo



  • Sorry I forgett there was no error. Also Python displays no error if I try it a the Python IDLE.


Log in to reply
 

Looks like your connection to MagicMirror Forum was lost, please wait while we try to reconnect.