Skip to content

Latest commit

 

History

History
640 lines (497 loc) · 32.5 KB

File metadata and controls

640 lines (497 loc) · 32.5 KB

English · العربية · Español · Français · 日本語 · 한국어 · Tiếng Việt · 中文 (简体) · 中文(繁體) · Deutsch · Русский

LazyingArt banner

سير عمل فيديو مدعوم بالذكاء الاصطناعي للتوليد، ومعالجة الترجمات، والبيانات الوصفية، والنشر الاختياري.
رفع أو توليد -> تفريغ -> ترجمة/تحسين -> حرق الترجمة -> تعليقات/إطارات مفتاحية -> بيانات وصفية -> نشر

License: Apache-2.0 Python 3.10+ Backend: Tornado Frontend: Expo Platform: Linux FFmpeg required PostgreSQL supported Stage A/B/C enabled AutoPublish optional i18n: 11 languages

LazyEdit

✅ حقائق سريعة

لـLazyEdit سير عمل فيديو شامل مدعوم بالذكاء الاصطناعي للإنشاء والمعالجة والنشر الاختياري. يجمع بين التوليد المبني على المطالبات (Stage A/B/C)، وواجهات معالجة الوسائط، وعرض الترجمات على الفيديو، وتعليقات الإطارات المفتاحية، وتوليد البيانات الوصفية، وتسليم المهمة إلى AutoPublish.

المعلومة السريعة القيمة
📘 README الأساسي README.md (هذا الملف)
🌐 إصدارات اللغات i18n/README.*.md (يُحافَظ عمدًا على شريط لغات واحد في الأعلى)
🧠 نقطة دخول الخلفية app.py (Tornado)
🖥️ تطبيق الواجهة app/ (Expo ويب/موبايل)

✨ نبذة عامة

LazyEdit مبني حول خلفية Tornado (app.py) وواجهة Expo (app/).

ملاحظة: إذا اختلفت تفاصيل المستودع/بيئة التشغيل باختلاف الجهاز، احتفظ بالإعدادات الافتراضية الحالية واستخدم متغيرات البيئة للتجاوز بدل حذف البدائل المخصصة للجهاز.

لماذا يستخدمه الفريق النتيجة العملية
تدفق موحّد للمشغّل رفع/توليد/إعادة مزج/نشر من سير عمل واحد
تصميم API-first سهولة كتابة السكربتات والتكامل مع أدوات أخرى
تشغيل محلي أولًا يعمل مع أنماط tmux والتشغيل عبر الخدمات
الخطوة ما يحدث
1 رفع الفيديو أو توليده
2 تفريغ النصوص وترجمة الترجمات اختياريًا
3 حرق ترجمات متعددة اللغات مع عناصر التحكم في التخطيط
4 توليد إطارات مفتاحية وتعليقات وبيانات وصفية
5 تجميع الحزمة ونشرها اختياريًا عبر AutoPublish

تركيز خط الأنابيب

  • رفع وتوليد وإعادة مزج وإدارة مكتبة الفيديو من واجهة تشغيل واحدة.
  • تدفق معالجة أولية قائم على API للتفريغ، تنقيح/ترجمة الترجمات، حرق النص، والبيانات الوصفية.
  • تكاملات اختيارية لمزودي التوليد (helpers لـ Veo / Venice / A2E / Sora في agi/).
  • تحويل النشر الاختياري عبر AutoPublish.

🎯 لمحة سريعة

المجال مضمَّن في LazyEdit الحالة
التطبيق الأساسي واجهة API بـ Tornado + واجهة Expo ويب/موبايل
خط الوسائط ASR، ترجمة/تنقيح الترجمة، حرق الترجمات، إطارات مفتاحية، تعليقات، بيانات وصفية
التوليد Stage A/B/C ومسارات مزوّد (agi/)
التوزيع تحويل لـ AutoPublish اختياري 🟡 اختياري
نموذج التشغيل سكربتات محلية أولًا، تدفقات tmux، خدمة systemd اختيارية

🏗️ لقطة معمارية

المستودع منظَّم كسلسلة وسائط تعتمد على API مع طبقة واجهة مستخدم:

  • app.py هو مدخل Tornado ومنسق المسارات لعمليات الرفع، المعالجة، التوليد، تحويل النشر، وتقديم الوسائط.
  • lazyedit/ يحتوي على مكوّنات خط المعالجة بنمط وحدات (استمرارية DB، ترجمة، حرق الترجمات، التعليقات، البيانات الوصفية، ومحولات المزودين).
  • app/ هو تطبيق Expo Router (ويب/موبايل) يدير مسارات الرفع والمعالجة والمعاينة والنشر.
  • config.py يجمع تحميل المتغيرات البيئية والمسارات الافتراضية/الاحتياطية.
  • start_lazyedit.sh وlazyedit_config.sh يوفران أنماط تشغيل محلي/نشر قابلة لإعادة الإنتاج عبر tmux.
الطبقة المسارات الرئيسية المسؤولية
API والتنسيق app.py, config.py نقاط النهاية، التوجيه، حل المتغيرات البيئية
نواة المعالجة lazyedit/, agi/ سلسلة الترجمات/التعليقات/البيانات الوصفية + مزودات الحزمة
الواجهة app/ تجربة المشغّل (ويب/موبايل عبر Expo)
سكربتات التشغيل start_lazyedit.sh, lazyedit_config.sh, install_lazyedit.sh تشغيل محلي وخدمي/إجراءات صيانة

تدفّق عالي المستوى:

Upload/Generate -> Transcribe -> Translate/Polish -> Burn Subtitles -> Keyframes/Captions -> Metadata -> Optional AutoPublish

🎬 العروض التوضيحية

العرض أدناه يبين المسار الأساسي للمشغّل من الاستقبال إلى إنشاء البيانات الوصفية.

Home upload
الصفحة الرئيسية · رفع
Home generate
الصفحة الرئيسية · توليد
Home remix
الصفحة الرئيسية · إعادة مزج
Library list
المكتبة
Video overview
نظرة عامة على الفيديو
Translation preview
معاينة الترجمة
Burn slots
مواضع الحرق
Burn layout
تخطيط الحرق
Keyframes and captions
الإطارات المفتاحية + التعليقات
Metadata generator
مولّد البيانات الوصفية

🧩 المميزات

  • ✨ سير عمل التوليد المعتمد على المطالبات (Stage A/B/C) مع مسارات دمج Sora وVeo.
  • 🧵 سلسلة معالجة كاملة: تفريغ -> تنقيح/ترجمة الترجمات -> حرق -> إطارات مفتاحية -> تعليقات -> بيانات وصفية.
  • 🌏 تأليف ترجمات متعددة اللغات مع مسارات دعم ذات صلة بـ furigana/IPA/romaji.
  • 🔌 واجهة backend أولى في API تشمل رفعًا، معالجة، تقديم وسائط، وطوابير نشر.
  • 🚚 تكامل AutoPublish اختياري لتحويل العمل إلى منصات اجتماعية.
  • 🖥️ تدفق backend + Expo يعمل مع سكربتات تشغيل tmux.

🌍 التوثيق و i18n

  • المصدر الرسمي: README.md
  • إصدارات اللغات: i18n/README.*.md
  • شريط اللغات: احرص على وجود سطر واحد فقط لشريط اختيار اللغة أعلى كل README (لا تكرارات)

إذا وُجد أي اختلاف بين الترجمة والإنجليزية، اعتبر README.md هو المصدر الرسمي، ثم حدّث كل ملف لغة على حدة.

سياسة i18n القاعدة
المصدر الرسمي الحفاظ على README.md كمصدر للحقيقة
شريط اللغات سطر واحد فقط لاختيارات اللغة

🗂️ بنية المشروع

LazyEdit/
├── app.py                           # مدخل backend لـ Tornado وتنظيم API
├── app/                             # واجهة Expo (ويب/موبايل)
├── lazyedit/                        # وحدات خط المعالجة (ترجمة، بيانات وصفية، burn، DB، قوالب)
├── agi/                             # تجريد مزودي التوليد (مسارات Sora/Veo/A2E/Venice)
├── DATA/                            # مخرجات/مدخلات الوسائط وقت التشغيل (symlink ضمن workspace)
├── translation_logs/                # سجلات الترجمة
├── temp/                            # ملفات زمنية أثناء التشغيل
├── install_lazyedit.sh              # مثبت systemd (يتوقع وجود سكربتات config/start/stop)
├── start_lazyedit.sh                # مُشغّل tmux لـ backend + Expo
├── stop_lazyedit.sh                 # مساعد إيقاف tmux
├── lazyedit_config.sh               # إعدادات shell للتشغيل/النشر
├── config.py                        # حل المتغيرات والبيئة (منافذ، مسارات، رابط autopublish)
├── .env.example                     # قالب تجاوز البيئة
├── references/                      # وثائق إضافية (دليل API، البدء السريع، ملاحظات النشر)
├── AutoPublish/                     # Submodule فرعي (pipeline نشر اختياري)
├── AutoPubMonitor/                  # Submodule فرعي (مراقبة/مزامنة تلقائية)
├── whisper_with_lang_detect/        # Submodule فرعي (ASR/VAD)
├── vit-gpt2-image-captioning/       # Submodule فرعي (مولّد التعليقات الرئيسي)
├── clip-gpt-captioning/             # Submodule فرعي (مولّد تعليقات احتياطي)
└── furigana/                        # اعتماد خارجي في سير العمل (submodule متتبع في هذا checkout)

ملاحظة حول submodules/اعتمادات خارجية:

  • تشمل Git submodules في هذا المستودع: AutoPublish, AutoPubMonitor, whisper_with_lang_detect, vit-gpt2-image-captioning, clip-gpt-captioning, وfurigana.
  • التوجيه التشغيلي يعامل furigana وechomind كاعتماد خارجي/قراءة فقط في سير عمل هذا المستودع. إذا كان هناك شك، احتفظ بالإصدار الأصلي وامتنع عن التعديل داخل مكانه.

✅ المتطلبات المسبقة

الاعتماد ملاحظات
بيئة Linux سكربتات systemd/tmux مصممة لبيئة Linux
Python 3.10+ استخدم بيئة Conda lazyedit
Node.js 20+ + npm مطلوب لتشغيل تطبيق app/
FFmpeg يجب أن يكون متاحًا في PATH
PostgreSQL اتصال محلي peer auth أو DSN
Git submodules مطلوبة للمهام الرئيسية

🚀 التثبيت

  1. استنساخ وتهيئة submodules:
 git clone git@github.com:lachlanchen/LazyEdit.git
cd LazyEdit
git submodule update --init --recursive
  1. تفعيل بيئة Conda:
source ~/miniconda3/etc/profile.d/conda.sh
conda activate lazyedit
  1. تثبيت اختياري على مستوى النظام (وضع الخدمة):
chmod +x install_lazyedit.sh
sudo ./install_lazyedit.sh /path/to/lazyedit

ملاحظات التثبيت الخدمي:

  • install_lazyedit.sh يثبت ffmpeg وtmux، ثم ينشئ lazyedit.service.
  • لا يولّد lazyedit_config.sh أو start_lazyedit.sh أو stop_lazyedit.sh؛ يجب أن تكون موجودة وصحيحة مسبقًا.

⚡ البدء السريع

تشغيل backend + frontend محليًا (المسار المبسط):

source ~/miniconda3/etc/profile.d/conda.sh
conda activate lazyedit
python app.py

في نافذة طرفية ثانية:

cd app
npm install
EXPO_PUBLIC_API_URL="http://localhost:8787" npx expo start --web --port 8091

إعداد قاعدة بيانات محلية اختياري:

createdb lazyedit_db || true
psql -d lazyedit_db -tAc "SELECT 'ok'"

ملفات الملفّات التنفيذية

الملف أمر البدء backend الافتراضي frontend الافتراضي
تطوير محلي (يدوي) python app.py + أمر Expo 8787 8091 (مثال أمر)
Orchestrated بـ tmux ./start_lazyedit.sh 18787 18791
خدمة systemd sudo systemctl start lazyedit.service بناءً على config/env غير متاح

🧭 دليل الأوامر السريع

المهمة الأمر
تهيئة submodules git submodule update --init --recursive
تشغيل backend فقط python app.py
تشغيل backend + Expo عبر tmux ./start_lazyedit.sh
إيقاف تشغيل tmux ./stop_lazyedit.sh
فتح جلسة tmux tmux attach -t lazyedit
حالة الخدمة sudo systemctl status lazyedit.service
سجلات الخدمة sudo journalctl -u lazyedit.service
فحص DB python db_smoke_test.py
فحص Pytest pytest tests/test_db_smoke.py

🛠️ طريقة الاستخدام

تطوير: backend فقط

source ~/miniconda3/etc/profile.d/conda.sh
conda activate lazyedit
python app.py

أمر بديل مستخدم في سكربتات النشر الحالية:

python app.py -m lazyedit

رابط backend الافتراضي: http://localhost:8787 (من config.py، ويمكن تجاوزه بـ PORT أو LAZYEDIT_PORT).

تطوير: backend + Expo app (tmux)

./start_lazyedit.sh

المنافذ الافتراضية لـ start_lazyedit.sh:

  • Backend: 18787
  • Expo web: 18791
  • EXPO_PUBLIC_API_URL=http://localhost:18787

الانضمام للجلسة:

tmux attach -t lazyedit

إيقاف الجلسة:

./stop_lazyedit.sh

إدارة الخدمة

sudo systemctl start lazyedit.service
sudo systemctl stop lazyedit.service
sudo systemctl status lazyedit.service
sudo journalctl -u lazyedit.service

⚙️ الإعدادات

انسخ .env.example إلى .env وحدث المسارات/الأسرار:

cp .env.example .env

ملاحظات الأولوية للإعدادات:

  • config.py يحمل قيم .env إذا وجدت ويملأ فقط المفاتيح غير المصدّرة حاليًا من الشل.
  • القيم الفعلية أثناء التشغيل قد تأتي من: متغيرات البيئة المصدرة في الشل -> .env -> القيم الافتراضية في الكود.
  • لعمليات tmux/الخدمة، يتحكم lazyedit_config.sh بمعلمات الإقلاع/الجلسة (LAZYEDIT_DIR, CONDA_ENV, APP_ARGS, المنافذ عبر متغيرات السكربت).

المتغيرات الرئيسية

المتغير الغرض القيمة الافتراضية/الاحتياطية
PORT, LAZYEDIT_PORT منفذ الخلفية 8787
LAZYEDIT_UPLOAD_DIR جذر دليل الوسائط DATA/
LAZYEDIT_DATABASE_URL, DATABASE_URL DSN PostgreSQL احتياطي DB محلي lazyedit_db
LAZYEDIT_AUTOPUBLISH_URL نقطة نهاية AutoPublish http://localhost:8081/publish
LAZYEDIT_AUTOPUBLISH_TIMEOUT مهلة طلب AutoPublish بالثواني 60
LAZYEDIT_WHISPER_SCRIPT مسار سكربت Whisper/VAD حسب البيئة
LAZYEDIT_WHISPER_MODEL, LAZYEDIT_WHISPER_FALLBACK_MODEL أسماء نماذج ASR large-v3 / large-v2 (مثال)
LAZYEDIT_CAPTION_PYTHON نسخة Python لمسار التعليق حسب البيئة
LAZYEDIT_CAPTION_PRIMARY_ROOT, LAZYEDIT_CAPTION_PRIMARY_SCRIPT المسار/السكربت الأساسي للتعليق حسب البيئة
LAZYEDIT_CAPTION_FALLBACK_SCRIPT, LAZYEDIT_CAPTION_FALLBACK_CWD سكربت fallback وcwd التعليق الاحتياطي حسب البيئة
GRSAI_API_* إعدادات تكامل Veo/GRSAI حسب البيئة
VENICE_*, A2E_* إعدادات تكامل Venice/A2E حسب البيئة
OPENAI_API_KEY مطلوب لميزات OpenAI لا شيء

ملاحظات حسب الجهاز:

  • قد يضبط app.py سلوك CUDA (استخدام CUDA_VISIBLE_DEVICES في سياق الكود).
  • بعض المسارات الافتراضية خاصة بجهاز العمل؛ استخدم تجاوزه عبر .env لإعدادات قابلة للنقل.
  • يتحكم lazyedit_config.sh بمتغيرات بدء جلسة tmux/النشر لسكربتات التشغيل.

🧾 ملفات الإعداد

الملف الغرض
.env.example قالب متغيرات البيئة المستخدمة من backend/services
.env تجاوزات محلية حسب الجهاز؛ يحمله config.py/app.py إذا موجود
config.py إعدادات خلفية الحلول وقرارات البيئة
lazyedit_config.sh ملف إعداد tmux/الخدمة (مسار النشر، بيئة Conda، app args، اسم الجلسة)
start_lazyedit.sh يشغّل backend + Expo في tmux مع المنافذ المختارة
install_lazyedit.sh ينشئ lazyedit.service ويفحص وجود scripts/settings

ترتيب التحديث الموصى به لقابلية النقل:

  1. انسخ .env.example إلى .env.
  2. عيّن قيم LAZYEDIT_* الخاصة بالمسارات والـ API في .env.
  3. عدّل lazyedit_config.sh فقط لسلوك النشر/tmux.

🔌 أمثلة API

أمثلة URL الأساسية تفترض http://localhost:8787.

مجموعة API نقاط نهاية تمثيلية
الرفع والوسائط /upload, /upload-stream, /media/*
سجلات الفيديو /api/videos, /api/videos/{id}
المعالجة /api/videos/{id}/transcribe, /translate, /burn-subtitles, /caption, /metadata, /process
النشر /api/videos/{id}/publish, /api/autopublish/queue
التوليد /api/videos/generate (+ مسارات المزود في app.py)

رفع:

curl -F "video=@/path/to/video.mp4" \
     -F "title=my_video" \
     -F "filename=video.mp4" \
     -F "source=api" \
     http://localhost:8787/upload

معالجة من النهاية إلى النهاية:

curl -X POST \
  -d "file_path=/abs/path/to/DATA/my_video/video.mp4" \
  -d "use_translation_cache=true" \
  -d "use_metadata_cache=true" \
  http://localhost:8787/video-processing

عرض قائمة الفيديوهات:

curl http://localhost:8787/api/videos

نشر الحزمة:

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"platforms":{"xiaohongshu":true,"douyin":true}}' \
  http://localhost:8787/api/videos/123/publish

المزيد من نقاط النهاية وتفاصيل الـ payload: references/API_GUIDE.md.

مجموعات النقاط ذات الصلة التي قد تستخدمها غالبًا:

  • دورة حياة الفيديو: /upload, /upload-stream, /api/videos, /api/videos/{id}, /media/*
  • أفعال المعالجة: /api/videos/{id}/transcribe, /api/videos/{id}/translate, /api/videos/{id}/burn-subtitles, /api/videos/{id}/metadata, /api/videos/{id}/caption, /api/videos/{id}/process
  • مسارات التوليد/المزود: /api/videos/generate بالإضافة لمسارات Venice/A2E المعروضة في app.py
  • النشر: /api/videos/{id}/publish, /api/autopublish/queue

🧪 الأمثلة

تشغيل الواجهة محليًا (ويب)

cd app
npm install
EXPO_PUBLIC_API_URL="http://localhost:8787" npx expo start --web --port 8091

إذا كان backend على 8887:

EXPO_PUBLIC_API_URL="http://localhost:8887" npx expo start --web --port 8091

محاكي Android

EXPO_PUBLIC_API_URL="http://10.0.2.2:8787" npx expo start --android

جهاز iOS (macOS)

EXPO_PUBLIC_API_URL="http://127.0.0.1:8787" npx expo start --ios

مساعد توليد Sora اختياري

python -m agi.demo_fantasy_woman --seconds 8 --size 1280x720 --output DATA/sora_oracle_valley.mp4

الثواني المدعومة: 4, 8, 12. الأحجام المدعومة: 720x1280, 1280x720, 1024x1792, 1792x1024.

🧪 ملاحظات التطوير

  • استخدم python من بيئة Conda lazyedit (لا تعتمد على python3 النظام).
  • احتفظ بالوسائط الكبيرة خارج Git؛ خزّن وسائط التشغيل في DATA/ أو تخزين خارجي.
  • ابدأ أو حدّث submodules عندما تفشل مكونات خط المعالجة في الحل.
  • أبقِ التغييرات مركزة وتجنب تعديلات التنسيق الواسعة غير المرتبطة.
  • لعمل واجهة المستخدم، تحدد EXPO_PUBLIC_API_URL عنوان backend.
  • CORS مفتوح في backend أثناء تطوير التطبيق.

سياسة submodule والاعتماد الخارجي:

  • تعامل مع الاعتمادات الخارجية كمرتبطة بالـ upstream. في هذا المستودع، تجنب تعديل ملفات submodules ما لم تعمل عمدا في تلك المشاريع.
  • التوجيه التشغيلي هنا يعتبر furigana (وأحيانًا echomind في بعض البيئات) كمسارات اعتماد خارجية؛ إذا لم تكن متأكدًا، احتفظ بالإصدار الأصلي وتجنب التعديلات داخلها.

مراجع مفيدة:

  • references/QUICKSTART.md
  • references/API_GUIDE.md
  • references/APP_GUIDE.md
  • references/DEPLOYMENT_SYSTEMS.md
  • references/TMUX_SESSIONS.md

نظافة الأمن/الإعداد:

  • احتفظ بمفاتيح الـ API والأسرار داخل متغيرات البيئة؛ لا تُدخِل الشهادات في الكود.
  • استخدم .env لتجاوزات محلية حسب الجهاز واترك .env.example كقالب عام.
  • إذا اختلف سلوك CUDA/GPU بين المضيفات، استخدم البيئة لتجاوز القيم بدل تثبيت قيم جهازية في الكود.

✅ الاختبار

الواجهة الرسمية للـ testing حالياً محدودة وموجّهة لقاعدة البيانات.

طبقة التحقق الأمر أو الطريقة
Smoke DB python db_smoke_test.py
فحص DB عبر Pytest pytest tests/test_db_smoke.py
مسار وظيفي واجهة الويب + تدفق API باستخدام مقطع قصير في DATA/
python db_smoke_test.py
pytest tests/test_db_smoke.py

للتحقق الوظيفي، استخدم واجهة الويب ومسار الـ API مع عينة فيديو قصيرة في DATA/.

الافتراضات وملاحظات قابلية النقل:

  • بعض المسارات الافتراضية في الكود احتياطية خاصة بمحطة العمل؛ هذا متوقع حاليًا.
  • إذا لم يوجد مسار افتراضي على جهازك، فعّل المتغير المقابل LAZYEDIT_* في .env.
  • إذا لم تكن متأكدًا من قيمة جهازية، احتفظ بالإعدادات الحالية و أضف تجاوزًا صريحًا بدل حذف القيم الافتراضية.

🧱 الافتراضات والحدود المعروفة

  • مجموعة تبعيات backend ليست مثبتة بقفل root lockfile؛ الاعتماد على الاستقرار البيئي يعتمد على إعدادات محلية.
  • app.py أحادي البنية عمليًا حالياً ويحتوي على سطح مسارات كبير.
  • أغلب التحقق التشغيلي تكاملي/يدوي (UI + API + media عينة)، مع اختبارات آلية رسمية محدودة.
  • أدلة التشغيل (DATA/, temp/, translation_logs/) هي مخرجات زمنية وقد تكبر سريعًا.
  • submodules مطلوبة للوظائف الكاملة؛ استخراج جزئي غالبًا يسبب أخطاء سكربتات مفقودة.

🚢 ملاحظات النشر والمزامنة

المسارات المعروفة الحالية وتدفق المزامنة (بحسب وثائق التشغيل):

  • مساحة العمل: /home/lachlan/ProjectsLFS/LazyEdit
  • backend + app لـ LazyEdit المنشور: /home/lachlan/DiskMech/Projects/lazyedit
  • AutoPubMonitor المنشور: /home/lachlan/DiskMech/Projects/autopub-monitor
  • منصة النشر: /home/lachlan/Projects/auto-publish على المضيف lazyingart
البيئة المسار الملاحظات
بيئة التطوير /home/lachlan/ProjectsLFS/LazyEdit المصدر الرئيسي + submodules
LazyEdit المنشور /home/lachlan/DiskMech/Projects/lazyedit tmux la-lazyedit في توثيق العمليات
AutoPubMonitor المنشور /home/lachlan/DiskMech/Projects/autopub-monitor جلسات مراقبة/مزامنة/معالجة
مضيف النشر /home/lachlan/Projects/auto-publish (lazyingart) اسحب بعد تحديث submodule

بعد دفع تغييرات AutoPublish/ من هذا المستودع، اسحبها في مضيف النشر:

ssh lachlan@lazyingart
cd ~/Projects/auto-publish
git pull github main

🧯 استكشاف الأخطاء

المشكلة فحص / إصلاح
موديولات/سكربتات pipeline مفقودة شغّل git submodule update --init --recursive
FFmpeg غير موجود ثبّت FFmpeg وتأكد أن ffmpeg -version يعمل
تعارض منافذ backend افتراضي 8787 و start_lazyedit.sh على 18787; عيّن LAZYEDIT_PORT أو PORT صراحة
Expo لا يصل لـ backend تأكد أن EXPO_PUBLIC_API_URL يشير إلى host/port backend النشط
مشاكل اتصال DB تحقق من PostgreSQL + DSN/المتغيرات؛ فحص smoke اختياري: python db_smoke_test.py
مشاكل GPU/CUDA تأكد توافق الدرايفر/CUDA مع نسخة Torch المثبتة
فشل سكربت الخدمة أثناء التثبيت تأكد أن lazyedit_config.sh وstart_lazyedit.sh وstop_lazyedit.sh موجودة قبل تشغيل المثبت

🗺️ خارطة الطريق

  • تحرير تعليقات/مقاطع الفيديو داخل التطبيق مع معاينة A/B وتحكم سطري.
  • تغطية اختبار نهاية-إلى-نهاية أقوى لتدفقات API الأساسية.
  • توحيد الوثائق بين إصدارات README متعدد اللغات وأوضاع النشر.
  • تقوية إضافية لمسار التوليد عبر المزودات (إعادة المحاولة ووضوح الحالة).

🤝 المساهمة

المساهمات مرحب بها.

  1. Fork ثم أنشئ فرع ميزة.
  2. اجعل الالتزامات مركزة ونطاقية.
  3. تحقق محليًا (python app.py، مسار API أساسي، وتكامل app إن كان مناسبًا).
  4. افتح PR يحتوي الهدف، خطوات التكرار، وملاحظات قبل/بعد (لقطات شاشة للتغييرات UI).

إرشادات عملية:

  • اتبع أسلوب Python (PEP 8، 4 مسافات، snake_case).
  • تجنب تضمين مفاتيح/بيانات حساسة أو ملفات ضخمة.
  • حدّث docs/scripts عند تغيّر السلوك.
  • نمط commit المفضل: قصير، أمر مباشر ومحدود (مثل: fix ffmpeg 7 compatibility).

📄 الترخيص

Apache-2.0

🙏 الشكر والتقدير

LazyEdit تبني على مكتبات وخدمات مفتوحة المصدر، بما في ذلك:

  • FFmpeg لمعالجة الوسائط
  • Tornado لـ backend APIs
  • MoviePy لمسارات التحرير
  • نماذج OpenAI لمهام خط المعالجة المدعومة بالذكاء الاصطناعي
  • CJKWrap وأدوات النص متعدد اللغات في سير عمل الترجمة

❤️ Support

Donate PayPal Stripe
Donate PayPal Stripe