Automatización de la contratación de carteles de cine en línea.

Hoy hablaremos sobre cómo automatizamos la preparación de portadas para películas / colecciones y otro contenido en Okko, así como qué problemas resuelve la automatización en general y qué perspectivas nos abre.

Okko es una sala de cine en línea que admite una amplia gama de dispositivos: iPhone, iPad, AppleTV, todos los teléfonos inteligentes Android, la mayoría de los televisores SMART (LG, Samsung, Sony, Panasonic, Xiaomi, etc.), PS3, PS4, Xbox, Web- navegadores



Inicialmente, preparamos imágenes sin conexión para cada unidad de contenido (película, serie, serie de una serie, etc.) en tamaños de destino. Además, las imágenes en sí mismas no eran muy diferentes entre sí. En algún momento, la preparación y entrega de imágenes a los clientes se convirtió en un proceso incómodo, acompañado de una serie de problemas:

  • un aumento en el volumen de respuesta a los clientes desde el backend para solicitar una lista de películas / suscripciones / colecciones;
  • un aumento en el número de imágenes en el almacenamiento de archivos (ya que cada cliente tenía que duplicar una imagen, pero con un tamaño diferente. Debido a esto, creamos más de 30 copias de cada imagen para cada tipo de cliente);
  • el aumento en el volumen ocupado por enlaces a estas imágenes de RAM;
  • poca flexibilidad: incluso para cambiar ligeramente la imagen, tenía que cargar la imagen modificada al sistema de archivos y extenderla a los clientes;
  • tiempo para preparar imágenes: dado que los dispositivos pueden ser fundamentalmente diferentes, la comunicación con el usuario también es diferente. Por ejemplo, en un cliente de TV tiene sentido mostrar el texto en la portada, ya que puede leerse en pantallas con esa diagonal. Pero en el teléfono inteligente aplicar el mismo texto es inútil: será demasiado pequeño para distinguir lo que está escrito en la portada. En el esquema anterior, incluso una operación tan simple como cambiar el texto requería la participación de varios departamentos: era necesario reemplazar las partes necesarias en la imagen, proporcionar la fuente a un especialista en contenido que enviaría la imagen al sistema de archivos y utilizar un cliente que admita la imagen correspondiente;
  • Un número limitado de posibilidades para trabajar con una imagen: por ejemplo, para un cliente web y un cliente de TV, se necesitan imágenes de diferentes formatos. Y para obtenerlos, debe copiar adicionalmente la imagen al sistema de archivos.

Una vez que notamos que dicho sistema es demasiado complejo, necesitábamos automatización. Después de analizar exactamente qué requisitos tenemos para la preparación automática de imágenes, desarrollamos un microservicio para preparar imágenes para diferentes tipos de clientes desde una fuente sobre la marcha.

A continuación hay una pequeña lista de requisitos iniciales que hemos compilado y que el servicio debería haber cumplido:

  • cambiar el tamaño de las imágenes
  • recortar imágenes al tamaño deseado
  • cambiar el tamaño de las imágenes en un lado manteniendo la relación de aspecto
  • cambio de calidad de imagen de salida
  • cambiar el formato de imagen de salida (jpeg, png, webp)
  • usando un filtro gauss
  • la capacidad de mantener el orden de las transformaciones de imagen

La lista anterior cubre los requisitos para la preparación automática de carteles de películas, programas de televisión, películas en serie, series de televisión y fondos para tarjetas de películas + juegos de la Premier League inglesa.



Cuando se implementaron y publicaron estos requisitos, comenzaron a pensar en otras entidades de servicio: colecciones, suscripciones, paquetes de suscripción. A estas reflexiones sobre cómo lidiar con elementos más complejos, se agregaron algunos de los planes del departamento de análisis para crear y desarrollar colecciones personales: les gustaría poder recopilar la colección específicamente para cada usuario en el futuro, formando comunicación en la portada de la colección, lo cual, de acuerdo con nuestra recomendación El motor es el más adecuado para esto. Esto también agregó las ideas de los diseñadores para aliviar su trabajo: enseñar al servicio a superponer todo tipo de elementos gráficos y textos para campañas de marketing, boletines y comunicaciones de Okko.

Por lo tanto, con la llegada de una solicitud de automatización de la colección de colecciones, suscripciones y paquetes de suscripción, los requisitos del servicio se complementaron con los siguientes elementos:

  • superponga imágenes adicionales en la principal de acuerdo con las coordenadas especificadas;
  • superponer texto diferente en la imagen con la capacidad de cambiar el tamaño del texto, el tipo de fuente, el espaciado entre líneas y el espaciado entre letras;
  • Poder aplicar parámetros básicos junto con otros nuevos.

Estos puntos adicionales dieron lugar a algún problema asociado con la redundancia del cuerpo de la solicitud detrás de la imagen en el caso en que el usuario desea colocar varias imágenes una encima de la otra, así como cambiar el tipo de imagen de salida y, por ejemplo, la calidad de la imagen. Esto podría parecer una solicitud para superponer dos imágenes y texto:

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

Obviamente, admitir tales rutas es inconveniente, cambiarlo también, incluso inconveniente simplemente escribir y leer + cambiar cualquiera de los parámetros de la imagen significa una nueva versión del cliente, que, en general, no es muy agradable (y para algunos dispositivos es muy larga).

Entonces, en el microservicio para la preparación de imágenes, apareció el concepto de presets: archivos yaml con una descripción de elementos adicionales, su ubicación, fuente y otros datos necesarios para configurar un tipo específico de imagen para un dispositivo específico.

Resultados


Hoy nos encontramos en una etapa intermedia: hasta ahora, todos los carteles de películas / películas / series / series de TV se han preparado automáticamente para todo tipo de clientes desde la misma portada. Además, preparamos automáticamente pósters para giras y partidos del día de la Premier League inglesa.



Técnicamente, hoy el servicio es capaz de adquirir las portadas de no solo películas y elementos deportivos, sino también colecciones / suscripciones, también es posible superponer varios elementos gráficos y texto en la imagen sin tener un preajuste.



La funcionalidad implementada ya simplifica significativamente la vida: los cambios menores en la imagen no tienen que hacerse a través de varios departamentos, solo cambian o agregan valores a uno u otro parámetro del servicio responsable de mostrarlo, prueban el microservicio y lo liberan, lo que obviamente es mucho más rápido. que el lanzamiento de una nueva compilación del cliente. La compatibilidad con un nuevo tipo de dispositivo, la emisión de todos los carteles del catálogo a socios externos, la aparición de una comunicación adicional, ya no es cuestión de semanas, sino de un par de horas.

El departamento de diseño se ha descargado, porque ya no necesita pasar tiempo preparando imágenes del mismo tipo (o muy similares) para diferentes clientes, es suficiente dar una fuente y especificar las reglas por las cuales esta fuente se superpondrá.

Todavía hay mucho trabajo por delante: hay planes para agregar IA para las portadas de historias autogeneradas, una interfaz web para administrar ajustes preestablecidos con una vista previa del resultado final, expandir la herramienta a otros departamentos vecinos (SMM, PR) y, por supuesto, las tareas actuales para varios tipos de optimizaciones (mejorar el trabajo con texto, optimización del algoritmo de compresión, etc.).

Eso es todo Si surge interés, luego publicaremos los detalles de la estructura interna del servicio, su integración en la estructura general y el proceso de transición a la preparación automática de imágenes.

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


All Articles