الانتقال إلى المحتوى الرئيسي
ستتناول هذه المقالة توضيح تكامل واجهة برمجة تطبيقات فيديوهات Midjourney، والتي يمكن من خلالها إدخال معلمات مخصصة لتوليد فيديوهات رسمية من Midjourney.

عملية التقديم

لاستخدام واجهة برمجة التطبيقات، يجب أولاً الذهاب إلى صفحة واجهة برمجة تطبيقات فيديوهات Midjourney لتقديم طلب الخدمة المناسبة، بعد الدخول إلى الصفحة، انقر على زر “Acquire”، كما هو موضح في الصورة: إذا لم تكن قد قمت بتسجيل الدخول أو التسجيل بعد، سيتم تحويلك تلقائيًا إلى صفحة تسجيل الدخول لدعوتك للتسجيل وتسجيل الدخول، بعد تسجيل الدخول أو التسجيل، سيتم العودة تلقائيًا إلى الصفحة الحالية. عند التقديم لأول مرة، سيكون هناك حد مجاني متاح، يمكنك استخدام واجهة برمجة التطبيقات مجانًا.

الاستخدام الأساسي

أولاً، يجب أن نفهم طريقة الاستخدام الأساسية، وهي إدخال كلمة التلميح prompt، وسلوك التوليد action، ومصفوفة صور الإطار الأول والأخير image_url، للحصول على النتيجة المعالجة، يجب أولاً تمرير حقل action ببساطة، حيث تكون قيمته generate، والتي تتضمن نوعين من السلوك: توليد فيديو (generate)، توسيع فيديو (extend)، المحتوى المحدد كما يلي:

يمكنك أن ترى هنا أننا قمنا بتعيين رؤوس الطلب، بما في ذلك:
  • accept: نوع الاستجابة التي ترغب في تلقيها، هنا يتم ملؤها بـ application/json، أي بتنسيق JSON.
  • authorization: مفتاح واجهة برمجة التطبيقات، بعد التقديم يمكنك اختياره مباشرة من القائمة المنسدلة.
بالإضافة إلى ذلك، تم تعيين جسم الطلب، بما في ذلك:
  • image_url: رابط صورة الإطار الأول المرجعية لتوليد الفيديو.
  • end_image_url: اختياري، يحدد صورة الإطار الأخير المرجعية لتوليد الفيديو.
  • video_id: يجب تحديد معرف الفيديو عند توسيع الفيديو.
  • video_index: يجب تحديد أي فيديو من video_id عند توسيع الفيديو، يبدأ الفهرس من 0، والقيمة الافتراضية هي 0.
  • action: سلوك مهمة توليد الفيديو هذه، والتي تتضمن نوعين من السلوك، وهما: توليد فيديو (generate)، توسيع فيديو (extend).
  • prompt: كلمة التلميح.
  • mode: وضع سرعة توليد الفيديو، القيمة الافتراضية هي fast.
  • resolution: دقة الفيديو، القيمة الافتراضية هي 720p.
  • loop: هل يجب توليد فيديو متكرر، القيمة الافتراضية هي false.
  • callback_url: URL الذي يحتاج إلى استدعاء النتائج.
بعد الاختيار، يمكنك أن ترى أن الكود المقابل قد تم توليده على الجانب الأيمن، كما هو موضح في الصورة:

انقر على زر “Try” لإجراء اختبار، كما هو موضح في الصورة أعلاه، هنا حصلنا على النتيجة التالية:
{
  "image_url": "https://storage.fonedis.cc/upload_1751816808164156352.png",
  "image_width": 560,
  "image_height": 688,
  "progress": 100,
  "video_id": "1751816807896311",
  "video_urls": [
    "https://storage.fonedis.cc//video/1c67c36c-8177-4f19-ad72-1dc1567265a6/0_0.mp4",
    "https://storage.fonedis.cc//video/1c67c36c-8177-4f19-ad72-1dc1567265a6/0_1.mp4",
    "https://storage.fonedis.cc//video/1c67c36c-8177-4f19-ad72-1dc1567265a6/0_2.mp4",
    "https://storage.fonedis.cc//video/1c67c36c-8177-4f19-ad72-1dc1567265a6/0_3.mp4"
  ],
  "task_id": "037955e0-deee-4050-baa8-1416300d67e2",
  "success": true
}
تتضمن النتيجة العائدة عدة حقول، كما هو موضح أدناه:
  • success: حالة مهمة توليد الفيديو في ذلك الوقت.
  • task_id: معرف مهمة توليد الفيديو في ذلك الوقت.
  • image_url: صورة الغلاف لمهمة توليد الفيديو في ذلك الوقت.
  • image_width: عرض صورة الغلاف لمهمة توليد الفيديو في ذلك الوقت.
  • image_height: ارتفاع صورة الغلاف لمهمة توليد الفيديو في ذلك الوقت.
  • video_id: معرف الفيديو لمهمة توليد الفيديو في ذلك الوقت.
  • video_urls: مصفوفة روابط الفيديو لمهمة توليد الفيديو في ذلك الوقت.
يمكنك أن ترى أننا حصلنا على معلومات الفيديو المرضية، كل ما علينا هو الحصول على الفيديو الناتج من خلال رابط الفيديو في video_urls. بالإضافة إلى ذلك، إذا كنت ترغب في توليد كود التكامل المقابل، يمكنك نسخه مباشرة، على سبيل المثال، كود CURL كما يلي:
curl -X POST 'https://api.acedata.cloud/midjourney/videos' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "generate",
  "prompt": "A cat sitting on a table",
  "image_url": "https://cdn.acedata.cloud/jgo1cw.jpg"
}'

وظيفة توسيع الفيديو

إذا كنت ترغب في الاستمرار في توليد فيديو Kling الذي تم إنشاؤه بالفعل، يمكنك تعيين المعلمة action إلى extend، وإدخال معرف الفيديو الذي تحتاج إلى الاستمرار في توليده، يتم الحصول على معرف الفيديو بناءً على الاستخدام الأساسي. في هذه الحالة، يمكنك أن ترى أن معرف الفيديو في الفيديو السابق هو:
"video_id": "1751816807896311"
ملاحظة: هنا، video_id في الفيديو هو معرف الفيديو بعد التوليد، إذا كنت لا تعرف كيفية توليد الفيديو، يمكنك الرجوع إلى الاستخدام الأساسي المذكور أعلاه لتوليد الفيديو.
بعد ذلك، يجب علينا ملء كلمة التلميح التي نحتاج إلى توسيعها لتخصيص توليد الفيديو، ويمكنك تحديد المحتوى كما يلي:
  • video_index: تحديد فهرس الفيديو الذي سيتم توسيعه، هذا الفهرس هو من video_urls التي تم إنشاؤها سابقًا، يبدأ الفهرس من 0، والقيمة الافتراضية هي 0.
  • video_id: معرف الفيديو المحدد للتوسيع.
  • action: سلوك توسيع الفيديو في هذه المرة، وهو extend.
  • prompt: كلمة التلميح.
مثال على كيفية ملء البيانات كما يلي:

بعد ملء البيانات، تم توليد الكود تلقائيًا كما يلي:

الكود المقابل بلغة Python:
import requests

url = "https://api.acedata.cloud/midjourney/videos"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "extend",
    "prompt": "A cat sitting on a table",
    "video_id": "1751816807896311",
    "video_index": 1
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
عند النقر على التشغيل، يمكنك أن ترى أنك ستحصل على نتيجة، كما يلي:
{
    "image_url": "https://storage.fonedis.cc/upload_1751817471047011172.png",
    "image_width": 560,
    "image_height": 688,
    "progress": 100,
    "video_id": "1751818094559027",
    "video_urls": [
        "https://storage.fonedis.cc//video/a4bd2f43-b925-462d-9725-8aef98403133/0_0.mp4",
        "https://storage.fonedis.cc//video/a4bd2f43-b925-462d-9725-8aef98403133/0_1.mp4",
        "https://storage.fonedis.cc//video/a4bd2f43-b925-462d-9725-8aef98403133/0_2.mp4",
        "https://storage.fonedis.cc//video/a4bd2f43-b925-462d-9725-8aef98403133/0_3.mp4"
    ],
    "task_id": "da3bdcd0-9c21-4b40-877a-2c36e5f479e5",
    "success": true
}
يمكن ملاحظة أن محتوى النتيجة متسق مع ما سبق، مما يحقق وظيفة توسيع الفيديو.

استدعاء غير متزامن

نظرًا لأن وقت توليد API لمقاطع فيديو Midjourney طويل نسبيًا، حيث يحتاج حوالي 1-2 دقيقة، إذا لم يكن هناك استجابة لفترة طويلة، ستظل طلبات HTTP متصلة، مما يؤدي إلى استهلاك موارد النظام الإضافية، لذا فإن هذه API توفر أيضًا دعم الاستدعاء غير المتزامن. العملية العامة هي: عندما يقوم العميل بإرسال الطلب، يحدد حقل callback_url إضافي، بعد أن يقوم العميل بإرسال طلب API، ستقوم API على الفور بإرجاع نتيجة تحتوي على معلومات حقل task_id، التي تمثل معرف المهمة الحالية. عند الانتهاء من المهمة، سيتم إرسال نتيجة توليد الفيديو إلى callback_url المحدد من قبل العميل عبر POST JSON، والتي تتضمن أيضًا حقل task_id، بحيث يمكن ربط نتيجة المهمة من خلال المعرف. دعونا نفهم كيفية القيام بذلك من خلال مثال. أولاً، استدعاء Webhook هو خدمة يمكنها استقبال طلبات HTTP، يجب على المطور استبدالها بعنوان URL الخاص بخادم HTTP الذي قام بإنشائه. هنا، لتسهيل العرض، نستخدم موقع Webhook عام https://webhook.site/، بفتح هذا الموقع يمكنك الحصول على عنوان URL لـ Webhook، كما هو موضح في الصورة:

قم بنسخ هذا العنوان URL، يمكنك استخدامه كـ Webhook، والعينة هنا هي https://webhook.site/556e6971-b41f-4fa8-9151-6e91acd0399f. بعد ذلك، يمكننا تعيين حقل callback_url إلى عنوان URL الخاص بـ Webhook المذكور أعلاه، مع ملء المعلمات المناسبة، كما هو موضح في الصورة:

عند النقر على التشغيل، يمكنك أن تلاحظ أنك ستحصل على نتيجة على الفور، كما يلي:
{
  "task_id": "b726a27a-f379-4d91-b569-cfe4b7b299ee"
}
بعد لحظة، يمكننا ملاحظة نتيجة توليد الفيديو على https://webhook.site/556e6971-b41f-4fa8-9151-6e91acd0399f، كما هو موضح في الصورة:

المحتوى كما يلي:
{
  "image_url": "https://storage.fonedis.cc/upload_1751818513244368774.png",
  "image_width": 560,
  "image_height": 688,
  "progress": 100,
  "video_id": "1751818512924054",
  "video_urls": [
    "https://storage.fonedis.cc//video/9ff3783e-bcf6-4f11-b738-09aa52318e6e/0_0.mp4",
    "https://storage.fonedis.cc//video/9ff3783e-bcf6-4f11-b738-09aa52318e6e/0_1.mp4",
    "https://storage.fonedis.cc//video/9ff3783e-bcf6-4f11-b738-09aa52318e6e/0_2.mp4",
    "https://storage.fonedis.cc//video/9ff3783e-bcf6-4f11-b738-09aa52318e6e/0_3.mp4"
  ],
  "task_id": "b726a27a-f379-4d91-b569-cfe4b7b299ee",
  "success": true
}
يمكنك أن ترى أن النتيجة تحتوي على حقل task_id، وجميع الحقول الأخرى مشابهة لما سبق، من خلال هذا الحقل يمكن تحقيق ربط المهام.

معالجة الأخطاء

عند استدعاء API، إذا واجهت خطأ، ستقوم API بإرجاع رمز الخطأ والمعلومات المناسبة. على سبيل المثال:
  • 400 token_mismatched: طلب غير صحيح، ربما بسبب معلمات مفقودة أو غير صالحة.
  • 400 api_not_implemented: طلب غير صحيح، ربما بسبب معلمات مفقودة أو غير صالحة.
  • 401 invalid_token: غير مصرح، رمز تفويض غير صالح أو مفقود.
  • 429 too_many_requests: عدد كبير جدًا من الطلبات، لقد تجاوزت الحد الأقصى لمعدل الطلبات.
  • 500 api_error: خطأ داخلي في الخادم، حدث خطأ ما على الخادم.

مثال على استجابة الخطأ

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

الخاتمة

من خلال هذه الوثيقة، لقد فهمت كيفية استخدام API لمقاطع فيديو Midjourney من خلال إدخال كلمات التلميح وصورة الإطار الأول لتوليد الفيديو. نأمل أن تساعدك هذه الوثيقة في التوصيل والاستخدام الأفضل لهذه API. إذا كان لديك أي استفسارات، فلا تتردد في الاتصال بفريق الدعم الفني لدينا.