Чому я вирішив написати цю невелику статтю? Хоча ажіотаж навколо цієї теми і спав, все одно вона залишається досить популярною, знаходяться як «клієнти», готові платити дуже великі гроші, так і бажаючі навчитися це робити самому. Я працював з однією «студією», яка бере шестизначні суми за цю роботу, при цьому кидаючи своїх розробників і дрібних клієнтів. Так ось, щоб у цій сфері не було монополії, і всі побачили, наскільки легко це робиться, я і вирішив написати статтю.
Я опишу, як зробити динамічну обкладинку, яка буде показувати поточний час і останнього передплатника. Будь-який інший функціонал робиться не складніше - трохи більше рядків коду і доступ до API інших сервісів.
Що нам знадобиться? Всього лише підготовлений фон для обкладинки і access_token для групи з правами доступу до фотографій. Наводжу приклад на Java, але зробити це можна і будь-яким іншим способом.
Обробляємо запит від Callback API
Виглядати цей запит буде приблизно так:
Парсити JSON, я думаю, все вміють. Звідси нам потрібен тільки id користувача, і по ньому ми вже отримуємо ім'я, прізвище та посилання на фотографію.
Досить зробити такий GET-запит:
У відповідь ми отримаємо:
Все, у нас є вся необхідна інформація, залишилося додати це на обкладинку і завантажити її.
Припустимо, що ви заздалегідь знайшли зображення для фону і знаєте, по яким координатам має розташовуватися те, що ви хочете додати на обкладинку. Всі ці дрібні подробиці опустимо і перейдемо до коду:
Я не став приводити простирадла коду, що допомагають на Java нормально зменшувати зображення і робити CircleCrop по центру, це легко пишеться власноручно або спокійно гугл. Також, настройку шрифтів і інші дрібні моменти я теж опустив.
В принципі, все - ми отримали готову обкладинку, залишилося тільки завантажити її. Просто, чи не так?
Все робиться дуже просто і докладно описано в документації до API.
Отримуємо сервер для завантаження обкладинки, відправивши GET-запит:
Де ACCESS_TOKEN - токен з правами доступу до фотографій групи.
З відповіді беремо upload_url:
Тепер на наш upload_url відправляємо POST-запит з полем photo в форматі multipart / form-data, точно також, як і з будь-якими документами. Я вже висвітлював це питання в іншій статті.
У відповідь ми отримаємо наступне:
Все, залишилося зробити один GET-запит і обкладинка засяє в співтоваристві:
Де HASH і PHOTO отримані з попереднього пункту, а токен все той же.
Готово, динамічна обкладинка заробила.
Щоб додати будь-яку іншу інформацію, оновлення якої буде ініціюватися нами, а не запитами з іншого сервера, потрібно виконати ще менше праці.
Раніше ми не дарма зберігали результат обробки в окремий файл. Тепер ми зможемо робити «багатошарову» обкладинку, не втрачаючи попередню інформацію.
Наприклад, ось так можна транслювати даний час на обкладинку:
Щоб створити навіть найскладнішу обкладинку, мінливу в залежності від пір року, погоди, поточного часу, з відображенням курсу валют і взагалі чого завгодно, потрібно витратити всього півгодини роботи і пару сотень рядків коду.