Hari ini kita akan berbicara tentang bagaimana kita mengotomatiskan persiapan sampul / koleksi film dan konten lainnya di Okko, serta masalah apa yang dipecahkan secara otomatis oleh otomatisasi dan prospek apa yang terbuka bagi kita.
Okko adalah teater film online yang mendukung sejumlah besar perangkat: iPhone, iPad, AppleTV, semua smartphone Android, sebagian besar TV SMART (LG, Samsung, Sony, Panasonic, Xiaomi, dll.), PS3, PS4, Xbox, Web- browser.

Awalnya, kami menyiapkan gambar secara offline untuk setiap unit konten (film, seri, seri seri, dll.) Dalam ukuran target. Apalagi foto-foto itu sendiri tidak jauh berbeda satu sama lain. Di beberapa titik, persiapan dan pengiriman gambar ke pelanggan berubah menjadi proses yang tidak nyaman, disertai dengan sejumlah masalah:
- peningkatan volume respons terhadap pelanggan dari backend untuk meminta daftar film / langganan / koleksi;
- peningkatan jumlah gambar pada penyimpanan file (karena setiap klien harus menduplikasi gambar, tetapi dengan ukuran yang berbeda. Karena itu, kami membuat lebih dari 30 salinan setiap gambar untuk setiap jenis klien);
- peningkatan volume yang ditempati oleh tautan ke gambar-gambar RAM ini;
- fleksibilitas rendah: untuk sedikit mengubah gambar, Anda harus mengunggah gambar yang diubah ke sistem file dan merentangkannya ke klien;
- waktu untuk menyiapkan gambar: karena perangkat dapat berbeda secara fundamental, komunikasi dengan pengguna juga berbeda. Misalnya, pada klien TV, masuk akal untuk menunjukkan teks pada sampulnya, karena dapat dibaca di layar dengan diagonal seperti itu. Tetapi pada smartphone untuk menerapkan teks yang sama tidak berguna - itu akan terlalu kecil untuk melihat apa yang tertulis di sampulnya. Dalam skema lama, bahkan operasi sederhana seperti mengubah teks memerlukan keterlibatan beberapa departemen: perlu untuk mengganti bagian yang diperlukan dalam gambar, memberikan sumber ke spesialis konten yang akan mengirim gambar ke sistem file, dan menggunakan klien yang mendukung gambar yang sesuai;
- sejumlah kemungkinan untuk bekerja dengan gambar: misalnya, untuk klien web dan klien TV, gambar dengan format berbeda diperlukan. Dan untuk mendapatkannya, Anda juga harus menyalin gambar ke sistem file.
Setelah kami perhatikan bahwa sistem seperti itu terlalu rumit - kami membutuhkan otomatisasi. Setelah menganalisis dengan tepat persyaratan apa yang kami miliki untuk persiapan gambar otomatis, kami mengembangkan layanan mikro untuk menyiapkan gambar untuk berbagai jenis klien dari satu sumber dengan cepat.
Di bawah ini adalah daftar kecil persyaratan awal yang kami kumpulkan dan yang harus dipenuhi oleh layanan:
- mengubah ukuran gambar
- memotong gambar ke ukuran yang diinginkan
- mengubah ukuran gambar di satu sisi sambil mempertahankan rasio aspek
- output perubahan kualitas gambar
- ubah format gambar keluaran (jpeg, png, webp)
- menggunakan filter gauss
- kemampuan untuk mempertahankan urutan transformasi gambar
Daftar di atas mencakup persyaratan untuk persiapan otomatis poster film, acara TV, film seri, serial TV dan latar belakang untuk kartu film + permainan Liga Premier Inggris.

Ketika persyaratan ini diterapkan dan dirilis, mereka mulai memikirkan entitas layanan lainnya - koleksi, langganan, paket berlangganan. Untuk refleksi ini tentang bagaimana menangani elemen yang lebih kompleks, beberapa rencana departemen analitik untuk membuat dan mengembangkan koleksi pribadi ditambahkan: mereka ingin dapat mengumpulkan koleksi khusus untuk setiap pengguna di masa depan, membentuk komunikasi di sampul koleksi, yang, menurut rekomendasi kami mesin paling cocok untuk ini. Ini juga menambahkan ide-ide desainer untuk menghilangkan pekerjaan mereka: untuk mengajarkan layanan untuk melapisi semua jenis elemen grafis dan teks untuk kampanye pemasaran Okko, buletin dan komunikasi.
Dengan demikian, dengan munculnya permintaan untuk otomatisasi koleksi koleksi, langganan dan paket berlangganan, persyaratan layanan dilengkapi dengan poin-poin berikut:
- overlay gambar tambahan pada yang utama sesuai dengan koordinat yang ditentukan;
- overlay teks berbeda pada gambar dengan kemampuan untuk mengubah ukuran teks, tipe font, spasi baris dan spasi huruf;
- Mampu menerapkan parameter dasar bersama dengan yang baru.
Poin tambahan ini memunculkan beberapa masalah yang terkait dengan redundansi tubuh permintaan di belakang gambar dalam kasus ketika pengguna ingin meletakkan beberapa gambar di atas satu sama lain, serta mengubah jenis gambar output dan, misalnya, kualitas gambar. Ini mungkin terlihat seperti permintaan untuk overlay dua gambar dan teks:
host: port / img / picture_id? width = 556 & kualitas = 80 & mediaType = webp & putImage = picture_id2 & x_coordinate = 100 & y_coordinate = 100 & quality_2 = 95 & text = Beberapa teks & text_x = 0 & text_y = 150Jelas, mendukung jalur seperti itu tidak nyaman, mengubahnya juga, bahkan tidak nyaman hanya dengan menulis dan membaca + mengubah salah satu parameter gambar berarti rilis klien baru, yang, secara umum, tidak terlalu menyenangkan (dan untuk beberapa perangkat itu sangat panjang).
Jadi dalam layanan mikro untuk persiapan gambar, konsep preset muncul - yaml-file dengan deskripsi elemen tambahan, lokasi mereka, font, dan data lain yang diperlukan untuk mengkonfigurasi tipe gambar tertentu untuk perangkat tertentu.
Hasil
Hari ini kita berada pada tahap peralihan: sejauh ini, semua poster film / film multi-bagian / seri / seri telah disiapkan secara otomatis untuk semua jenis klien dari sampul sumber yang sama. Plus, kami secara otomatis menyiapkan poster untuk tur dan pertandingan hari Liga Primer Inggris.

Secara teknis, hari ini layanan ini mampu mendapatkan sampul tidak hanya film dan elemen olahraga, tetapi juga koleksi / langganan, juga dimungkinkan untuk menempatkan berbagai elemen grafis dan teks pada gambar tanpa harus memiliki preset.

Fungsionalitas yang diimplementasikan sudah secara signifikan menyederhanakan masa pakai: perubahan kecil pada gambar tidak harus dilakukan melalui beberapa departemen, cukup ubah atau tambahkan nilai ke satu atau beberapa parameter layanan yang bertanggung jawab untuk menampilkannya, menguji layanan mikro dan melepaskannya, yang jelas jauh lebih cepat. dari rilis membangun pelanggan baru. Mendukung jenis perangkat baru, mengeluarkan semua poster katalog ke mitra eksternal, penampilan komunikasi tambahan, bukan lagi masalah berminggu-minggu, melainkan beberapa jam.
Departemen desain telah menurunkan muatan, karena ia tidak perlu lagi menghabiskan waktu untuk menyiapkan gambar yang sama (atau sangat mirip) untuk klien yang berbeda, cukup untuk memberikan satu sumber dan menentukan aturan yang dengannya sumber ini akan ditumpangkan.
Masih ada banyak pekerjaan di depan: ada rencana untuk menambahkan AI untuk sampul cerita yang menghasilkan otomatis, antarmuka web untuk mengelola preset dengan pratinjau hasil akhir, memperluas alat ke departemen tetangga lainnya (SMM, PR), dan tentu saja tugas saat ini untuk berbagai jenis optimasi (meningkatkan kerja dengan teks, optimalisasi algoritma kompresi, dll.).
Itu saja. Jika muncul minat, kami kemudian akan mempublikasikan rincian struktur internal layanan, integrasinya ke dalam struktur umum dan proses transisi ke persiapan gambar otomatis.