Spaces:
Paused
Paused
Update app.py
#3
by Asem75 - opened
app.py
CHANGED
|
@@ -2,94 +2,50 @@ import gradio as gr
|
|
| 2 |
import os
|
| 3 |
from datetime import datetime
|
| 4 |
from huggingface_hub import HfApi, CommitOperationAdd
|
| 5 |
-
from docx import Document
|
| 6 |
-
from reportlab.pdfgen import canvas
|
| 7 |
-
import pandas as pd
|
| 8 |
|
| 9 |
-
# ---
|
| 10 |
REPO_ID = "Asem75/AiOCR_asistant"
|
| 11 |
TOKEN_NAME = "AIOCR_KEY"
|
| 12 |
HF_TOKEN = os.environ.get(TOKEN_NAME)
|
| 13 |
-
RAW_PATH = "raw_under_score_files"
|
| 14 |
-
COMM_VAULT = "communication_vault"
|
| 15 |
api = HfApi()
|
| 16 |
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
if not key_name: return "⚠️ المفتاح مطلوب!"
|
| 22 |
ts = datetime.now().strftime("%Y%m%d_%H%M%S")
|
| 23 |
-
|
|
|
|
|
|
|
|
|
|
| 24 |
|
| 25 |
try:
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
path_in_repo=f"{
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
# تجهيز اللوج (في نفس العملية)
|
| 34 |
-
log_data = f"Action: Upload\nUser: {key_name}\nTime: {ts}".encode("utf-8")
|
| 35 |
-
operations.append(CommitOperationAdd(
|
| 36 |
-
path_in_repo=f"{COMM_VAULT}/LOG_{safe_key}_{ts}.txt",
|
| 37 |
-
path_or_fileobj=log_data
|
| 38 |
-
))
|
| 39 |
-
|
| 40 |
-
# تنفيذ الرفع الرسمي (يستهلك 1 فقط من الرصيد)
|
| 41 |
api.create_commit(
|
| 42 |
repo_id=REPO_ID,
|
| 43 |
operations=operations,
|
| 44 |
-
commit_message=
|
| 45 |
repo_type="dataset",
|
| 46 |
token=HF_TOKEN
|
| 47 |
)
|
| 48 |
-
return "
|
| 49 |
except Exception as e:
|
| 50 |
-
return f"❌ خطأ: {str(e)}"
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
return gr.update(choices=[]), "❌ فشل الاتصال بالخزنة."
|
| 62 |
-
|
| 63 |
-
# --- [3] الواجهة (UI) الموفرة للطاقة ---
|
| 64 |
-
|
| 65 |
-
with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
| 66 |
-
gr.Markdown("# 🛡️ AiOCR Assistant V1 Pro (Smart Mode)")
|
| 67 |
-
|
| 68 |
-
with gr.Tabs():
|
| 69 |
-
# التبويب 1: الرفع
|
| 70 |
-
with gr.TabItem("📥 بوابة الرفع", id=0):
|
| 71 |
-
with gr.Row():
|
| 72 |
-
key_in = gr.Textbox(label="🔑 المفتاح الخاص")
|
| 73 |
-
file_in = gr.File(label="📄 المستند")
|
| 74 |
-
manual_in = gr.Textbox(label="✍️ نص يدوي", lines=4)
|
| 75 |
-
up_btn = gr.Button("🚀 إرسال للخزنة", variant="primary")
|
| 76 |
-
up_stat = gr.Textbox(label="📡 الحالة")
|
| 77 |
-
up_btn.click(upload_and_log_optimized, inputs=[key_in, file_in, manual_in], outputs=up_stat)
|
| 78 |
-
|
| 79 |
-
# التبويب 2: الرادار اليدوي
|
| 80 |
-
with gr.TabItem("📂 ملفاتي", id=1):
|
| 81 |
-
with gr.Row():
|
| 82 |
-
file_list = gr.Dropdown(label="🔍 رادار الملفات (اضغط تحديث للرؤية)")
|
| 83 |
-
ref_btn = gr.Button("🔄 تحديث يدوي", scale=0)
|
| 84 |
-
editor = gr.Textbox(label="📝 المحرر", lines=12)
|
| 85 |
-
ref_btn.click(get_file_list, inputs=key_in, outputs=[file_list, up_stat])
|
| 86 |
-
|
| 87 |
-
# التبويب 3: التحويل
|
| 88 |
-
with gr.TabItem("📚 مكتبة التحويل", id=2):
|
| 89 |
-
fmt_choice = gr.Radio(["PDF", "DOCX", "XLSX", "TXT"], label="الصيغة", value="PDF")
|
| 90 |
-
go_btn = gr.Button("📩 تحميل للجهاز", variant="primary")
|
| 91 |
-
out_f = gr.File(label="الملف الجاهز")
|
| 92 |
-
# محرك تحويل بسيط للعرض
|
| 93 |
-
go_btn.click(lambda x: None, inputs=editor, outputs=out_f)
|
| 94 |
|
| 95 |
demo.launch()
|
|
|
|
| 2 |
import os
|
| 3 |
from datetime import datetime
|
| 4 |
from huggingface_hub import HfApi, CommitOperationAdd
|
|
|
|
|
|
|
|
|
|
| 5 |
|
| 6 |
+
# --- الإعدادات (تأكد من مطابقة الاسم الجديد) ---
|
| 7 |
REPO_ID = "Asem75/AiOCR_asistant"
|
| 8 |
TOKEN_NAME = "AIOCR_KEY"
|
| 9 |
HF_TOKEN = os.environ.get(TOKEN_NAME)
|
|
|
|
|
|
|
| 10 |
api = HfApi()
|
| 11 |
|
| 12 |
+
def fresh_start_upload(key_name, manual_text):
|
| 13 |
+
if not key_name: return "⚠️ أدخل المفتاح"
|
| 14 |
+
|
| 15 |
+
clean_key = "".join(filter(str.isalnum, key_name))
|
|
|
|
| 16 |
ts = datetime.now().strftime("%Y%m%d_%H%M%S")
|
| 17 |
+
|
| 18 |
+
# بناء المسار النظيف للمستودع الجديد
|
| 19 |
+
raw_path = f"raw_under_score_files/{clean_key}_{ts}.txt"
|
| 20 |
+
log_path = f"communication_vault/LOG_{clean_key}_{ts}.txt"
|
| 21 |
|
| 22 |
try:
|
| 23 |
+
content = manual_text.encode("utf-8") if manual_text else b"New Start Content"
|
| 24 |
+
|
| 25 |
+
operations = [
|
| 26 |
+
CommitOperationAdd(path_in_repo=raw_path, path_or_fileobj=content),
|
| 27 |
+
CommitOperationAdd(path_in_repo=log_path, path_or_fileobj=f"Init: {ts}".encode("utf-8"))
|
| 28 |
+
]
|
| 29 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
api.create_commit(
|
| 31 |
repo_id=REPO_ID,
|
| 32 |
operations=operations,
|
| 33 |
+
commit_message="Fresh start - New structure",
|
| 34 |
repo_type="dataset",
|
| 35 |
token=HF_TOKEN
|
| 36 |
)
|
| 37 |
+
return f"✅ مبروك! الخزنة الجديدة استقبلت أول ملف في المجلد الصحيح."
|
| 38 |
except Exception as e:
|
| 39 |
+
return f"❌ خطأ في الخزنة الجديدة: {str(e)}"
|
| 40 |
+
|
| 41 |
+
# واجهة بسيطة للتأكد من نجاح "البداية الجديدة"
|
| 42 |
+
with gr.Blocks() as demo:
|
| 43 |
+
gr.Markdown("# 🔄 نظام إعادة التأسيس | AiOCR")
|
| 44 |
+
with gr.Row():
|
| 45 |
+
k = gr.Textbox(label="المفتاح")
|
| 46 |
+
t = gr.Textbox(label="نص التجربة الأولى")
|
| 47 |
+
btn = gr.Button("🚀 تدشين الخزنة الجديدة", variant="primary")
|
| 48 |
+
out = gr.Textbox(label="الحالة")
|
| 49 |
+
btn.click(fresh_start_upload, inputs=[k, t], outputs=out)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
|
| 51 |
demo.launch()
|