Spaces:
Running
Running
| # ============================================================ | |
| # 📄 الملف: scripts/upload_assets.py | |
| # 🎯 الغرض: رفع الملفات الكبيرة إلى مستودع Hugging Face Hub (مرة واحدة). | |
| # | |
| # يرفع: data/embeddings/ (المتجهات) + data/processed/data.csv (البيانات) | |
| # + models/ksaa_custom/ (النموذج الثالث المحلي). | |
| # النموذجان الأول والثاني يُنزَّلان تلقائيًا من HuggingFace فلا يُرفعان. | |
| # بعدها يقدر التطبيق المنشور ينزّل هذي الملفات تلقائيًا. | |
| # | |
| # قبل التشغيل: | |
| # 1) سجّلي دخول HF مرة واحدة: huggingface-cli login | |
| # (أو صدّري التوكن: export HF_TOKEN=hf_xxx) | |
| # 2) حدّدي اسم المستودع: export HF_DATA_REPO="username/repo-name" | |
| # | |
| # ثم (من داخل مجلد backend): | |
| # python scripts/upload_assets.py | |
| # ============================================================ | |
| import os | |
| import sys | |
| from pathlib import Path | |
| sys.path.append(str(Path(__file__).resolve().parent.parent)) | |
| import config | |
| from huggingface_hub import HfApi, create_repo | |
| def main(): | |
| repo = os.getenv("HF_DATA_REPO") | |
| if not repo: | |
| raise SystemExit("❌ حدّدي المستودع أولًا: export HF_DATA_REPO=\"username/repo\"") | |
| print(f"📦 المستودع: {repo}") | |
| create_repo(repo, repo_type="model", exist_ok=True) | |
| api = HfApi() | |
| # 1) الـ embeddings | |
| print("⏫ رفع data/embeddings/ ...") | |
| api.upload_folder(folder_path=str(config.EMBEDDINGS_DIR), | |
| path_in_repo="data/embeddings", | |
| repo_id=repo, repo_type="model") | |
| # 2) البيانات المنظّفة | |
| print("⏫ رفع data/processed/data.csv ...") | |
| api.upload_file(path_or_fileobj=str(config.PROCESSED_DATA_PATH), | |
| path_in_repo="data/processed/data.csv", | |
| repo_id=repo, repo_type="model") | |
| # 3) كل النماذج المحلية (الثالث وأي نموذج محلي إضافي) — مجلد models/ كامل | |
| models_dir = config.BASE_DIR / "models" | |
| print("⏫ رفع models/ ...") | |
| api.upload_folder(folder_path=str(models_dir), | |
| path_in_repo="models", | |
| repo_id=repo, repo_type="model") | |
| print(f"✅ تم الرفع. اجعلي المستودع عامًّا (Public) من إعداداته على HF.") | |
| print(f" ثم في أسرار Streamlit Cloud: HF_DATA_REPO = \"{repo}\"") | |
| if __name__ == "__main__": | |
| main() | |