ubuntuusers.de

Rhätische Bahn rbb - json Abfahrtszeiten mit python analysieren

Status: Ungelöst | Ubuntu-Version: Ubuntu 24.10 (Oracular Oriole)
Antworten |

holger56779

Anmeldungsdatum:
14. Februar 2018

Beiträge: 46

Guten Morgen zusammen,

ich bin begeistert von der Rhätische Bahn in Graubünden Als Hobby in meiner freien Zeit habe ich angefangen, die json Datei der rhb Website auszuwerten, siehe https://www.rhb.ch/de/unternehmen/fundus-fuer-bahnfreunde/live-Abfahrtszeiten, dann ein Bahnhof anklicken und dann die json Datei ansehen

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
import json

# some JSON:
x = '{"LayoutName":"StationInfoDepartures","InfoAreaTypeName":"Web-Mobil","StopContent":[{"Departure":"08:00","DepartureDeviation":"","Line":"RE13","Destination":"Landquart","Track":"2","JourneyKind":"Regio Express","StopOnRequestInfo":"","JourneyNumber":"1018","ShowDecouplingSign":false,"SpecialText":"","ViaStops":[{"Name":"Saas i.P."},{"Name":"Küblis"},{"Name":"Schiers"}]},{"Departure":"08:01","DepartureDeviation":"","Line":"RE1","Destination":"Filisur","Track":"3D","JourneyKind":"Regio Express","StopOnRequestInfo":"","JourneyNumber":"1819","ShowDecouplingSign":false,"SpecialText":"","ViaStops":[{"Name":"Davos D."},{"Name":"Davos Platz"},{"Name":"Frauenkirch"}]},{"Departure":"08:02","DepartureDeviation":"","Line":"RE3","Destination":"St. Moritz","Track":"3BC","JourneyKind":"Regio Express","StopOnRequestInfo":"","JourneyNumber":"1319","ShowDecouplingSign":false,"SpecialText":"Nach Davos Platz: Sektor D.","ViaStops":[{"Name":"Susch"},{"Name":"Zernez"},{"Name":"Samedan"}]},{"Departure":"08:30","DepartureDeviation":"","Line":"RE24","Destination":"Landquart","Track":"2","JourneyKind":"Regio Express","StopOnRequestInfo":"","JourneyNumber":"1020","ShowDecouplingSign":false,"SpecialText":"","ViaStops":[{"Name":"Klosters D."},{"Name":"Küblis"},{"Name":"Jenaz"}]},{"Departure":"08:31","DepartureDeviation":"","Line":"RE2","Destination":"Davos Glaris","Track":"3CD","JourneyKind":"Regionalzug","StopOnRequestInfo":"","JourneyNumber":"1821","ShowDecouplingSign":true,"SpecialText":"","ViaStops":[{"Name":"Cavadürli"},{"Name":"Laret"},{"Name":"Davos Platz"}]},{"Departure":"08:31","DepartureDeviation":"","Line":"RE2","Destination":"Davos Platz","Track":"3CD","JourneyKind":"Regionalzug","StopOnRequestInfo":"","JourneyNumber":"1821","ShowDecouplingSign":true,"SpecialText":"","ViaStops":[{"Name":"Cavadürli"},{"Name":"Laret"},{"Name":"Wolfgang"}]}],"InfoAreaContent":{"Culture":"de","ServerTime":"2024-12-30T07:57:25+01:00","Name":"Klosters Platz"},"StationSpecialTextContent":[]}'

# parse x:
y = json.loads(x)
#merken = []


def zeigeFurZiel(ziel):
  lange=len(ziel)
  # the result is a Python dictionary:
  a=y["StopContent"]
  merken = []
  merken.clear()
  for zeile in a:
    if(zeile["Destination"][0:lange] == ziel):
      uhrzeit=zeile["Departure"]
      merken.append(str(uhrzeit))
      #break
      zugtyp=zeile["JourneyKind"]
      zugnr=zeile["Line"]
      gleis=zeile["Track"]
      ziel=zeile["Destination"]
      zwischenhalte=zeile["ViaStops"]
      print("----\n"+str(zeile))
      print(str(uhrzeit))
      print(str(zugnr))
      print(str(gleis))
      print(str(ziel))
      print(str(zwischenhalte))    
  return merken
#print(zeigeFurZiel("Davos"))

def zeigeFurNummer(id=0):
  # the result is a Python dictionary:
  a=y["StopContent"]
  zeile = a[id]
  uhrzeit=zeile["Departure"]
      #break
  zugtyp=zeile["JourneyKind"]
  zugnr=zeile["Line"]
  gleis=zeile["Track"]
  ziel=zeile["Destination"]
  zwischenhalte=zeile["ViaStops"]
  print(str(zeile)+"\n----")
  print(str(uhrzeit))
  print(str(zugnr))
  print(str(gleis))
  print(str(ziel))
  print(str(zwischenhalte))    
  #return merken
zeigeFurNummer(0)
zeigeFurNummer(2)
zeigeFurNummer(3)


def sucheNummer(ziel):
  lange=len(ziel)
  # the result is a Python dictionary:
  a=y["StopContent"]
  index = 0
  for zeile in a:
    if(zeile["Destination"][0:lange] == ziel):
      return index
    else:
      index =index +1
  return index
print(sucheNummer("Davos"))
print(sucheNummer("Landquart"))
print(sucheNummer("Filisur"))


def gibGleis(ziel):
  lange=len(ziel)
  # the result is a Python dictionary:
  a=y["StopContent"]
  for zeile in a:
    if(zeile["Destination"][0:lange] == ziel):
      gleis=zeile["Track"]
      return str(gleis)
  return "nicht vorhanden"
print(gibGleis("Davos"))
print(gibGleis("Landquart"))
print(gibGleis("Filisur"))
print(gibGleis("Bern"))

def gibZugtyp(ziel):
  lange=len(ziel)
  # the result is a Python dictionary:
  a=y["StopContent"]
  for zeile in a:
    if(zeile["Destination"][0:lange] == ziel):
      gleis=zeile["JourneyKind"]
      return str(gleis)
  return "nicht vorhanden"
print(gibZugtyp("Davos"))
print(gibZugtyp("Landquart"))
print(gibZugtyp("Filisur"))
print(gibZugtyp("Bern"))


def gibBahnstrecke(ziel):
  lange=len(ziel)
  # the result is a Python dictionary:
  a=y["StopContent"]
  for zeile in a:
    if(zeile["Destination"][0:lange] == ziel):
      gleis=zeile["Line"]
      return str(gleis)
  return "nicht vorhanden"
print(gibBahnstrecke("Davos"))
print(gibBahnstrecke("Landquart"))
print(gibBahnstrecke("Filisur"))
print(gibBahnstrecke("Bern"))

def gibAlleAbfahrtzeiten():
  a=y["StopContent"]
  merken = []
  merken.clear()
  for zeile in a:
    uhrzeit=zeile["Departure"]
    merken.append(str(uhrzeit))
  merken.sort(reverse=False)
  return merken
    
print(gibAlleAbfahrtzeiten())

def gibNachsteAbfahrtzeit():
  return gibAlleAbfahrtzeiten().pop(0)
print(gibNachsteAbfahrtzeit())

def gibLetzteAbfahrtzeit():
  zeiten=gibAlleAbfahrtzeiten()
  zeiten.reverse() 
  return zeiten.pop(0)
print(gibLetzteAbfahrtzeit())


def gibAlleZiele():
  a=y["StopContent"]
  merken = []
  merken.clear()
  for zeile in a:
    ziel=zeile["Destination"]
    merken.append(str(ziel))
  merken.sort(reverse=False)
  return merken
    
print(gibAlleZiele())

def gibNachstesZiel():
  return gibAlleZiele().pop(0)
print(gibNachstesZiel())

def gibLetztesZiel():
  ziele=gibAlleZiele()
  ziele.reverse() 
  return ziele.pop(0)
print(gibLetztesZiel())

def faehrtZugNach(ziel):
  alle=gibAlleZiele()
  for zeile in alle:
    if zeile.find(ziel) >=0:
      return True
  return False
  
print(faehrtZugNach("Davos"))
print(faehrtZugNach("Platz"))
print(faehrtZugNach("Moritz"))
print(faehrtZugNach("Bern"))

def zeigeBahnhof():
  return str(y["InfoAreaContent"]["Name"])
print(zeigeBahnhof())

def zeigeUhrzeit():
  return str(y["InfoAreaContent"]["ServerTime"])
print(zeigeUhrzeit())

def zeigeMeldungenBahnhof():
  return y["StationSpecialTextContent"]
print(zeigeMeldungenBahnhof())

Über Eure Tipps, Ideen und Vorschläge freue ich mich

Moderiert von sebix:

Thema in einen passenden Forenbereich verschoben. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“) in jedem Forenbereich. Danke.

holger56779

(Themenstarter)

Anmeldungsdatum:
14. Februar 2018

Beiträge: 46

Guten Morgen, ich habe weiter gemacht - alles Hobby

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
#weiter von oben

y = json.loads(x)

def gibDatenFurNummer(id=0):
  # the result is a Python dictionary:
  a=y["StopContent"]
  if id < len(a):
    return a[id]
  else:
    return "nicht vorhanden"
print(gibDatenFurNummer(5))

def gibAbfahrtszeitFurNummer(id=0):
  return str(gibDatenFurNummer(id)["Departure"])
print(gibAbfahrtszeitFurNummer(5))

def gibVerspatungFurNummer(id=0):
  return gibDatenFurNummer(id)["DepartureDeviation"]
print(gibVerspatungFurNummer(5))


def gibZugstreckeFurNummer(id=0):
  return str(gibDatenFurNummer(id)["Line"])
print(gibZugstreckeFurNummer(5))


def gibZielFurNummer(id=0):
  return str(gibDatenFurNummer(id)["Destination"])
print(gibZielFurNummer(5))



def gibGleisFurNummer(id=0):
  return str(gibDatenFurNummer(id)["Track"])
print(gibGleisFurNummer(5))

def gibZugtypFurNummer(id=0):
  return str(gibDatenFurNummer(id)["JourneyKind"])
print(gibZugtypFurNummer(5))


def gibHaltAufVerlangenFurNummer(id=0):
  return str(gibDatenFurNummer(id)["StopOnRequestInfo"])
print(gibHaltAufVerlangenFurNummer(5))


def gibReisenummerFurNummer(id=0):
  return int(gibDatenFurNummer(id)["JourneyNumber"])
print(gibReisenummerFurNummer(5))


def gibZugteilungFurNummer(id=0):
  return bool(gibDatenFurNummer(id)["ShowDecouplingSign"])
print(gibZugteilungFurNummer(5))


def gibMeldungFurNummer(id=0):
  return str(gibDatenFurNummer(id)["SpecialText"])
print(gibMeldungFurNummer(5))


def gibZwischenhalteFurNummer(id=0):
  bahnhofe = gibDatenFurNummer(id)["ViaStops"]
  ergebnis ="Halt in "
  for zeile in bahnhofe:
    ergebnis += str(zeile["Name"]) + " \n"
  return ergebnis
print(gibZwischenhalteFurNummer(5))



def gibAlleAbkopplungsFahrten():
  a=y["StopContent"]
  merken = []
  #merken.clear()
  for zeile in a:
    abkoppeln = bool(zeile["ShowDecouplingSign"])
    print(abkoppeln)
    if abkoppeln == True:
      #print(abkoppeln)
      merken.append(str(zeile["Destination"]))
  #merken.sort(reverse=False)
  return merken

print(gibAlleAbkopplungsFahrten())

def gibNachsteAbkopplungsFahrt():
  ziele = gibAlleAbkopplungsFahrten()
  if len(ziele) >0:
    return ziele.pop(0)
  else:
    return "nicht vorhanden"
print(gibNachsteAbkopplungsFahrt())

def gibAlleHaltVerlangen():
  a=y["StopContent"]
  merken = []
  #merken.clear()
  for zeile in a:
    verlangen = str(zeile["StopOnRequestInfo"])
    if len(verlangen) >0:
      #print(verlangen)
      merken.append(str(zeile["Destination"]))
  #merken.sort(reverse=False)
  return merken

print(gibAlleHaltVerlangen())

print(gibAlleHaltVerlangen())

def gibNachsteHaltVerlangen():
  return gibAlleHaltVerlangen().pop(0)
print(gibNachsteHaltVerlangen())


def zeigeFurZiel(ziel):
  lange=len(ziel)
  # the result is a Python dictionary:
  a=y["StopContent"]
  merken = []
  #merken.clear()
  for zeile in a:
    if(zeile["Destination"][0:lange] == ziel):
      uhrzeit=zeile["Departure"]
      merken.append(str(uhrzeit))
      #break
      zugtyp=zeile["JourneyKind"]
      zugnr=zeile["Line"]
      gleis=zeile["Track"]
      ziel=zeile["Destination"]
      zwischenhalte=zeile["ViaStops"]
      print("----\n"+str(zeile))
      print(str(uhrzeit))
      print(str(zugnr))
      print(str(gleis))
      print(str(ziel))
      print(str(zwischenhalte))    
  return merken
#print(zeigeFurZiel("Davos"))

def zeigeFurNummer(id=0):
  # the result is a Python dictionary:
  a=y["StopContent"]
  zeile = a[id]
  uhrzeit=zeile["Departure"]
      #break
  zugtyp=zeile["JourneyKind"]
  zugnr=zeile["Line"]
  gleis=zeile["Track"]
  ziel=zeile["Destination"]
  zwischenhalte=zeile["ViaStops"]
  print(str(zeile)+"\n----")
  print(str(uhrzeit))
  print(str(zugnr))
  print(str(gleis))
  print(str(ziel))
  print(str(zwischenhalte))    
  #return merken
zeigeFurNummer(0)
zeigeFurNummer(2)
zeigeFurNummer(3)


def sucheNummer(ziel):
  lange=len(ziel)
  # the result is a Python dictionary:
  a=y["StopContent"]
  index = 0
  for zeile in a:
    if(zeile["Destination"][0:lange] == ziel):
      return index
    else:
      index =index +1
  return index
print(sucheNummer("Davos"))
print(sucheNummer("Landquart"))
print(sucheNummer("Filisur"))


def gibGleis(ziel):
  lange=len(ziel)
  # the result is a Python dictionary:
  a=y["StopContent"]
  for zeile in a:
    if(zeile["Destination"][0:lange] == ziel):
      gleis=zeile["Track"]
      return str(gleis)
  return "nicht vorhanden"
print(gibGleis("Davos"))
print(gibGleis("Landquart"))
print(gibGleis("Filisur"))
print(gibGleis("Bern"))

def gibZugtyp(ziel):
  lange=len(ziel)
  # the result is a Python dictionary:
  a=y["StopContent"]
  for zeile in a:
    if(zeile["Destination"][0:lange] == ziel):
      gleis=zeile["JourneyKind"]
      return str(gleis)
  return "nicht vorhanden"
print(gibZugtyp("Davos"))
print(gibZugtyp("Landquart"))
print(gibZugtyp("Filisur"))
print(gibZugtyp("Bern"))


def gibBahnstrecke(ziel):
  lange=len(ziel)
  # the result is a Python dictionary:
  a=y["StopContent"]
  for zeile in a:
    if(zeile["Destination"][0:lange] == ziel):
      gleis=zeile["Line"]
      return str(gleis)
  return "nicht vorhanden"
print(gibBahnstrecke("Davos"))
print(gibBahnstrecke("Landquart"))
print(gibBahnstrecke("Filisur"))
print(gibBahnstrecke("Bern"))

def gibAlleAbfahrtzeiten():
  a=y["StopContent"]
  merken = []
  merken.clear()
  for zeile in a:
    uhrzeit=zeile["Departure"]
    merken.append(str(uhrzeit))
  merken.sort(reverse=False)
  return merken
    
print(gibAlleAbfahrtzeiten())

def gibNachsteAbfahrtzeit():
  return gibAlleAbfahrtzeiten().pop(0)
print(gibNachsteAbfahrtzeit())

def gibLetzteAbfahrtzeit():
  zeiten=gibAlleAbfahrtzeiten()
  zeiten.reverse() 
  return zeiten.pop(0)
print(gibLetzteAbfahrtzeit())


def gibAlleZiele():
  a=y["StopContent"]
  merken = []
  #merken.clear()
  for zeile in a:
    ziel=zeile["Destination"]
    merken.append(str(ziel))
  merken.sort(reverse=False)
  return merken
    
print(gibAlleZiele())

def gibNachstesZiel():
  return gibAlleZiele().pop(0)
print(gibNachstesZiel())

def gibLetztesZiel():
  ziele=gibAlleZiele()
  ziele.reverse() 
  return ziele.pop(0)
print(gibLetztesZiel())

def faehrtZugNach(ziel):
  alle=gibAlleZiele()
  for zeile in alle:
    if zeile.find(ziel) >=0:
      return True
  return False
  
print(faehrtZugNach("Davos"))
print(faehrtZugNach("Platz"))
print(faehrtZugNach("Moritz"))
print(faehrtZugNach("Bern"))

def zeigeBahnhof():
  return str(y["InfoAreaContent"]["Name"])
print(zeigeBahnhof())

def zeigeUhrzeit():
  return str(y["InfoAreaContent"]["ServerTime"])
print(zeigeUhrzeit())

def zeigeMeldungenBahnhof():
  return y["StationSpecialTextContent"]
print(zeigeMeldungenBahnhof())

ein http Request habe ich weggelassen, um kein Ärger mit rhb zu bekommen

ich freue mich über Tipps

holger56779

(Themenstarter)

Anmeldungsdatum:
14. Februar 2018

Beiträge: 46

Ich überarbeite die Funktionen zu List comprehension, sodass ich aus meinem anderen Projekt lernen kann.

dirkolus

Anmeldungsdatum:
17. Mai 2011

Beiträge: 2172

Wohnort: dahoam

Hallo Holger,

ich möchte Deinen Elan in keinster Weise bremsen, im Gegenteil. Vielleicht magst Du aber in vorhandene APIs schauen, um nicht nur die Rhätische Bahn zu monitoren, sondern noch ein paar andere Verkehrs- und Transportunternehmen in Deine Software zu integrieren? Oder zumindest Dich aus deren Fahrplansoftware Struktur inspirieren zu lassen:

Viel Spaß!

Antworten |