Automatisation de l'approvisionnement des affiches cinéma en ligne

Aujourd'hui, nous allons parler de la façon dont nous avons automatisé la préparation des couvertures pour les films / collections et autres contenus dans Okko, ainsi que des problèmes que l'automatisation résout en général et quelles perspectives cela nous ouvre.

Okko est une salle de cinéma en ligne qui prend en charge une large gamme d'appareils: iPhone, iPad, AppleTV, tous les smartphones Android, la plupart des téléviseurs SMART (LG, Samsung, Sony, Panasonic, Xiaomi, etc.), PS3, PS4, Xbox, Web- navigateurs.



Initialement, nous avons préparé des images hors ligne pour chaque unité de contenu (film, série, série d'une série, etc.) dans des tailles cibles. De plus, les images elles-mêmes n'étaient pas très différentes les unes des autres. À un moment donné, la préparation et la livraison d'images aux clients se sont transformées en un processus inconfortable, accompagné d'un certain nombre de problèmes:

  • une augmentation du volume de réponse aux clients du backend pour demander une liste de films / abonnements / collections;
  • une augmentation du nombre d'images sur le stockage de fichiers (puisque chaque client devait dupliquer une image, mais avec une taille différente. Pour cette raison, nous avons créé plus de 30 copies de chaque image pour chaque type de client);
  • l'augmentation du volume occupé par les liens vers ces images de RAM;
  • mauvaise flexibilité: pour changer même légèrement l'image, vous deviez télécharger l'image modifiée dans le système de fichiers et l'étendre aux clients;
  • temps pour préparer les images: comme les appareils peuvent être fondamentalement différents, la communication avec l'utilisateur est également différente. Par exemple, sur un client TV, il est logique d'afficher le texte sur la couverture, car il peut être lu sur des écrans avec une telle diagonale. Mais sur le smartphone, appliquer le même texte est inutile - il sera trop petit pour distinguer ce qui est écrit sur la couverture. Dans l'ancien schéma, même une opération aussi simple que la modification du texte nécessitait la participation de plusieurs services: il fallait remplacer les parties nécessaires de l'image, donner la source à un spécialiste du contenu qui enverrait l'image au système de fichiers et utiliser un client qui prend en charge l'image correspondante;
  • un nombre limité de possibilités pour travailler avec une image: par exemple, pour un client Web et un client TV, des images de différents formats sont nécessaires. Et pour les obtenir, vous devez en outre copier l'image dans le système de fichiers.

Une fois que nous avons remarqué qu'un tel système était trop complexe, nous avions besoin d'une automatisation. Après avoir analysé exactement les exigences que nous avons pour la préparation automatique d'images, nous avons développé un micro-service pour préparer des images pour différents types de clients à partir d'une seule source à la volée.

Voici une petite liste des exigences initiales que nous avons compilées et auxquelles le service aurait dû répondre:

  • redimensionnement des images
  • recadrage des images à la taille souhaitée
  • redimensionnement des images d'un côté tout en conservant les proportions
  • changement de qualité d'image de sortie
  • changer le format d'image de sortie (jpeg, png, webp)
  • à l'aide d'un filtre gauss
  • la capacité de maintenir l'ordre des transformations d'image

La liste ci-dessus couvre les exigences pour la préparation automatique des affiches de cinéma, des émissions de télévision, des films en série, des séries télévisées et des arrière-plans pour les cartes de cinéma + les jeux de la Premier League anglaise.



Lorsque ces exigences ont été mises en œuvre et publiées, ils ont commencé à penser à d'autres entités de service - collections, abonnements, packages d'abonnement. À ces réflexions sur la façon de traiter des éléments plus complexes, certains des plans du département analytique pour créer et développer des collections personnelles ont été ajoutés: ils aimeraient pouvoir collecter la collection spécifiquement pour chaque utilisateur à l'avenir, formant une communication sur la couverture de la collection, qui, selon notre recommandation le moteur est le mieux adapté pour cela. Cela a également ajouté les idées des concepteurs pour soulager leur travail: enseigner au service à superposer toutes sortes d'éléments graphiques et de textes pour les campagnes marketing Okko, les newsletters et les communications.

Ainsi, avec l'avènement d'une demande d'automatisation de la collecte des collections, des abonnements et des forfaits d'abonnement, les exigences de service ont été complétées par les éléments suivants:

  • superposer des images supplémentaires sur la principale en fonction des coordonnées spécifiées;
  • superposer du texte différent sur l'image avec la possibilité de modifier la taille du texte, le type de police, l'espacement des lignes et l'espacement des lettres;
  • Être capable d'appliquer des paramètres de base avec de nouveaux.

Ces points supplémentaires ont donné lieu à un problème lié à la redondance du corps de la requête derrière l'image dans le cas où l'utilisateur souhaite superposer plusieurs images, ainsi que changer le type d'image de sortie et, par exemple, la qualité de l'image. Cela pourrait ressembler à une demande de superposition de deux images et de texte:

hôte: port / img / picture_id? width = 556 & quality = 80 & mediaType = webp & putImage = picture_id2 & x_coordinate = 100 & y_coordinate = 100 & quality_2 = 95 & text = Some text & text_x = 0 & text_y = 150

Évidemment, la prise en charge de tels chemins est gênante, en la changeant aussi, même incommode pour simplement écrire et lire + changer l'un des paramètres d'image signifie une nouvelle version du client, qui, en général, n'est pas très agréable (et pour certains appareils, elle est très longue).

Ainsi, dans le micro-service pour la préparation d'images, le concept de préréglages est apparu - les fichiers yaml avec une description des éléments supplémentaires, leur emplacement, leur police et d'autres données nécessaires pour configurer un type d'image spécifique pour un appareil spécifique.

Résultats


Aujourd'hui, nous sommes à un stade intermédiaire: jusqu'à présent, toutes les affiches TV de films / films en plusieurs parties / séries / séries ont été automatiquement préparées pour tous les types de clients à partir de la même couverture. De plus, nous préparons automatiquement des affiches pour les tournées et les matchs de la journée de Premier League anglaise.



Techniquement, le service est aujourd'hui en mesure de se procurer non seulement des couvertures de films et d'éléments sportifs, mais aussi des collections / abonnements, il est également possible de superposer divers éléments graphiques et textes sur l'image sans avoir de préréglage.



La fonctionnalité implémentée simplifie déjà considérablement la vie: des modifications mineures de l'image ne doivent pas être effectuées par plusieurs services, il suffit de modifier ou d'ajouter des valeurs à l'un ou l'autre paramètre du service qui est responsable de l'afficher, de tester le micro-service et de le libérer, ce qui est évidemment beaucoup plus rapide. que la sortie d'une nouvelle version client. Soutenir un nouveau type d'appareil, émettre toutes les affiches du catalogue à des partenaires externes, l'apparition d'une communication supplémentaire, n'est plus une question de semaines, mais plutôt de quelques heures.

Le bureau d'études a déchargé, puisqu'il n'a plus besoin de passer du temps à préparer des images de même type (ou très similaires) pour différents clients, il suffit de donner une source et de préciser les règles selon lesquelles cette source sera superposée.

Il reste encore beaucoup de travail à faire: il est prévu d'ajouter de l'IA pour les couvertures d'histoires à génération automatique, une interface Web pour la gestion des préréglages avec un aperçu du résultat final, l'extension de l'outil à d'autres départements voisins (SMM, PR), et bien sûr les tâches actuelles pour divers types d'optimisations (amélioration du travail avec du texte, optimisation de l'algorithme de compression, etc.).

C’est tout. En cas d'intérêt, nous publierons ultérieurement les détails de la structure interne du service, son intégration dans la structure générale et le processus de transition vers la préparation automatique d'images.

Source: https://habr.com/ru/post/fr475098/


All Articles