from io import BytesIO import logging import re import requests as r import tarfile BASE_URL = "https://arch.middleearth.fr" DB_NAME = "casio.db" def get_from_regex(regex, package, arch): file = BytesIO(r.get(f"{BASE_URL}/{arch}/{DB_NAME}").content) db = tarfile.open(fileobj=file) name = list(filter( lambda item: item.isdir() and package in item.name, db.getmembers() ))[0].name return regex.search(name).group(1) def get_package_version(package, arch): regex = re.compile(".+-(\d+\.\d+(?:\.\d+)?)-\d+") version = get_from_regex(regex, package, arch) logging.debug(f"{package}: found {version}") return version def get_package_tarball(package, arch): regex = re.compile("(.+)") tarball = get_from_regex(regex, package, arch) + f"-{arch}.pkg.tar.xz" logging.debug(f"{package}: found {tarball}") return tarball, f"{BASE_URL}/{arch}/{tarball}"