Недавно попросили сделать небольшую фотогалерею, но заранее предупредили, что на веб-сервере картинки и фотографии храниться не должны.
Эта фраза немного заступорила меня, так как с веб-программированием, так сказать, я связался совсем недавно, поэтому проще бы было найти готовое решение, которое я не нашёл. Но в голову пришла идея сделать всё, используя 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