CoolFace
Apppublic

spmoisa548/cdn-api

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
app.py56 linesDownload Raw Back to root
1import json2import os3from pathlib import Path4from http.server import BaseHTTPRequestHandler, HTTPServer5 6# ĐẶT biến này đúng bằng mount path bạn chọn trong Space Settings7MOUNT_PATH = os.getenv("BUCKET_MOUNT_PATH", "/data")8 9def scan(base: str):10    p = Path(base)11    if not p.exists():12        return {13            "exists": False,14            "path": base,15            "count": 0,16            "files": []17        }18 19    files = []20    for x in sorted(p.rglob("*")):21        if x.is_file():22            st = x.stat()23            files.append({24                "path": str(x.relative_to(p)),25                "size": st.st_size26            })27 28    return {29        "exists": True,30        "path": base,31        "count": len(files),32        "files": files33    }34 35class Handler(BaseHTTPRequestHandler):36    def do_GET(self):37        data = scan(MOUNT_PATH)38        body = json.dumps(data, ensure_ascii=False, indent=2).encode("utf-8")39 40        self.send_response(200)41        self.send_header("Content-Type", "application/json; charset=utf-8")42        self.send_header("Content-Length", str(len(body)))43        self.end_headers()44        self.wfile.write(body)45 46    def log_message(self, fmt, *args):47        print(fmt % args, flush=True)48 49if __name__ == "__main__":50    data = scan(MOUNT_PATH)51 52    print("=== BUCKET_SCAN_START ===", flush=True)53    print(json.dumps(data, ensure_ascii=False, indent=2), flush=True)54    print("=== BUCKET_SCAN_END ===", flush=True)55 56    HTTPServer(("0.0.0.0", 7860), Handler).serve_forever()