Update app.py
Browse files
app.py
CHANGED
|
@@ -39,7 +39,7 @@ st.title("🛠️ ابزارهای مدیریت اسپیس هاگینگفیس
|
|
| 39 |
tab1, tab2 = st.tabs(["🔄 انتقال به گیتهاب", "📦 دانلود اسپیس (فایل ZIP)"])
|
| 40 |
|
| 41 |
# ---------------------------------------------------------
|
| 42 |
-
# تب اول: انتقال به گیتهاب (پشتیبانی از لینک و فایل زیپ)
|
| 43 |
# ---------------------------------------------------------
|
| 44 |
with tab1:
|
| 45 |
st.info("منبع خود را برای انتقال به گیتهاب انتخاب کنید:")
|
|
@@ -96,6 +96,20 @@ with tab1:
|
|
| 96 |
os.makedirs(temp_dir, exist_ok=True)
|
| 97 |
with zipfile.ZipFile(uploaded_zip, 'r') as zip_ref:
|
| 98 |
zip_ref.extractall(temp_dir)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 99 |
|
| 100 |
# مرحله 2: عملیات گیت و پوش
|
| 101 |
os.chdir(temp_dir)
|
|
@@ -115,7 +129,7 @@ with tab1:
|
|
| 115 |
push_success, push_msg = run_command(f"git push -f {auth_gh_url} main")
|
| 116 |
|
| 117 |
if push_success:
|
| 118 |
-
st.success("✅ تمام شد! فایلها
|
| 119 |
st.balloons()
|
| 120 |
else:
|
| 121 |
clean_error = push_msg.replace(gh_token, "***")
|
|
|
|
| 39 |
tab1, tab2 = st.tabs(["🔄 انتقال به گیتهاب", "📦 دانلود اسپیس (فایل ZIP)"])
|
| 40 |
|
| 41 |
# ---------------------------------------------------------
|
| 42 |
+
# تب اول: انتقال به گیتهاب (پشتیبانی از لینک و فایل زیپ + حل مشکل پوشه اضافه)
|
| 43 |
# ---------------------------------------------------------
|
| 44 |
with tab1:
|
| 45 |
st.info("منبع خود را برای انتقال به گیتهاب انتخاب کنید:")
|
|
|
|
| 96 |
os.makedirs(temp_dir, exist_ok=True)
|
| 97 |
with zipfile.ZipFile(uploaded_zip, 'r') as zip_ref:
|
| 98 |
zip_ref.extractall(temp_dir)
|
| 99 |
+
|
| 100 |
+
# بررسی و رفع مشکل پوشه اضافه (انتقال محتویات به روت اصلی)
|
| 101 |
+
# پوشههای سیستمی مک را نادیده میگیریم تا اختلال ایجاد نکنند
|
| 102 |
+
extracted_items = [item for item in os.listdir(temp_dir) if item != '__MACOSX']
|
| 103 |
+
|
| 104 |
+
# اگر فقط یک پوشه در مسیر وجود داشت
|
| 105 |
+
if len(extracted_items) == 1:
|
| 106 |
+
single_folder_path = os.path.join(temp_dir, extracted_items[0])
|
| 107 |
+
if os.path.isdir(single_folder_path):
|
| 108 |
+
# تمام فایلهای داخل آن پوشه را یک سطح بالاتر (به روت) منتقل میکنیم
|
| 109 |
+
for item in os.listdir(single_folder_path):
|
| 110 |
+
shutil.move(os.path.join(single_folder_path, item), temp_dir)
|
| 111 |
+
# پوشه خالی باقیمانده را حذف میکنیم
|
| 112 |
+
os.rmdir(single_folder_path)
|
| 113 |
|
| 114 |
# مرحله 2: عملیات گیت و پوش
|
| 115 |
os.chdir(temp_dir)
|
|
|
|
| 129 |
push_success, push_msg = run_command(f"git push -f {auth_gh_url} main")
|
| 130 |
|
| 131 |
if push_success:
|
| 132 |
+
st.success("✅ تمام شد! فایلها دقیقاً در روت ریپازیتوری منتقل شدند.")
|
| 133 |
st.balloons()
|
| 134 |
else:
|
| 135 |
clean_error = push_msg.replace(gh_token, "***")
|