shahad altamimi
جعل الواجهة والأصول ديناميكية (تدعم أي عدد نماذج) — تمهيد لإضافة نماذج
0704195
Raw
History Blame Contribute Delete
2.6 kB
# ============================================================
# 📄 الملف: 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()