ВКонтакте существует множество пабликов, таких как: 90-60-90, 40 КГ, Спортивные девушки. В данных пабликах пользователи выкладывают фотографии своих фигур, фотографии «до» и «после» диеты / занятия спортом и прочее. Общее количество фотографий в альбомах этих групп порой превышает десятки тысяч. Выкладывая фотографии, многие не задумываются о последствиях, наивно пологая что если кинуть свою фотку в тысячи подобных, то никто ее и не найдет. Под катом описан процесс поиска фотографий конкретного пользователя в группах.
Имеется:
Необходимо:
В контакте отсутствует метод прямого получения фотографий, опубликованных конкретным пользователем в конкретной группе. Однако, добиться нужного результата можно по следующей схеме:
1. Получаем список альбомов, используя метод photos.getAlbums:
2. Получаем список фотографий, находящихся в альбоме (aid), используя метод photos.get:
3. Получаем URL фотографии, используя метод photos.getById
Перебирать все группы довольно длительный процесс и запускать его каждый раз при поиске фотографии конкретного человека дело не целесообразно. Для ускорения поиска достаточно проиндексировать все фотографии путем добавления индекса во внутреннюю таблицу.
В таблице достаточно содержать 3 поля:
После индексации групп, достаточно выполнить запрос
И обращаться к API с целью получения ссылки на фотографию.
Используя метод friends.get, можно получить список друзей, а затем произвести поиск по БД с целью получения фотографий друзей:
Постановка задачи
Имеется:
- 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
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий