Всем привет! На днях меня встал вопрос, чем мои друзья занимаются, как найти, например друзей которые увлекается сноубордом.
Для этого я решил написать небольшую плюху, используя VK API.
В проекте решил продолжить написание на angularJS, и начал с написания кода для метода API — execute, на 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/
Добавить комментарий