Створюємо динамічну обкладинку вконтакте - вконтакте - форум

Чому я вирішив написати цю невелику статтю? Хоча ажіотаж навколо цієї теми і спав, все одно вона залишається досить популярною, знаходяться як «клієнти», готові платити дуже великі гроші, так і бажаючі навчитися це робити самому. Я працював з однією «студією», яка бере шестизначні суми за цю роботу, при цьому кидаючи своїх розробників і дрібних клієнтів. Так ось, щоб у цій сфері не було монополії, і всі побачили, наскільки легко це робиться, я і вирішив написати статтю.

Я опишу, як зробити динамічну обкладинку, яка буде показувати поточний час і останнього передплатника. Будь-який інший функціонал робиться не складніше - трохи більше рядків коду і доступ до 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 отримані з попереднього пункту, а токен все той же.

Готово, динамічна обкладинка заробила.

Щоб додати будь-яку іншу інформацію, оновлення якої буде ініціюватися нами, а не запитами з іншого сервера, потрібно виконати ще менше праці.

Раніше ми не дарма зберігали результат обробки в окремий файл. Тепер ми зможемо робити «багатошарову» обкладинку, не втрачаючи попередню інформацію.

Наприклад, ось так можна транслювати даний час на обкладинку:

Щоб створити навіть найскладнішу обкладинку, мінливу в залежності від пір року, погоди, поточного часу, з відображенням курсу валют і взагалі чого завгодно, потрібно витратити всього півгодини роботи і пару сотень рядків коду.

Схожі статті