Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # udoo bios, not finished...
- from argparse import ArgumentParser
- from urllib.request import (
- Request,
- urlopen,
- urljoin,
- )
- from urllib.error import HTTPError
- from shutil import unpack_archive
- from pathlib import Path
- import json
- BASE_URL = 'http://download.udoo.org/files/UDOO_X86/UEFI_update/'
- FILE_NAME = 'UDOOX86_B02-UEFI_Update_rel{}.zip'
- DB = Path('.udoo_bios_data.json')
- def get_bios_versions():
- for i in range(100, 120):
- url = urljoin(BASE_URL, FILE_NAME.format(i))
- request = Request(url, method='HEAD')
- try:
- response = urlopen(request)
- except HTTPError:
- continue
- if response.status == 200:
- yield str(i / 100), url
- def download_bios(url):
- filename = url.split('/')[-1]
- with open(filename, 'wb') as fd:
- response = urlopen(url)
- while True:
- chunk = response.read(64*1024**1)
- if not chunk:
- break
- fd.write(chunk)
- def unpack(url):
- bios_dir = Path('BIOS')
- filename = url.split('/')[-1]
- if not bios_dir.exists():
- bios_dir.mkdir()
- unpack_archive(filename, bios_dir)
- def store_json(data):
- with DB.open('w') as fd:
- json.dump(data, fd)
- def load_json():
- with DB.open() as fd:
- return json.load(fd)
- def main(do_update, version):
- if DB.exists() and not do_update:
- data = load_json()
- else:
- data = dict(get_bios_versions())
- store_json(data)
- if version is not None:
- url = data[version]
- download_bios(url)
- unpack(url)
- else:
- for version in data.keys():
- print(f'[{version}]')
- if __name__ == '__main__':
- parser = ArgumentParser(description='Show and install BIOS updates for Udoo Board X86')
- parser.add_argument('-u', action='store_true', help='Check for new bios updates')
- parser.add_argument('--install', metavar='version', type=str, required=False, default=None, help='Check for new bios updates')
- args = parser.parse_args()
- main(args.u, args.install)
Add Comment
Please, Sign In to add comment