Automação da contratação de pôsteres on-line de cinema

Hoje falaremos sobre como automatizamos a preparação de capas / coleções de filmes e outros conteúdos em Okko, além de quais problemas a automação resolve em geral e quais as perspectivas que isso abre para nós.

O Okko é um cinema on-line que suporta uma enorme variedade de dispositivos: iPhone, iPad, AppleTV, todos os smartphones Android, a maioria das TVs SMART (LG, Samsung, Sony, Panasonic, Xiaomi, etc.), PS3, PS4, Xbox, Web- navegadores.



Inicialmente, preparamos imagens offline para cada unidade de conteúdo (filme, série, série de uma série etc.) nos tamanhos desejados. Além disso, as próprias imagens não eram muito diferentes uma da outra. Em algum momento, a preparação e entrega de imagens para os clientes se transformou em um processo desconfortável, acompanhado por vários problemas:

  • um aumento no volume de resposta aos clientes do back-end para solicitar uma lista de filmes / assinaturas / coleções;
  • um aumento no número de imagens no armazenamento de arquivos (já que cada cliente teve que duplicar uma imagem, mas com um tamanho diferente. Por isso, criamos mais de 30 cópias de cada imagem para cada tipo de cliente);
  • o aumento do volume ocupado pelos links para essas imagens da RAM;
  • pouca flexibilidade: para alterar levemente a imagem, era necessário fazer o upload da imagem alterada no sistema de arquivos e esticá-la para os clientes;
  • hora de preparar imagens: como os dispositivos podem ser fundamentalmente diferentes, a comunicação com o usuário também é diferente. Por exemplo, em um cliente de TV, faz sentido exibir o texto na capa, pois ele pode ser lido em telas com essa diagonal. Mas no smartphone aplicar o mesmo texto é inútil - será muito pequeno para entender o que está escrito na capa. No esquema antigo, mesmo uma operação tão simples como alterar o texto exigia o envolvimento de vários departamentos: era necessário substituir as partes necessárias na imagem, fornecer a fonte a um especialista em conteúdo que enviasse a imagem ao sistema de arquivos e usar um cliente que suporte a imagem correspondente;
  • um número limitado de possibilidades para trabalhar com a imagem: por exemplo, para o cliente da Web e o cliente de TV, você precisa de imagens de diferentes formatos. E para obtê-los, você também deve copiar a imagem no sistema de arquivos.

Quando percebemos que esse sistema é muito complexo - precisávamos de automação. Após analisar exatamente quais requisitos temos para a preparação automática de imagens, desenvolvemos um microsserviço para preparar imagens para diferentes tipos de clientes de uma fonte em tempo real.

Abaixo está uma pequena lista de requisitos iniciais que compilamos e que o serviço deveria atender:

  • redimensionando fotos
  • recortar imagens no tamanho desejado
  • redimensionando imagens de um lado enquanto mantém a proporção
  • alteração na qualidade da imagem de saída
  • alterar o formato da imagem de saída (jpeg, png, webp)
  • usando um filtro gauss
  • a capacidade de manter a ordem das transformações da imagem

A lista acima cobre os requisitos para a preparação automática de pôsteres de filmes, programas de TV, filmes seriados, séries de TV e planos de fundo para cartões de filme + jogos da Liga Inglesa Premier.



Quando esses requisitos foram implementados e liberados, eles começaram a pensar em outras entidades de serviço - coleções, assinaturas, pacotes de assinaturas. A essas reflexões sobre como lidar com elementos mais complexos, foram adicionados alguns dos planos do departamento de análise para criar e desenvolver coleções pessoais: eles gostariam de poder coletar a coleção especificamente para cada usuário no futuro, formando uma comunicação na capa da coleção que, de acordo com nossa recomendação o motor é mais adequado para isso. Isso também adicionou as idéias dos designers para aliviar seu trabalho: ensinar o serviço a sobrepor todos os tipos de elementos gráficos e textos para campanhas de marketing, boletins e comunicações da Okko.

Assim, com o advento de uma solicitação de automação da coleção de coleções, assinaturas e pacotes de assinaturas, os requisitos de serviço foram complementados com os seguintes itens:

  • sobreponha imagens adicionais na principal de acordo com as coordenadas especificadas;
  • impor texto diferente na imagem com a capacidade de alterar o tamanho do texto, o tipo de fonte, o espaçamento entre linhas e o espaçamento entre letras;
  • Poder aplicar parâmetros básicos em conjunto com novos.

Esses pontos adicionais deram origem a algum problema associado à redundância do corpo da solicitação por trás da imagem, no caso em que o usuário deseja colocar várias imagens umas sobre as outras, além de alterar o tipo de imagem de saída e, por exemplo, a qualidade da imagem. Pode parecer uma solicitação para sobrepor duas imagens e 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 = Algum texto & text_x = 0 & text_y = 150

Obviamente, apoiar esses caminhos é inconveniente, alterá-lo também, mesmo inconveniente de apenas escrever e ler + alterar qualquer parâmetro da imagem significa um novo lançamento do cliente, o que, em geral, não é muito agradável (e para alguns dispositivos é muito longo).

Assim, no microsserviço para a preparação de imagens, apareceu o conceito de predefinições - arquivos yaml com uma descrição de elementos adicionais, sua localização, fonte e outros dados necessários para configurar um tipo específico de imagem para um dispositivo específico.

Resultados


Hoje estamos em um estágio intermediário: até agora, todos os pôsteres de filmes / séries de filmes / séries / séries foram preparados automaticamente para todos os tipos de clientes da mesma fonte. Além disso, preparamos automaticamente pôsteres para passeios e partidas do dia da Premier League inglesa.



Tecnicamente, hoje o serviço é capaz de adquirir capas não apenas de filmes e elementos esportivos, mas também de coleções / assinaturas, também é possível sobrepor vários elementos gráficos e texto na imagem sem ter uma predefinição.



A funcionalidade implementada já simplifica significativamente a vida: pequenas alterações na imagem não precisam ser feitas por vários departamentos, basta alterar ou adicionar valores a um ou outro parâmetro do serviço responsável por exibi-la, testar o microsserviço e liberá-lo, o que é obviamente muito mais rápido. do que o lançamento de uma nova compilação do cliente. O suporte a um novo tipo de dispositivo, a emissão de todos os pôsteres do catálogo para parceiros externos, a aparência de comunicação adicional, não é mais uma questão de semanas, mas algumas horas.

O departamento de design descarregou, já que ele não precisa mais gastar tempo preparando fotos do mesmo tipo (ou muito semelhantes) para clientes diferentes, basta fornecer uma fonte e especificar as regras pelas quais essa fonte será sobreposta.

Ainda há muito trabalho pela frente: há planos de adicionar IA para capas de histórias de geração automática, uma interface da Web para gerenciar predefinições com uma visualização do resultado final, expandir a ferramenta para outros departamentos vizinhos (SMM, PR) e, claro, tarefas atuais para vários tipos de otimizações (aprimorando o trabalho com texto, otimização do algoritmo de compactação etc.).

Isso é tudo. Se surgir interesse, publicaremos posteriormente os detalhes da estrutura interna do serviço, sua integração na estrutura geral e o processo de transição para a preparação automática de imagens.

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


All Articles