سنتحدث اليوم عن كيفية أتمتة إعداد أغلفة / مجموعات الأفلام والمحتويات الأخرى في Okko ، وكذلك المشكلات التي يحلها التشغيل الآلي بشكل عام وما هي الآفاق التي يفتحها لنا هذا.
Okko عبارة عن مسرح للأفلام عبر الإنترنت يدعم مجموعة كبيرة من الأجهزة: iPhone و iPad و AppleTV وجميع هواتف Android الذكية ومعظم أجهزة تلفزيون SMART (LG و Samsung و Sony و Panasonic و Xiaomi وغيرها) و PS3 و PS4 و Xbox و Web- المتصفحات.

في البداية ، قمنا بإعداد الصور في وضع عدم الاتصال لكل وحدة محتوى (فيلم ، سلسلة ، سلسلة من السلسلة ، إلخ) بأحجام مستهدفة. علاوة على ذلك ، كانت الصور نفسها لا تختلف كثيرا عن بعضها البعض. في مرحلة ما ، تحول إعداد وتسليم الصور للعملاء إلى عملية غير مريحة ، مصحوبة بعدد من المشكلات:
- زيادة حجم الاستجابة للعملاء من الواجهة الخلفية لطلب قائمة الأفلام / الاشتراكات / المجموعات ؛
- زيادة في عدد الصور على تخزين الملفات (نظرًا لأن كل عميل اضطر لتكرار صورة ، ولكن بحجم مختلف. ولهذا السبب ، أنشأنا أكثر من 30 نسخة من كل صورة لكل نوع من أنواع العميل) ؛
- الزيادة في الحجم الذي تشغله روابط لهذه الصور من ذاكرة الوصول العشوائي ؛
- ضعف المرونة: حتى لتغيير الصورة قليلاً ، كان عليك تحميل الصورة التي تم تغييرها إلى نظام الملفات وتمديدها على العملاء ؛
- الوقت اللازم لإعداد الصور: نظرًا لأن الأجهزة يمكن أن تكون مختلفة تمامًا ، فإن التواصل مع المستخدم مختلف أيضًا. على سبيل المثال ، على جهاز تلفزيون ، من المنطقي إظهار النص على الغلاف ، حيث يمكن قراءته على شاشات بمثل هذا القطر. ولكن على الهاتف الذكي لتطبيق النص نفسه لا طائل منه - سيكون صغيرًا جدًا على جعل ما هو مكتوب على الغلاف. في المخطط القديم ، حتى عملية بسيطة مثل تغيير النص تتطلب مشاركة عدة أقسام: كان من الضروري استبدال الأجزاء الضرورية في الصورة ، وإعطاء المصدر إلى متخصص المحتوى الذي سيرسل الصورة إلى نظام الملفات ، واستخدام عميل يدعم الصورة المقابلة ؛
- عدد محدود من إمكانيات العمل مع صورة: على سبيل المثال ، بالنسبة إلى عميل ويب وعميل تلفزيون ، هناك حاجة إلى صور بتنسيقات مختلفة. وللحصول عليها ، يجب عليك أيضًا نسخ الصورة إلى نظام الملفات.
بمجرد أن لاحظنا أن هذا النظام معقد للغاية - كنا بحاجة إلى الأتمتة. بعد تحليل المتطلبات التي لدينا لإعداد الصور تلقائيًا بالضبط ، قمنا بتطوير خدمة صغيرة لإعداد الصور لأنواع مختلفة من العملاء من مصدر واحد سريعًا.
فيما يلي قائمة صغيرة من المتطلبات الأولية التي قمنا بتجميعها والتي يجب أن تفي بها الخدمة:
- تغيير حجم الصور
- اقتصاص الصور إلى الحجم المطلوب
- تغيير حجم الصور على جانب واحد مع الحفاظ على نسبة العرض إلى الارتفاع
- تغيير جودة الصورة الناتج
- تغيير تنسيق صورة الإخراج (jpeg ، png ، webp)
- باستخدام مرشح غاوس
- القدرة على الحفاظ على ترتيب تحويلات الصور
تغطي القائمة أعلاه متطلبات الإعداد التلقائي لملصقات الأفلام والبرامج التلفزيونية والأفلام التسلسلية والمسلسلات التلفزيونية والخلفيات لبطاقات الأفلام + ألعاب الدوري الإنجليزي.

عندما تم تنفيذ هذه المتطلبات وإصدارها ، بدأوا في التفكير في كيانات الخدمات الأخرى - المجموعات والاشتراكات وحزم الاشتراك. لهذه الأفكار حول كيفية التعامل مع العناصر الأكثر تعقيدًا ، تمت إضافة بعض خطط قسم التحليل لإنشاء مجموعات شخصية وتطويرها: يودون أن يكونوا قادرين على جمع المجموعة خصيصًا لكل مستخدم في المستقبل ، مما يشكل اتصالًا على غلاف المجموعة ، والذي وفقًا لتوصيتنا المحرك هو الأنسب لهذا الغرض. أضاف هذا أيضًا أفكار المصممين لتخفيف عملهم: لتعليم الخدمة تراكب جميع أنواع العناصر الرسومية والنصوص لحملات Okko التسويقية والنشرات الإخبارية والاتصالات.
وبالتالي ، مع ظهور طلب لأتمتة مجموعة المجموعات والاشتراكات وحزم الاشتراك ، تم استكمال متطلبات الخدمة بالعناصر التالية:
- تراكب صور إضافية على الرئيسية وفقا للإحداثيات المحددة ؛
- تراكب نص مختلف على الصورة مع القدرة على تغيير حجم النص ونوع الخط وتباعد الأسطر وتباعد الحروف ؛
- أن تكون قادرة على تطبيق المعلمات الأساسية جنبا إلى جنب مع معايير جديدة.
أثارت هذه النقاط الإضافية بعض المشكلات المرتبطة بتكرار نص الطلب خلف الصورة في الحالة التي يريد فيها المستخدم وضع عدة صور فوق بعضها البعض ، وكذلك تغيير نوع صورة الإخراج وجودة الصورة على سبيل المثال. قد يبدو هذا كطلب لتراكب صورتين ونصوص:
host: port / img / picture_id؟ width = 556 & quality = 80 & mediaType = webp & putImage = picture_id2 & x_coordinate = 100 & y_coordinate = 100 & quality_2 = 95 & text = بعض النص & text_x = 0 & text_y = 150من الواضح أن دعم مثل هذه المسارات غير مريح ، وتغييره أيضًا ، حتى أنه من غير المريح مجرد الكتابة والقراءة + تغيير أي من معلمات الصورة يعني أن إصدار عميل جديد ، ليس عمومًا ممتعًا للغاية (وبالنسبة لبعض الأجهزة فهو طويل جدًا).
لذلك في الخدمة المصغرة لإعداد الصور ، ظهر مفهوم الإعدادات المسبقة - ملفات yaml مع وصف للعناصر الإضافية وموقعها والخط والبيانات الأخرى اللازمة لتكوين نوع معين من الصورة لجهاز معين.
النتائج
نمر اليوم بمرحلة متوسطة: حتى الآن ، تم إعداد جميع الملصقات التليفزيونية للأفلام / المسلسلات / المسلسلات / الأجزاء المتعددة تلقائيًا لجميع أنواع العملاء من نفس المصدر. بالإضافة إلى ذلك ، نقوم تلقائيًا بإعداد ملصقات للجولات ومباريات يوم الدوري الإنجليزي الممتاز.

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

تعمل الوظيفة المنفذة بالفعل على تبسيط الحياة بشكل كبير: لا يلزم إجراء تغييرات بسيطة في الصورة من خلال العديد من الأقسام ، فقط قم بتغيير أو إضافة قيم إلى معلمة أو أخرى من الخدمة المسؤولة عن عرضها ، واختبار الخدمة الصغيرة وإصدارها ، والتي من الواضح أنها أسرع بكثير. من الافراج عن بناء عميل جديد. لم يعد دعم نوع جديد من الأجهزة ، وإصدار جميع ملصقات الكتالوج للشركاء الخارجيين ، وظهور اتصال إضافي ، مسألة أسابيع ، بل بضع ساعات.
تم إلغاء تحميل قسم التصميم ، نظرًا لأنه لم يعد بحاجة إلى قضاء بعض الوقت في إعداد نفس النوع (أو ما شابه جدًا) الصور لعملاء مختلفين ، يكفي إعطاء مصدر واحد وتحديد القواعد التي سيتم بها تثبيت هذا المصدر.
لا يزال هناك الكثير من العمل الذي ينتظرنا: هناك خطط لإضافة AI لأغلفة المجموعات النصية التلقائية ، وواجهة ويب لإدارة الإعدادات المسبقة مع معاينة للنتيجة النهائية ، وتوسيع الأداة لتشمل الإدارات المجاورة الأخرى (SMM ، PR) ، وبالطبع المهام الحالية لأنواع مختلفة من التحسينات (تحسين العمل باستخدام النص ، تعظيم الاستفادة من خوارزمية الضغط ، وما إلى ذلك).
هذا كل شيء. في حالة ظهور الاهتمام ، سنقوم لاحقًا بنشر تفاصيل الهيكل الداخلي للخدمة ، ودمجها في الهيكل العام وعملية الانتقال إلى الإعداد التلقائي للصور.