تكامل واجهة برمجة تطبيقات YouTube ASP.NET - تحميل الفيديو بصفحة واحدة

StackOverflow https://stackoverflow.com/questions/629435

  •  08-07-2019
  •  | 
  •  

سؤال

نحاول استخدام Google YouTube API لتحميل مقاطع الفيديو من موقعنا على الويب إلى YouTube من خلال المتصفح مباشرة.

تعمل واجهة برمجة التطبيقات في خطوتين، في الخطوة الأولى نحتاج إلى إنشاء كائن فيديو يحتوي على جميع البيانات الوصفية مثل العنوان والعلامات والوصف والفئة وما إلى ذلك.ثم نحتاج إلى إرسال طلب بهذا الكائن إلى YouTube وإنشاء كائن Token كرد.يحتوي كائن الرمز المميز هذا على قيمة رمزية وعنوان URL للرمز المميز كأعضاء فيه.

في الخطوة الثانية يقترحون علينا إنشاء نموذج مع تعيين سمة الإجراء على عنوان URL للرمز المميز.يجب أن يحتوي هذا النموذج على عنصر تحكم في تحميل الملف وحقل مخفي مع قيمة الرمز المميز كقيمة له.عندما يتم نشر هذا النموذج، فإنه سيتم تحميل الفيديو على موقع يوتيوب.

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

لدينا صفحة رئيسية تحتوي على "aspnetForm" المحدد فيها، ولهذا السبب لا يمكننا الحصول على نموذج آخر به runat='server' ملكية.

لقد حاولنا تعديل سمة الإجراء الخاصة بـ aspnetFrom باستخدام JavaScript/code-behind ولكنها تظل كما هي مهما فعلنا.

لقد حاولنا أيضًا وضع نموذج متداخل آخر، سيتم تعيين علامة الإجراء الخاصة به في حدث النقر على الزر، بعد تلقي الاستجابة الأولى من YouTube مع الرمز المميز.ولكن حتى هذا لا يعمل، حيث لا يتم إنشاء النموذج في الوقت الذي يتم فيه استدعاء هذه الطريقة..

لقد جربنا عدة طرق ولكن يبدو أن لا شيء يعمل..أي اقتراحات بشأن هذا ستكون رائعة.

ولو عندك أي أسئلة تانية علشان تفهم الموقف بوضوح..أخبرونى من فضلكم..


تحديث:

شكرا على الردود يا شباب.

لقد قمنا بتغيير منطق العمل قليلاً لحل المشكلة.لقد مضى وقت طويل وأنا لا أبحث عن حل حتى الآن ..

لكن السؤال ما زال مفتوحا وينتظر الإجابات.إنني أقدر حقًا كل المساعدة، وبالتالي سأترك السؤال مفتوحًا لأي مناقشات أخرى.

هل كانت مفيدة؟

المحلول

سأقوم بإنشاء نموذج تعرضه للمستخدم مع حقول نصية للبيانات الوصفية وعنصر تحكم في تحميل الملف للفيديو.

بعد ذلك، في الكود الذي يتعامل مع إعادة النشر، يمكنك إرسال البيانات الوصفية إلى YouTube API للحصول على قيمة الرمز المميز.

ثم تقوم بصياغة http.WebRequest مع تمرير قيمة الرمز المميز إلى Create طريقة WebRequest الكائن وتعيين Method الملكية ل Post.ثم تقوم بإضافة الفيديو الذي تم تحميله (انظر إجابة dr evil على "تحميل الملفات باستخدام HTTPWebrequest (بيانات متعددة الأجزاء/النموذج)" للمزيد من التجول في ذلك)، وعند الاتصال GetResponse() سيتم تقديم الملف الخاص بك.

الأشياء التي يجب الحذر منها:

  1. ScriptTimeout:إذا كنت تسمح للمستخدمين بتحميل ملفات كبيرة الحجم إلى YouTube - إذا استغرق إرسالها بعض الوقت، فقد يتم إنهاء البرنامج النصي الخاص بك قبل الأوان.
  2. عرض النطاق:سيكون لديك التحميل إلى خوادمك ثم التحميل إلى YouTube لحسابك - من خلال السماح للمستخدم بالتحميل مباشرة إلى YouTube في عملية من خطوتين، لن تلمس الفيديو مطلقًا، ولن يقترب أبدًا من خوادمك - قد يكون هذا قد يمثل مشكلة بالنسبة لك أو لموفر خدمة الاستضافة الخاص بك - على سبيل المثال، لا يحسب مضيفي حركة المرور عبر FTP في النطاق الترددي الشهري الخاص بي، ولكنه يتضمن الملفات التي تم تحميلها/تنزيلها من خلال موقع الويب.

نصائح أخرى

يمكنك النشر على نموذج YouTube برمجيًا.لقد قمت مؤخرًا بتعديل المثال الموجود في http://www.codeproject.com/KB/cs/uploadfileex.aspx لكتابة بعض التعليمات البرمجية التي نشرت ملفًا على موقع ويب تابع لجهة خارجية كمهمة ليلية.

قد يتضمن هذا تحقيق أداء حيث يجب تحميل الملف إلى الخادم الخاص بك ثم إلى YouTube بدلاً من تحميله مباشرة على YouTube، ولكنه خيار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top