English · العربية · Español · Français · 日本語 · 한국어 · Tiếng Việt · 中文 (简体) · 中文(繁體) · Deutsch · Русский
سير عمل فيديو مدعوم بالذكاء الاصطناعي للتوليد، ومعالجة الترجمات، والبيانات الوصفية، والنشر الاختياري.
رفع أو توليد -> تفريغ -> ترجمة/تحسين -> حرق الترجمة -> تعليقات/إطارات مفتاحية -> بيانات وصفية -> نشر
لـ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
العرض أدناه يبين المسار الأساسي للمشغّل من الاستقبال إلى إنشاء البيانات الوصفية.
الصفحة الرئيسية · رفع |
الصفحة الرئيسية · توليد |
الصفحة الرئيسية · إعادة مزج |
المكتبة |
نظرة عامة على الفيديو |
معاينة الترجمة |
مواضع الحرق |
تخطيط الحرق |
الإطارات المفتاحية + التعليقات |
مولّد البيانات الوصفية |
- ✨ سير عمل التوليد المعتمد على المطالبات (Stage A/B/C) مع مسارات دمج Sora وVeo.
- 🧵 سلسلة معالجة كاملة: تفريغ -> تنقيح/ترجمة الترجمات -> حرق -> إطارات مفتاحية -> تعليقات -> بيانات وصفية.
- 🌏 تأليف ترجمات متعددة اللغات مع مسارات دعم ذات صلة بـ furigana/IPA/romaji.
- 🔌 واجهة backend أولى في API تشمل رفعًا، معالجة، تقديم وسائط، وطوابير نشر.
- 🚚 تكامل AutoPublish اختياري لتحويل العمل إلى منصات اجتماعية.
- 🖥️ تدفق backend + Expo يعمل مع سكربتات تشغيل tmux.
- المصدر الرسمي:
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 | مطلوبة للمهام الرئيسية |
- استنساخ وتهيئة submodules:
git clone git@github.com:lachlanchen/LazyEdit.git
cd LazyEdit
git submodule update --init --recursive- تفعيل بيئة Conda:
source ~/miniconda3/etc/profile.d/conda.sh
conda activate lazyedit- تثبيت اختياري على مستوى النظام (وضع الخدمة):
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 |
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).
./start_lazyedit.shالمنافذ الافتراضية لـ start_lazyedit.sh:
- Backend:
18787 - Expo web:
18791 EXPO_PUBLIC_API_URL=http://localhost:18787
الانضمام للجلسة:
tmux attach -t lazyeditإيقاف الجلسة:
./stop_lazyedit.shsudo 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 |
ترتيب التحديث الموصى به لقابلية النقل:
- انسخ
.env.exampleإلى.env. - عيّن قيم
LAZYEDIT_*الخاصة بالمسارات والـ API في.env. - عدّل
lazyedit_config.shفقط لسلوك النشر/tmux.
أمثلة 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 8091EXPO_PUBLIC_API_URL="http://10.0.2.2:8787" npx expo start --androidEXPO_PUBLIC_API_URL="http://127.0.0.1:8787" npx expo start --iospython -m agi.demo_fantasy_woman --seconds 8 --size 1280x720 --output DATA/sora_oracle_valley.mp4الثواني المدعومة: 4, 8, 12.
الأحجام المدعومة: 720x1280, 1280x720, 1024x1792, 1792x1024.
- استخدم
pythonمن بيئة Condalazyedit(لا تعتمد علىpython3النظام). - احتفظ بالوسائط الكبيرة خارج Git؛ خزّن وسائط التشغيل في
DATA/أو تخزين خارجي. - ابدأ أو حدّث submodules عندما تفشل مكونات خط المعالجة في الحل.
- أبقِ التغييرات مركزة وتجنب تعديلات التنسيق الواسعة غير المرتبطة.
- لعمل واجهة المستخدم، تحدد
EXPO_PUBLIC_API_URLعنوان backend. - CORS مفتوح في backend أثناء تطوير التطبيق.
سياسة submodule والاعتماد الخارجي:
- تعامل مع الاعتمادات الخارجية كمرتبطة بالـ upstream. في هذا المستودع، تجنب تعديل ملفات submodules ما لم تعمل عمدا في تلك المشاريع.
- التوجيه التشغيلي هنا يعتبر
furigana(وأحيانًاechomindفي بعض البيئات) كمسارات اعتماد خارجية؛ إذا لم تكن متأكدًا، احتفظ بالإصدار الأصلي وتجنب التعديلات داخلها.
مراجع مفيدة:
references/QUICKSTART.mdreferences/API_GUIDE.mdreferences/APP_GUIDE.mdreferences/DEPLOYMENT_SYSTEMS.mdreferences/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 متعدد اللغات وأوضاع النشر.
- تقوية إضافية لمسار التوليد عبر المزودات (إعادة المحاولة ووضوح الحالة).
المساهمات مرحب بها.
- Fork ثم أنشئ فرع ميزة.
- اجعل الالتزامات مركزة ونطاقية.
- تحقق محليًا (
python app.py، مسار API أساسي، وتكامل app إن كان مناسبًا). - افتح PR يحتوي الهدف، خطوات التكرار، وملاحظات قبل/بعد (لقطات شاشة للتغييرات UI).
إرشادات عملية:
- اتبع أسلوب Python (PEP 8، 4 مسافات، snake_case).
- تجنب تضمين مفاتيح/بيانات حساسة أو ملفات ضخمة.
- حدّث docs/scripts عند تغيّر السلوك.
- نمط commit المفضل: قصير، أمر مباشر ومحدود (مثل:
fix ffmpeg 7 compatibility).
LazyEdit تبني على مكتبات وخدمات مفتوحة المصدر، بما في ذلك:
- FFmpeg لمعالجة الوسائط
- Tornado لـ backend APIs
- MoviePy لمسارات التحرير
- نماذج OpenAI لمهام خط المعالجة المدعومة بالذكاء الاصطناعي
- CJKWrap وأدوات النص متعدد اللغات في سير عمل الترجمة
| Donate | PayPal | Stripe |
|---|---|---|










