Spaces:
Running
Running
| #!/usr/bin/env python3 | |
| """Nuclear Intelligence - HuggingFace & GitHub Sync""" | |
| import os, sys, json | |
| from pathlib import Path | |
| sys.path.insert(0, str(Path(__file__).parent.parent)) | |
| from loguru import logger | |
| try: | |
| from huggingface_hub import HfApi, create_repo | |
| except ImportError: | |
| logger.warning("huggingface_hub not installed") | |
| sys.exit(0) | |
| def sync_huggingface(): | |
| logger.info("Starting HF sync...") | |
| hf_token = os.getenv("HF_TOKEN") or os.getenv("HUGGINGFACE_API_KEY") | |
| if not hf_token or hf_token in ("", "hf_placeholder"): | |
| logger.warning("HF_TOKEN not set, skipping") | |
| return 0 | |
| try: | |
| api = HfApi(token=hf_token) | |
| user = api.whoami() | |
| logger.info(f"Authenticated as: {user['name']}") | |
| dataset_repo = "Qalam/nuclear-intelligence-dataset" | |
| try: | |
| create_repo(repo_id=dataset_repo, repo_type="dataset", token=hf_token, exist_ok=True) | |
| except Exception as e: | |
| logger.warning(f"Repo creation: {e}") | |
| reports_dir = Path(__file__).parent.parent / "reports" | |
| kb_dir = Path(__file__).parent.parent / "knowledge_base" | |
| for report_file in sorted(reports_dir.glob("cycle_*.json"))[-10:]: | |
| try: | |
| api.upload_file(path_or_fileobj=str(report_file), path_in_repo=f"reports/{report_file.name}", | |
| repo_id=dataset_repo, repo_type="dataset") | |
| logger.info(f"Uploaded: {report_file.name}") | |
| except Exception as e: | |
| logger.warning(f"Failed: {report_file.name}: {e}") | |
| kg_file = kb_dir / "knowledge_graph.json" | |
| if kg_file.exists(): | |
| try: | |
| api.upload_file(path_or_fileobj=str(kg_file), path_in_repo="knowledge_graph.json", | |
| repo_id=dataset_repo, repo_type="dataset") | |
| logger.info("KG uploaded") | |
| except: pass | |
| logger.info("HF sync completed!") | |
| return 0 | |
| except Exception as e: | |
| logger.error(f"HF sync error: {e}") | |
| return 1 | |
| def sync_github(): | |
| logger.info("Starting GitHub sync...") | |
| token = os.getenv("GITHUB_TOKEN") | |
| if not token or token == "ghp_placeholder": | |
| logger.warning("GITHUB_TOKEN not set, skipping") | |
| return 0 | |
| try: | |
| from github import Github | |
| g = Github(token) | |
| repo = g.get_repo(os.getenv("GITHUB_REPO", "QalamHipHop/nuclear-intelligence")) | |
| reports_dir = Path(__file__).parent.parent / "reports" | |
| for report_file in sorted(reports_dir.glob("cycle_*.json"))[-5:]: | |
| try: | |
| content = report_file.read_text() | |
| path = f"reports/{report_file.name}" | |
| try: | |
| existing = repo.get_contents(path) | |
| repo.update_file(path, f"Update {report_file.name}", content, existing.sha) | |
| except: | |
| repo.create_file(path, f"Add {report_file.name}", content) | |
| logger.info(f"Synced: {path}") | |
| except Exception as e: | |
| logger.warning(f"Failed: {report_file.name}: {e}") | |
| logger.info("GitHub sync completed!") | |
| return 0 | |
| except ImportError: | |
| logger.warning("PyGithub not installed") | |
| return 0 | |
| except Exception as e: | |
| logger.error(f"GitHub sync error: {e}") | |
| return 1 | |
| if __name__ == "__main__": | |
| result = 0 | |
| result |= sync_huggingface() | |
| result |= sync_github() | |
| sys.exit(result) | |