@@ -122,6 +122,35 @@ def keepkey_id_formatted(id_str):
122122
123123 return {'success' : True , 'message' : 'Keepkey firmware version {} downloaded to {}' .format (version , downloaded_file )}
124124
125+ def digitalbitbox_01_download (version = None , bitcoinonly = False ):
126+ versions = feedparser .parse ('https://github.com/digitalbitbox/mcu/tags.atom' )
127+ releases = versions .entries
128+
129+ def id_formatted (id_str ):
130+ tag = id_str .split ('/' )[- 1 ]
131+ p = re .compile (r'^v\d+.\d+.\d$' )
132+ return bool (p .match (tag ))
133+
134+ releases = [r for r in releases if id_formatted (r ['id' ])]
135+ releases .sort (key = lambda r : r ["updated_parsed" ], reverse = True )
136+
137+ version_info = {}
138+ if version is None :
139+ version_info = releases [0 ]
140+ version = version_info ['id' ].split ('/' )[- 1 ][1 :]
141+ else :
142+ for r in releases :
143+ if r ['id' ].split ('/' )[- 1 ][1 :] == version :
144+ version_info = r
145+ break
146+ else :
147+ raise BadArgumentError ('{} is not available' .format (version ))
148+
149+ url = 'https://github.com/digitalbitbox/mcu/releases/download/v{}/firmware.deterministic.{}.signed.bin' .format (version , version )
150+ downloaded_file = _download_file (url )
151+
152+ return {'success' : True , 'message' : 'Digital Bitbox01 firmware version {} downloaded to {}' .format (version , downloaded_file )}
153+
125154def download_firmware (model , version , bitcoinonly = False ):
126155 dev_model = model .lower ()
127156 func_name = dev_model + '_download'
0 commit comments