Делаем себе фотогалерею с помощью API Вконтакте

в 6:27, , рубрики: api, php, Вконтакте, фотоальбомы, фотогалерея, метки: , , , ,

Недавно попросили сделать небольшую фотогалерею, но заранее предупредили, что на веб-сервере картинки и фотографии храниться не должны.
Эта фраза немного заступорила меня, так как с веб-программированием, так сказать, я связался совсем недавно, поэтому проще бы было найти готовое решение, которое я не нашёл. Но в голову пришла идея сделать всё, используя API социальной сети Вконтакте.

Начнём мы с того, что для написания скрипта нам понадобятся два метода:
1) photos.getAlbums – возвращает список альбомов пользователя.
2) photos.get – возвращает список фотографий в альбоме.

Теперь рассмотрим эти два метода подробнее, и решим, что именно нам нужно взять для нашей галереи.
Какие же ответы мы получим при использовании метода getAlbums:
— aid
— thumb_id
— owner_id
— title
— description
— created
— updated
— size
— can_upload

Не буду объяснять, что есть что. Вроде и так всё относительно понятно. Ну а нам, собственно, для нашей маленькой галереи, с этого запроса понадобится, пока что, только aid и title.
AID — Album ID
Title — название нашего альбома.

А теперь перейдем к самому интересному.
Сделаем себе крутой файл, с крутым названием index.php:

<?php
$url = 'http://api.vkontakte.ru/method/photos.getAlbums?gid=20629724'; //делаем запрос, получаем данные об альбомах паблика Хабры. gid = ID групы или паблика
$content = file_get_contents($url);
$json = json_decode($content, true); //обрабатываем полученный json

foreach($json['response'] as $item) {
	print '<a href=./photos.php?album=' . $item['aid'] . '>' . $item['title'] . '</a><br>'; //находим в response наш AID и Title, после чего формируем ссылку в виде GET запроса, потому что именно так в моём примере мы будем понимать, в какой именно альбом мы попали. 
}
?>

На этом с index.php всё закончено. Естественно, нужно для себя оформить всё красиво, и можно даже добавить описание альбомов, и даже обложку, но не в этом примере.

Теперь рассмотрим наш второй метод, который называется photos.get:
— pid
— aid
— owner_id
— user_id
— src
— src_big
— src_small
— src_xbig
— width
— height
— text
— created

В нашем случае мы используем только src_big.
И сразу переходим к созданию второго крутого файлика, который я назвал photos.php:

<?php
$url = 'http://api.vkontakte.ru/method/photos.get?gid=20629724&aid=' . $_GET["album"]; //делаем запрос к API, забираем  из GET запроса ID нашего альбома, который мы получили благодаря предыдущему скрипту.
$content = file_get_contents($url);
$json = json_decode($content, true);

foreach($json['response'] as $item) {
	print '<img src=' . $item['src_big'] . '>'; //находим все наши src_big и делаем из них картинку, с помощью всеми любимого тега <img></img>
}
?>

Демонстрацию работы можно посмотреть вот тут — http://promo.thisistema.od.ua/habr/

Вот теперь, если вы всё сделали правильно — при переходе на страничку index.php вы увидите список фотоальбомов группы, а при переходе дальше — сами фотографии фотоальбомов.

При создании собственной галереи — не поленитесь использовать возможности API по-максимуму, добавляя описание, просмотры в разных размерах, даты создания.

P.S. Не рекомендую использовать этот скрипт для объемных фотоальбомов.

Автор: Gudson

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js