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))] | |
| 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: | |
| if os.path.exists(os.path.join("external",repo)): results[repo]="exists"; continue | |
| 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 | |