Вывод по запросу сообществ, в которых есть ваши друзья (execute)

от автора

image

Всем привет! На днях меня встал вопрос, чем мои друзья занимаются, как найти, например друзей которые увлекается сноубордом.

Для этого я решил написать небольшую плюху, используя VK API.

В проекте решил продолжить написание на angularJS, и начал с написания кода для метода APIexecute, на VK Script.
В проекте я вынес его в отдельный файл (/js/execute/get_array_members_in_groups.js) для удобства, и дергаю с помощью $.get.

var groups_ids = $groups_ids$; var arr_groups = "";  var i = 0; while (i < groups_ids.length) {     var items = API.groups.getMembers({         "group_id": groups_ids[i],         "v": "5.27",         "count": "1000",         filter: "friends"     }).items;     var j = 0;     var items_result = "";     while (j < items.length) {         if (j == 0)             items_result = items[j];         else             items_result = items_result + ", " + items[j];         j = j + 1;     }     if (i == 0)         arr_groups = "{\"id\": " + groups_ids[i] + ", \"items\": [" + items_result + "]}";     else         arr_groups = arr_groups + ", {\"id\": " + groups_ids[i] + ", \"items\": [" + items_result + "]}";     i = i + 1; }  return "[" + arr_groups + "]"; 

На VK Script, без извращения составить нужные выходные данные не так просто, я бы сказал это невозможно.

$groups_ids$ — это id’шники групп, их вставляю с помощью функции замены.

 var code = array_members_in_groups // текст VK Script (упомянутый выше)             .replace("$groups_ids$", JSON.stringify(groups)); // groups - массив id'шников 

Далее с помощью рекурсии я стал пускать этот скрипт (1000/25, 1000 — максимальное число возвращаемое методом groups.search, даже не смотря на offset) 40 раз, это максимальное число операция для получения структурированных данных. ([{id: ИД_ГРУППЫ, items: [ИД_ДРУЗЕЙ…..]}…)

Не буду объяснять все до мельчайших деталей, ниже приложу исходники, кода не много.

Ссылки:
Демо (вторая вкладка): vk.com/app4236781
Исходники: github.com/romkagolovadvayha/romkagolovadvayha.github.io/tree/master/vk-search-friends-by-group

Применено:
Сложение массивов: habrahabr.ru/post/250191
Опыт работы с VK Script: habrahabr.ru/post/248725
AngularJS: angular.ru

Серверные методы API
vk.com/dev/groups.search
vk.com/dev/groups.getMembers
vk.com/dev/execute
vk.com/dev/groups.getById
vk.com/dev/users.get

ссылка на оригинал статьи http://habrahabr.ru/post/272501/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *