File size: 2,604 Bytes
f53136a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0704195
 
 
 
 
f53136a
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# ============================================================
# 📄 الملف: 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()