-
Notifications
You must be signed in to change notification settings - Fork 3
/
adafruit_blinka_pyportal_bitcoin.py
60 lines (50 loc) · 1.75 KB
/
adafruit_blinka_pyportal_bitcoin.py
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
# SPDX-FileCopyrightText: 2017 Scott Shawcroft, written for Adafruit Industries
#
# SPDX-License-Identifier: Unlicense
"""
This example will access the coindesk API, grab a number like bitcoin value in
USD and display it on a screen
If you can find something that spits out JSON data, we can display it!
You can find any resources in the associated Learn Guide at:
https://learn.adafruit.com/pyportal-bitcoin-value-display
Note: This library is designed to run on CPython and not CircuitPython.
"""
import os
import time
from adafruit_pyportal import PyPortal
# You can display in 'GBP', 'EUR' or 'USD'
CURRENCY = "USD"
# Set up where we'll be fetching data from
DATA_SOURCE = "https://api.coindesk.com/v1/bpi/currentprice.json"
DATA_LOCATION = ["bpi", CURRENCY, "rate_float"]
def text_transform(val):
if CURRENCY == "USD":
return "$%d" % val
if CURRENCY == "EUR":
return "€%d" % val
if CURRENCY == "GBP":
return "£%d" % val
return "%d" % val
# the current working directory (where this file is)
try:
cwd = os.path.dirname(os.path.realpath(__file__))
except AttributeError:
cwd = ("/" + __file__).rsplit("/", 1)[0]
pyportal = PyPortal(
url=DATA_SOURCE,
json_path=DATA_LOCATION,
default_bg=cwd + "/bitcoin_background.bmp",
text_font=cwd + "/fonts/Arial-Bold-24-Complete.bdf",
text_position=(195, 130),
text_color=0x0,
text_transform=text_transform,
)
pyportal.preload_font(b"$012345789") # preload numbers
pyportal.preload_font((0x00A3, 0x20AC)) # preload gbp/euro symbol
while True:
try:
value = pyportal.fetch()
print("Response is", value)
except (ValueError, RuntimeError) as e:
print("Some error occured, retrying! -", e)
time.sleep(3 * 60) # wait 3 minutes