Simple test¶
Run this test on a WiFi capable CircuitPython device to ensure it works.
1# SPDX-FileCopyrightText: 2017 Scott Shawcroft, written for Adafruit Industries
2# SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries
3#
4# SPDX-License-Identifier: Unlicense
5
6import ssl
7import time
8import adafruit_requests
9import socketpool
10import wifi
11import adafruit_json_stream as json_stream
12
13pool = socketpool.SocketPool(wifi.radio)
14session = adafruit_requests.Session(pool, ssl.create_default_context())
15
16SCORE_URL = "http://site.api.espn.com/apis/site/v2/sports/baseball/mlb/scoreboard"
17
18while True:
19 resp = session.get(SCORE_URL)
20 json_data = json_stream.load(resp.iter_content(32))
21 for event in json_data["events"]:
22 if "Seattle" not in event["name"]:
23 continue
24 for competition in event["competitions"]:
25 for competitor in competition["competitors"]:
26 print(competitor["team"]["displayName"], competitor["score"])
27 resp.close()
28 time.sleep(60)
CPython test¶
Run this with python examples/json_stream_local_file.py <filename>
to test in
CPython.
1# SPDX-FileCopyrightText: Copyright (c) 2023 Scott Shawcroft for Adafruit Industries
2#
3# SPDX-License-Identifier: Unlicense
4
5import sys
6
7import adafruit_json_stream as json_stream
8
9# import json_stream
10
11
12class FakeResponse:
13 def __init__(self, file):
14 self.file = file
15
16 def iter_content(self, chunk_size):
17 while True:
18 yield self.file.read(chunk_size)
19
20
21f = open(sys.argv[1], "rb") # pylint: disable=consider-using-with
22obj = json_stream.load(FakeResponse(f).iter_content(32))
23
24currently = obj["currently"]
25print(currently)
26print(currently["time"])
27print(currently["icon"])
28
29for i, day in enumerate(obj["daily"]["data"]):
30 print(day["time"], day["summary"], day["temperatureHigh"])
31 if i > 6:
32 break
33
34for source in obj["flags"]["sources"]:
35 print(source)