Spaces:
Sleeping
Sleeping
| import os, io, zipfile, shutil, requests | |
| GITHUB_SOURCES = [ | |
| ("RTLucassen", "B-line_detection"), | |
| ("ljhowell", "LUS-Segmentation-RT"), | |
| ("GuoJiaqi-1020", "MeDiVLAD"), | |
| ] | |
| def _dl_and_extract(owner, repo, ref): | |
| url = f"https://github.com/{owner}/{repo}/archive/refs/heads/{ref}.zip" | |
| r = requests.get(url, timeout=60) | |
| r.raise_for_status() | |
| z = zipfile.ZipFile(io.BytesIO(r.content)) | |
| tmp = f"_tmp_{repo}" | |
| os.makedirs(tmp, exist_ok=True) | |
| z.extractall(tmp) | |
| top = [os.path.join(tmp, d) for d in os.listdir(tmp) if os.path.isdir(os.path.join(tmp, d))] | |
| if not top: | |
| raise RuntimeError(f"Could not find extracted folder for {owner}/{repo}") | |
| src = top[0] | |
| dst = os.path.join("external", repo) | |
| os.makedirs("external", exist_ok=True) | |
| if os.path.exists(dst): | |
| shutil.rmtree(dst) | |
| shutil.move(src, dst) | |
| shutil.rmtree(tmp, ignore_errors=True) | |
| return dst | |
| def fetch_upstream(): | |
| os.makedirs("external", exist_ok=True) | |
| results = {} | |
| for owner, repo in GITHUB_SOURCES: | |
| dst = os.path.join("external", repo) | |
| if os.path.isdir(dst): | |
| results[repo] = "exists" | |
| continue | |
| # try 'main' then 'master' | |
| try: | |
| _dl_and_extract(owner, repo, "main") | |
| results[repo] = "downloaded-main" | |
| except Exception: | |
| _dl_and_extract(owner, repo, "master") | |
| results[repo] = "downloaded-master" | |
| return results | |