Momentan sieht es so aus.
Bei ID 11 gibt es z.B. ein downSignal aber bei ID 12 gibt es die wieder nicht und dann bekommt man eben den fehler das es nicht in der Datei existiert.
Code: Alles auswählen
import json
import xmltodict
import requests
import xml.etree.ElementTree as ET
def abfrage():
r = requests.get("https://eyes.nasa.gov/dsn/data/dsn.xml")
root = ET.fromstring(r.text)
tree = ET.ElementTree(root)
tree.write("dsn.xml")
with open("dsn.xml","r") as xmlfileObj:
data_dict = xmltodict.parse(xmlfileObj.read())
xmlfileObj.close()
jsonObj= json.dumps(data_dict, indent=6)
with open("dsn_roh.json", "w") as jsonfileObj:
jsonfileObj.write(jsonObj)
jsonfileObj.close()
def speichern():
with open('dsn_roh.json','r') as file:
obj = json.load(file)
fileName = "dsn.json"
jsonObject = {
"dsn": {
"station": [
{
"id": 1,
"name": obj['dsn']['station'][0]['@friendlyName'],
"kurzname": obj['dsn']['station'][0]['@name'],
"timeUTC": obj['dsn']['station'][0]['@timeUTC'],
"timeZoneOffset": obj['dsn']['station'][0]['@timeZoneOffset'],
"dish": [
{
"id": 11,
"name": obj['dsn']['dish'][0]['@name'],
"azimuthAngle": obj['dsn']['dish'][0]['@azimuthAngle'],
"elevationAngle": obj['dsn']['dish'][0]['@elevationAngle'],
"windSpeed": obj['dsn']['dish'][0]['@windSpeed'],
"isMSPA": obj['dsn']['dish'][0]['@isMSPA'],
"isArray": obj['dsn']['dish'][0]['@isArray'],
"isDDOR": obj['dsn']['dish'][0]['@isDDOR'],
"created": obj['dsn']['dish'][0]['@updated'],
"downSignal": {
"signalType": obj['dsn']['dish'][0]['downSignal']['@signalType'],
"signalTypeDebug": obj['dsn']['dish'][0]['downSignal']['@signalTypeDebug'],
"dataRate": obj['dsn']['dish'][0]['downSignal']['@dataRate'],
"frequency": obj['dsn']['dish'][0]['downSignal']['@frequency'],
"power": obj['dsn']['dish'][0]['downSignal']['@power'],
"spacecraft": obj['dsn']['dish'][0]['downSignal']['@spacecraft'],
"spacecraftID": obj['dsn']['dish'][0]['downSignal']['@spacecraftId'],
},
"upSignal": {
"signalType": obj['dsn']['dish'][0]['upSignal']['@signalType'],
"signalTypeDebug": obj['dsn']['dish'][0]['upSignal']['@signalTypeDebug'],
"dataRate": obj['dsn']['dish'][0]['upSignal']['@dataRate'],
"frequency": obj['dsn']['dish'][0]['upSignal']['@frequency'],
"power": obj['dsn']['dish'][0]['upSignal']['@power'],
"spacecraft": obj['dsn']['dish'][0]['upSignal']['@spacecraft'],
"spacecraftID": obj['dsn']['dish'][0]['upSignal']['@spacecraftId'],
},
"target": {
"name": obj['dsn']['dish'][0]['target']['@name'],
"id": obj['dsn']['dish'][0]['target']['@id'],
"uplegRange": obj['dsn']['dish'][0]['target']['@uplegRange'],
"downlegRange": obj['dsn']['dish'][0]['target']['@downlegRange'],
"rtlt": obj['dsn']['dish'][0]['target']['@rtlt'],
},
},
{
"id": 12,
"name": obj['dsn']['dish'][1]['@name'],
"azimuthAngle": obj['dsn']['dish'][1]['@azimuthAngle'],
"elevationAngle": obj['dsn']['dish'][1]['@elevationAngle'],
"windSpeed": obj['dsn']['dish'][1]['@windSpeed'],
"isMSPA": obj['dsn']['dish'][1]['@isMSPA'],
"isArray": obj['dsn']['dish'][1]['@isArray'],
"isDDOR": obj['dsn']['dish'][1]['@isDDOR'],
"created": obj['dsn']['dish'][1]['@updated'],
"downSignal": {
"signalType": obj['dsn']['dish'][1]['downSignal']['@signalType'],
"signalTypeDebug": obj['dsn']['dish'][1]['downSignal']['@signalTypeDebug'],
"dataRate": obj['dsn']['dish'][1]['downSignal']['@dataRate'],
"frequency": obj['dsn']['dish'][1]['downSignal']['@frequency'],
"power": obj['dsn']['dish'][1]['downSignal']['@power'],
"spacecraft": obj['dsn']['dish'][1]['downSignal']['@spacecraft'],
"spacecraftID": obj['dsn']['dish'][1]['downSignal']['@spacecraftId'],
},
"upSignal": {
"signalType": obj['dsn']['dish'][1]['upSignal']['@signalType'],
"signalTypeDebug": obj['dsn']['dish'][1]['upSignal']['@signalTypeDebug'],
"dataRate": obj['dsn']['dish'][1]['upSignal']['@dataRate'],
"frequency": obj['dsn']['dish'][1]['upSignal']['@frequency'],
"power": obj['dsn']['dish'][1]['upSignal']['@power'],
"spacecraft": obj['dsn']['dish'][1]['upSignal']['@spacecraft'],
"spacecraftID": obj['dsn']['dish'][1]['upSignal']['@spacecraftId'],
},
"target": {
"name": obj['dsn']['dish'][1]['target']['@name'],
"id": obj['dsn']['dish'][1]['target']['@id'],
"uplegRange": obj['dsn']['dish'][1]['target']['@uplegRange'],
"downlegRange": obj['dsn']['dish'][1]['target']['@downlegRange'],
"rtlt": obj['dsn']['dish'][1]['target']['@rtlt'],
},
},
{
"id": 2,
"name": obj['dsn']['station'][1]['@friendlyName'],
"kurzname": obj['dsn']['station'][1]['@name'],
"timeUTC": obj['dsn']['station'][1]['@timeUTC'],
"timeZoneOffset": obj['dsn']['station'][1]['@timeZoneOffset'],
},
{
"id": 3,
"name": obj['dsn']['station'][2]['@friendlyName'],
"kurzname": obj['dsn']['station'][2]['@name'],
"timeUTC": obj['dsn']['station'][2]['@timeUTC'],
"timeZoneOffset": obj['dsn']['station'][2]['@timeZoneOffset'],
},
],
}
}
file = open(fileName, "w")
json.dump(jsonObject, file, indent=6)
file.close()
abfrage()
speichern()