# ============================================================ # 📄 الملف: 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()