Постановка задачи
Имеется:
- uid — ID пользователя ВКонтакте
- gid — ID группы ВКонтакте
Необходимо:
- Найти все фотографии пользователя uid, опубликованных в группе gid
- Определить в каком альбоме находится каждая фотография
API ВКонтакте
В контакте отсутствует метод прямого получения фотографий, опубликованных конкретным пользователем в конкретной группе. Однако, добиться нужного результата можно по следующей схеме:
1. Получаем список альбомов, используя метод photos.getAlbums:
VK.api("photos.getAlbums", { gid: gid }, function(result){ if (result.response){ // Список альбомов лежит в массиве result.response // Идентификатор альбома находится в поле aid }else{ // Не удалось получить список альбомов } });
2. Получаем список фотографий, находящихся в альбоме (aid), используя метод photos.get:
VK.api("photos.get", { gid: gid, aid: aid }, function(result){ if (result.response){ // Список фотографий лежит в массиве result.response // ID владельца фотографии содержится в поле owner_id // ID фотографии содержится в поле pid }else{ // Не удалось получить список фотографий в альбоме } });
3. Получаем URL фотографии, используя метод photos.getById
VK.api("photos.getById", { photos: pids }, function(result){ if(result.response){ for(var i=0; i<result.response.length; i++){ var p = result.response[i], src = p.src_big; // URL фотографии if (p.src_xbig) src = p.src_xbig; if (p.src_xxbig) src = p.src_xxbig; if (p.src_xxxbig) src = p.src_xxxbig; } } });
Как ускорить поиск?
Перебирать все группы довольно длительный процесс и запускать его каждый раз при поиске фотографии конкретного человека дело не целесообразно. Для ускорения поиска достаточно проиндексировать все фотографии путем добавления индекса во внутреннюю таблицу.
В таблице достаточно содержать 3 поля:
- uid — ID пользователя
- gid — ID группы
- pid — ID фотографии
После индексации групп, достаточно выполнить запрос
SELECT * FROM table WHERE uid = uid
И обращаться к API с целью получения ссылки на фотографию.
Поиск фотографий друзей
Используя метод friends.get, можно получить список друзей, а затем произвести поиск по БД с целью получения фотографий друзей:
VK.api('friends.get', { user_id: uid }, function(result){ if(result.response){ // Далее производим поиск фотографий по ID друзей } });
Ссылки
- Сайт для поиска фотографий: photovk.ru
- Приложение ВКонтакте для поиска фотографий: vk.com/app4262126
ссылка на оригинал статьи http://habrahabr.ru/post/216971/
Добавить комментарий