بعد اتجاه YouTube الأخير في مقاطع فيديو YouTube "Reddit to text to-tpeech" ، شرعت في مشروع لإنشاء برنامج يمكنه أتمتة عملية استلام وتوليد وتحميل مقاطع الفيديو هذه إلى YouTube بأقل قدر ممكن من التدخل. استغرق الأمر 4 أشهر لإنهاء المشروع ويتألف من 3 برامج منفصلة تعمل في وقت واحد من أجل إكمال هذه المهمة.
كانت الفكرة هي تقليل أكبر قدر ممكن من التدخل اليدوي وأتمتة جميع المهام التافهة. ومع ذلك ، لا يمكن أن تكون العملية آلية بنسبة 100 ٪. على سبيل المثال ، لا يمكن الاحتفاظ بالتعليقات مع الروابط فيها حيث ستتألف جودة الفيديو بسبب TTS. بالإضافة إلى ذلك ، على الرغم من أن التعليق قد يكون له عدد كبير من الأصوات ، فقد يكون من المحتمل أن يكون مسيئًا وليس آمنًا لمقطع فيديو على YouTube ، وبالتالي يجب إزالته. يجب تحرير الصورة المصغرة ، على الرغم من إنشاءها جزئيًا ، من أجل إنشاء أي نوع من النداء للمشاهدين للنقر على الفيديو الخاص بك. ينطبق الشيء نفسه على عنوان الفيديو الذي يجب أن يكون clickbait-y من أجل الحصول على أي اهتمام. لقد حاولت تبسيط العملية اليدوية مع برنامج العميل ويستغرق الأمر حوالي 30 دقيقة لإنشاء 6 مقاطع فيديو (الحد الأقصى الذي يمكن تحميله في غضون 24 ساعة مع واجهة برمجة تطبيقات بيانات YouTube).
بعض مقاطع الفيديو التي تم إنشاؤها:
https://www.youtube.com/watch؟v=xxdkmhyxcsq
https://www.youtube.com/watch؟v=aw0yjixnxi&t=35S
تتضمن عملية إكمال الفيديو:
مثال على قنوات النص إلى الكلام:
https://www.youtube.com/watch؟v=izsxhx64pgq https://www.youtube.com/watch؟v=vzdtuap2ztw
ضعها في مجلد يسمى "الأصول" داخل دليل مولد فيديو YouTube Bot.
علاوة على ذلك ، غيرت رأيي في العديد من جوانب التصميم جزئيًا من خلال المشروع ، وبالتالي يتم تسمية بعض الملفات بشكل غريب وهناك رمز غير مستخدم هنا وهناك. لن أقوم بتحديث الرمز بعد الآن ، ومع ذلك ، لا تتردد في ذلك.
تحقق من التبعيات
لتثبيت معظم تبعيات Python بسهولة ، قم بتشغيل الأمر التالي بعد الاستنساخ (قد يحتاج البعض إلى تثبيت يدويًا):
pip install -r requirements.txt
يتكون هذا الاتجاه الأخير في مقاطع الفيديو Reddit النص إلى كلام (عادة) من صيغة بسيطة للغاية:
يتم اختيار أغنية عشوائيا. لقد قمت بتنزيل ~ 40 أغنية Kevin MacLeod Royality أغاني مجانية ليتم اختيارها عشوائيًا.
https://www.youtube.com/watch؟v=ccpyyrds-qo&list=plbzgr7h3fyus3lvitxtfaigv601ukuhjx
يمكن تنزيل جميع الأصول المستخدمة في توليد الفيديو هنا:
http://www.mediafire.com/file/hpu1j1k1avwp9dj/youtube_bot_assets.zip/file
يجب وضعها في مجلد يسمى "الأصول" في برنامج مولد الفيديو.
يتألف المشروع من ثلاثة برامج منفصلة:
يضم هذا البرنامج خادم المقبس (1) للاتصال ببرنامج العميل (العميل) وأيضًا خادم المقبس (2) للاتصال بعميل (عميل) مولد الفيديو. بالإضافة إلى ذلك ، سيحصل هذا البرنامج أيضًا على برامج نصية جديدة من Reddit كل ساعة واحدة ، وسيقوم أيضًا بتحديث تلك الحالية التي لم يتم تحريرها بعد.
(1) سيرسل خادم المقبس هذا البرامج النصية الخام من قاعدة البيانات إلى برنامج المراجعة اليدوية (انظر أدناه). سيتلقى بعد ذلك هذه البرامج النصية التي تمت مراجعتها وتحديث قاعدة البيانات باستخدام البرامج النصية النهائية التي ستتضمن صورة مصغرة ووصف وعنوان. يمكن للخادم التعامل مع العديد من العملاء حتى يتمكن العديد من الأشخاص من تحرير هذه البرامج النصية.
(2) تم تصميم خادم مولد الفيديو حاليًا فقط للتعامل مع عميل مولد فيديو واحد. كانت الخطط الأصلية لهذا الخادم للتعامل مع عملاء مولد الفيديو المتعدد الذين ينتشرون بين أجهزة كمبيوتر متعددة. ومع ذلك ، وجدت أن جهاز كمبيوتر واحد كان كافياً بما يكفي لتلبية جميع احتياجات توليد الفيديو الخاصة بي ، لذلك قررت أن ترمز إلى عميل واحد فقط. الغرض من هذا الخادم هو إرسال البرامج النصية النهائية من قاعدة البيانات إلى عميل مولد الفيديو.
سيتلقى هذا البرنامج البرامج النصية للفيديو النهائية من خادم مولد فيديو YouTube Bot والذي يتضمن الصور المصغرة والأوصاف والعلامات والعنوان. سيتم إنشاء هذه البرامج النصية في ملف MP4 ثم يتم تحميلها على YouTube في وقت إصدار مجدول (بشكل عشوائي حاليًا في الساعة 5 مساءً ، الساعة 6 مساءً ، 7 مساءً بتوقيت جرينتش - الأوقات الموصى بها للتحميل إلى YouTube). بمجرد استلام البرنامج النصي ، سيتم إنشاءه ، سينتظر البرنامج حتى يحتوي على عدد كافٍ من أرصدة API للتحميل عن طريق التحقق من موعد تحميل مقاطع الفيديو الستة الأخيرة.
إعادة استخدام حصة API في الساعة 8 صباحًا بتوقيت جرينتش . لقد حسبت أن تحميل كل مقطع فيديو سيكلف 1658 ساعة معتمدة . يمكنك استخدام 10 000 ساعة كحد أقصى في اليوم. هذا يعني من الناحية النظرية أنك ستتمكن من تحميل 6 مقاطع فيديو يوميًا . ومع ذلك ، في الممارسة العملية ، تمكنت من تحميل 5 مقاطع فيديو ، وأحيانًا سيتم تحميل المركز السادس ، ومع ذلك لن يكون هناك ما يكفي من الحصص المتاحة لتحميل الصورة المصغرة ، والتي ستتطلب في هذه الحالة تدخلًا يدويًا لتحميل الصورة المصغرة يدويًا. يتم تحميل مقاطع الفيديو باستخدام YouTube-Upload والتي تمكنت فقط من العمل مع Python 2.7. يطلق عليه مع Subprocess.check_call مع إصدار Python المحدد والوسائط كما هو مطلوب (الرابط أدناه).
بمجرد تحميل مقطع الفيديو بنجاح ، يتم تعيين حالته لإكمالها مع وقت التحميل حتى يتمكن البرنامج من التحقق من عدد مقاطع الفيديو التي تم تحميلها خلال اليوم لتجنب تجاوز استخدام الحصص.
youtube بيانات API معلومات https://developers.google.com/youtube/v3/getting-started youtube-upload (Python 2.7) https://github.com/tokland/youtube-upload
كان النص إلى الكلام أحد الجوانب الأكثر تحديا للمشروع هو الحصول على النص إلى الكلام للعمل بشكل صحيح. كنت أرغب في استخدام نص المسح الضوئي الناعم Daniel MLG إلى صوت الكلام - الذي تم العثور عليه في معظم النصوص على أشرطة الفيديو Reddit. اعتقدت أن هذا كان جزءًا مهمًا من المشروع لأن هذا الصوت يمكن التعرف عليه للغاية وهو (في رأيي) أحد أفضل نص السبر إلى الخطب المتاحة. يمكنني استخدام إصدار سطر الأوامر من Balabolka لإنشاء ملفات .wav ، ثم تمت مزامنتها مع إطارات مختلفة في برنامج توليد الفيديو.
Balabolka http://www.cross-plus-a.com/balabolka.htm تعليمات حول كيفية الحصول على صوت Daniel MLG https://www.youtube.com/watch؟v=yj3dhnyoty
برنامج العميل هو عملية انتقاد تشبه إلى اليسار واليمين لتصفية التعليقات التي لا يجب تضمينها في الفيديو. كما يسمح للمستخدم بكتابة العنوان وتحميل صورة مصغرة للفيديو وكذلك وصف العلامات والعلامات ، على الرغم من أن العنوان والوصف والعلامات يتم إنشاؤه جزئيًا على النحو التالي: العنوان: يكون الافتراضي هو وصف العنوان: افتراضيًا هو قالب مشهور ، مثل ". كل هذه يمكن تحريرها. يتم إنشاء قالب الصورة المصغرة جزئيًا. هناك شيكات للتأكد من عدم تجاوز كمية الأحرف لجميع هذه الحقول ، على سبيل المثال ، يجب أن يكون العنوان أقل من 100 حرف
يتضمن المحتوى النهائي للفيديو البرنامج النصي الذي تم تحريره ، والثوبرية ، والعلامات ، والوصف ، وإعدادات الفيديو (من الممكن تغيير ميزات معينة من قالب مولد الفيديو أثناء عملية التحرير مثل لون الخلفية ، وحجم النص ، وعرضات الخط ، إلخ.
MySQL
يتم تخزين البرامج النصية وهي معلومات ذات صلة باستخدام قاعدة بيانات MySQL. هذه هي المرة الأولى التي استخدمت فيها قاعدة بيانات MySQL لمشروع ، لست رائعًا في SQL ، لقد تعلمت ما هو ضروري للحصول على الأشياء. لقد استخدمت ثلاثة جداول "مستخدمين" و "أجهزة فيديو" و "نصوص"
جدول "المستخدمين"
في الأصل ، كنت قد خططت لإنشاء نظام تسجيل دخول واسع النطاق حيث كان لدى المستخدمين إحصائيات تحرير ، ومعرفة من هو عبر الإنترنت وما إلى ذلك ، والآن يستخدم هذا الاستخدام الوحيد لتتبع المستخدمين الذين يقومون بتحرير مقاطع الفيديو لمنع تحرير الفيديو نفسه وتحميله مرتين. تم تشفير كلمات المرور مع MD5 على جانب العميل
جدول "البرامج النصية"
الجدول الأكثر أهمية ، يحمل جميع معلومات البرنامج النصي. يعد حقل الحالة مهمًا جدًا لتتبع المكان الذي يجب أن يكون فيه البرنامج النصي.
-Raw: البرنامج النصي متاح لتحرير
-تحرير: يتم تحرير البرنامج النصي ولا يمكن تحريره من قبل أي مستخدمين آخرين في هذه الحالة
-complete: تم الانتهاء من البرنامج النصي وسيتم إرساله إلى عميل مولد الفيديو
-successupload: تم تحميل البرنامج النصي بنجاح على YouTube
جدول "Videogenerators"
مثل المستخدمين ، قمت بتصميم العميل للحصول على اسم مستخدم وكلمة مرور لتسجيل الدخول. كلمة المرور مشفرة مع MD5 على جانب العميل
سيتم إنشاء هذه الجداول تلقائيًا داخل قاعدة بيانات تسمى "YouTubeBot" إذا لم تكن موجودة بالفعل.
سيتم تنزيل بيانات الاعتماد الخاصة بحساب Google API الخاص بك وحفظها تلقائيًا بعد تسجيل دخول لمرة واحدة (سيتم فتح نافذة المتصفح الخاصة بك لطلب تسجيل الدخول إلى حساب Google): videouploader.py -> get_credentals ()