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.

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

    Scheduled Pinned Locked Moved Requests
    25 Posts 5 Posters 18.1k Views 5 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.
    • LukeCodewalkerL Offline
      LukeCodewalker Module Developer @gismo2006
      last edited by

      @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
      
      1 Reply Last reply Reply Quote 0
      • G Offline
        gismo2006
        last edited by

        @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

        1 Reply Last reply Reply Quote 0
        • G Offline
          gismo2006
          last edited by

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

          LukeCodewalkerL 1 Reply Last reply Reply Quote 0
          • LukeCodewalkerL Offline
            LukeCodewalker Module Developer @gismo2006
            last edited by

            @gismo2006 I think I got the problem. The german description can contain letters like äöü etc. i will fix that later when i’m at home.

            1 Reply Last reply Reply Quote 0
            • LukeCodewalkerL Offline
              LukeCodewalker Module Developer
              last edited by

              Now it should work

              #!/usr/bin/python
              # -*- coding: utf-8 -*-
              import codecs
              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 = codecs.open(FILE_PATH,'w', 'utf-8')
                  f.write('Today is ' + weather + ' and ' + str(temp) + ' degrees.')
                  f.close()
              except (ValueError, KeyError, TypeError):
                  pass
              
              1 Reply Last reply Reply Quote 0
              • G Offline
                gismo2006
                last edited by

                Hi, a big thank you!!

                Its work perfect!!!

                Many Thanks! :-)

                greets gismo

                morozgrafixM 1 Reply Last reply Reply Quote 0
                • LukeCodewalkerL Offline
                  LukeCodewalker Module Developer
                  last edited by

                  Welcome :)

                  S 1 Reply Last reply Reply Quote 0
                  • S Offline
                    Squirrel @LukeCodewalker
                    last edited by

                    @LukeCodewalker i want to make the same Module for Switzerland but i don`t know how to find the json data for my region…

                    Can you help me please? ;) I found your link in the node_helper.js file. From where do you got that?

                    I would like o work with http://alarm.meteocentrale.ch/

                    LukeCodewalkerL 2 Replies Last reply Reply Quote 0
                    • LukeCodewalkerL Offline
                      LukeCodewalker Module Developer @Squirrel
                      last edited by

                      @Squirrel
                      i did some reverse engineering of the dwd-website and found this json file.
                      i had a short look at your link and did not found something similar there. do you know if theres an app for ios where the data is shown? maybe i can help you then.

                      1 Reply Last reply Reply Quote 0
                      • LukeCodewalkerL Offline
                        LukeCodewalker Module Developer @Squirrel
                        last edited by

                        @Squirrel
                        maybe this link helps you:
                        https://s3-eu-central-1.amazonaws.com/app-prod-static-fra.meteoswiss-app.ch/v1/warnings_with_outlook_with_naturalhazards_de.json

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