Download serve.py from starpilot-ai/starpilot-data-sample: direct link, hf CLI and curl.
- Browser
- Download file 2.39 kB
-
https://huggingface.co/spaces/starpilot-ai/starpilot-data-sample/resolve/main/serve.py
- Command line
-
hf download hf://spaces/starpilot-ai/starpilot-data-sample/serve.py
-
curl -L -o serve.py https://huggingface.co/spaces/starpilot-ai/starpilot-data-sample/resolve/main/serve.py
2.39 kB
| """Serve the sampler locally with HTTP Range support (plain `python -m http.server` can't seek videos). | |
| python serve.py [port] then open http://localhost:8000/ | |
| """ | |
| import os | |
| import re | |
| import sys | |
| from functools import partial | |
| from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer | |
| SITE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "site") | |
| class RangeHandler(SimpleHTTPRequestHandler): | |
| extensions_map = {**SimpleHTTPRequestHandler.extensions_map, ".js": "text/javascript", ".mp4": "video/mp4"} | |
| def end_headers(self): | |
| self.send_header("Accept-Ranges", "bytes") | |
| self.send_header("Cache-Control", "no-cache") | |
| super().end_headers() | |
| def send_head(self): | |
| rng = self.headers.get("Range") | |
| path = self.translate_path(self.path) | |
| if not rng or not os.path.isfile(path): | |
| return super().send_head() | |
| m = re.match(r"bytes=(\d*)-(\d*)", rng) | |
| size = os.path.getsize(path) | |
| if not m: | |
| return super().send_head() | |
| a = int(m.group(1)) if m.group(1) else max(0, size - int(m.group(2) or 0)) | |
| b = int(m.group(2)) if m.group(1) and m.group(2) else size - 1 | |
| b = min(b, size - 1) | |
| if a > b: | |
| self.send_error(416) | |
| return None | |
| f = open(path, "rb") | |
| f.seek(a) | |
| self.send_response(206) | |
| self.send_header("Content-Type", self.guess_type(path)) | |
| self.send_header("Content-Range", f"bytes {a}-{b}/{size}") | |
| self.send_header("Content-Length", str(b - a + 1)) | |
| self.end_headers() | |
| self._remaining = b - a + 1 | |
| return f | |
| def copyfile(self, src, dst): | |
| n = getattr(self, "_remaining", None) | |
| if n is None: | |
| return super().copyfile(src, dst) | |
| try: | |
| while n > 0: | |
| buf = src.read(min(1 << 16, n)) | |
| if not buf: | |
| break | |
| dst.write(buf) | |
| n -= len(buf) | |
| except (ConnectionResetError, BrokenPipeError, ConnectionAbortedError): | |
| pass | |
| def log_message(self, *a): | |
| pass | |
| if __name__ == "__main__": | |
| port = int(sys.argv[1]) if len(sys.argv) > 1 else 8000 | |
| print(f"Starpilot Sampler -> http://localhost:{port}/") | |
| ThreadingHTTPServer(("127.0.0.1", port), partial(RangeHandler, directory=SITE)).serve_forever() | |