| import argparse |
| import json |
| import os |
| import sys |
| import tempfile |
| from huggingface_hub import HfApi |
|
|
|
|
| def main() -> int: |
| parser = argparse.ArgumentParser() |
| parser.add_argument("--repo", required=True, help="np. Lurre/vantura-map-data") |
| parser.add_argument("--local-file", required=True, help="np. /data/valhalla_tiles.tar.gz") |
| parser.add_argument("--path-in-repo", required=True, help="np. valhalla_tiles.tar.gz") |
| parser.add_argument("--meta-path-in-repo", required=True, help="np. valhalla_tiles.meta.json") |
| parser.add_argument("--generated-at", required=True, help="ISO UTC, np. 2026-03-19T02:15:00Z") |
| args = parser.parse_args() |
|
|
| token = os.environ.get("HF_TOKEN") |
| if not token: |
| print("Brak HF_TOKEN w env.", file=sys.stderr) |
| return 1 |
|
|
| if not os.path.isfile(args.local_file): |
| print(f"Plik nie istnieje: {args.local_file}", file=sys.stderr) |
| return 1 |
|
|
| api = HfApi(token=token) |
| api.create_repo(repo_id=args.repo, repo_type="dataset", exist_ok=True) |
|
|
| api.upload_file( |
| path_or_fileobj=args.local_file, |
| path_in_repo=args.path_in_repo, |
| repo_id=args.repo, |
| repo_type="dataset", |
| token=token, |
| ) |
|
|
| meta_payload = {"generated_at": args.generated_at} |
| with tempfile.NamedTemporaryFile("w", delete=False, suffix=".json", encoding="utf-8") as tmp: |
| json.dump(meta_payload, tmp, ensure_ascii=False, indent=2) |
| tmp_path = tmp.name |
|
|
| try: |
| api.upload_file( |
| path_or_fileobj=tmp_path, |
| path_in_repo=args.meta_path_in_repo, |
| repo_id=args.repo, |
| repo_type="dataset", |
| token=token, |
| ) |
| finally: |
| try: |
| os.remove(tmp_path) |
| except OSError: |
| pass |
|
|
| print(f"Wysłano mapę i metadane do {args.repo}") |
| return 0 |
|
|
|
|
| if __name__ == "__main__": |
| raise SystemExit(main()) |