Как найти целевую аудиторию (ЦА) ВКонтакте?
- Найдите группу которая точнее всего характеризует Вашу ЦА. Численность группы до 1000 человек. Например для тематике «квесты в реальности» можно выбрать группу http://vk.com/roomstory.
- Запускаете мой скрипт, он делает следующее:
- Собирает всех подписчиков целевой группы.
- Ищет все группы на которые подписаны люди из пункта 1.
- Подбирает группы в которых содержится максимальное число подписчиков из пункта 1.
- Вы получаете все группы в которых вступили люди из ЦА.
Скрипт работает достаточно быстро (на 1000 человек уходит 2-3 минуты). Аналоги скрипта абсолютно ВСЕ платные. Так что принимаю благодарности в виде комментариев и лайков.
Результаты работы скрипта:
МОСКОВСКИЙ ЛАБИРИНТ moslabirint
Квесты в реальности Москвы | BEST QUEST bestquest
Quest Finder — всё о квестах в реальности questfinder
World of Quests | Мир квестов в реальности worldofquests
ЛАБ.33 lab33
Супермаркет зомби (Клуб квестов) questclub24
Серьёзные игры | Квесты Москвы в реальности request_ru
Волонтерим volonterim
CityQuest — квесты в реальности cityquestru
Кубикулум — игра-квест cubiculum_quest
RoomQuest roomquestmoscow
ТЕМНОТА | ТЕХНОЛОГИЯ КВЕСТА temnota_game
QuestMakers — квесты в реальности! questmakers
Все квесты в одном месте г. Москва vsequests
ТЕХНОЛОГИЯ КВЕСТА | ВСЕ В ОДНОМ МЕСТЕ! questreality
Rabbit Hole — квесты «выберись из комнаты» holequest
QuestPlay «Большой куш» questplay
Запертые. Квест в реальности. zapertye
Квесты и перфомансы в реальности Wember wemberquests
Скрипт:
<? header('Content-Type: text/html; charset=UTF-8'); ini_set('display_errors','On'); error_reporting('E_ALL'); function vk_query($url, $params) { $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); $result = curl_exec($ch); curl_close($ch); return $result; } if (empty($_SESSION['access_token'])){ $client_id = ''; // ID приложения $client_secret = ''; // Защищённый ключ $redirect_uri = 'http://w7.ru/tools/vk/audience.php'; // Адрес сайта $url = 'http://oauth.vk.com/authorize'; $params = array( 'client_id' => $client_id, 'redirect_uri' => $redirect_uri, 'scope' => 'offline', 'response_type' => 'code' ); echo $link = '<p><a href="' . $url . '?' . urldecode(http_build_query($params)) . '">Аутентификация через ВКонтакте</a></p>'; if (isset($_GET['code'])) { $result = false; $params = array( 'client_id' => $client_id, 'client_secret' => $client_secret, 'code' => $_GET['code'], 'redirect_uri' => $redirect_uri ); $token = json_decode(file_get_contents('https://oauth.vk.com/access_token' . '?' . urldecode(http_build_query($params))), true); if (isset($token['access_token'])) { $_SESSION['access_token'] = $token['access_token']; get_cabinet(); } } } else get_cabinet(); function get_cabinet(){ $group_id = 'roomstory'; $result = json_decode(vk_query('https://api.vk.com/method/groups.getById', array( 'group_id' => $group_id, 'fields' => 'members_count' )), true); $group_vk_array = $result['response'][0]; $group_vk_id = $group_vk_array['gid']; $group_vk_count = $group_vk_array['members_count']; $query_count = ceil(ceil($group_vk_count / 1000) / 25); $members_all = array(); for ($i=0; $i<$query_count; $i++){ $offset_out = $i*25000; $query = " var members = API.groups.getMembers({\"group_id\": $group_vk_id, \"count\":1000, \"offset\": $offset_out}).items; var offset = 1000; while (offset < 25000 && (offset+$offset_out < $group_vk_count)){ members = members + API.groups.getMembers({\"group_id\": $group_vk_id, \"count\":1000, \"offset\": ($offset_out + offset)}).items; offset = offset + 1000; }; return members; "; $result = json_decode(vk_query('https://api.vk.com/method/execute', array( 'access_token' => $_SESSION['access_token'], 'code' => "$query", 'v' => '5.37' )), true); $members_all = array_merge($members_all, $result['response']); } $i=0; /* var user_ids = [1,141823452]; var user_groups = []; var i = 0; while (i < user_ids.length){ user_groups = user_groups + API.users.getSubscriptions({"user_id": user_ids[i], "extended": "0"}).groups.items; i = i + 1; } return user_groups; */ $i = 0; $u_ids = $gr_all = array(); foreach ($members_all as $u_id){ if ($i >= 24){ $u_ids_str = implode(',', $u_ids); $query = ' var user_ids = ['.$u_ids_str.']; var user_groups = []; var i = 0; while (i < user_ids.length){ user_groups = user_groups + API.users.getSubscriptions({"user_id": user_ids[i], "extended": "0"}).groups.items; i = i + 1; } return user_groups;'; $result = json_decode(vk_query('https://api.vk.com/method/execute', array( 'access_token' => $_SESSION['access_token'], 'code' => "$query", 'v' => '5.37' )), true); $gr_all = array_merge($gr_all, $result['response']); $u_ids = array(); $i = 0; } $u_ids[] = $u_id; $i++; } if (!empty($u_ids)){ $u_ids_str = implode(',', $u_ids); $query = ' var user_ids = ['.$u_ids_str.']; var user_groups = []; var i = 0; while (i < user_ids.length){ user_groups = user_groups + API.users.getSubscriptions({"user_id": user_ids[i], "extended": "0"}).groups.items; i = i + 1; } return user_groups;'; $result = json_decode(vk_query('https://api.vk.com/method/execute', array( 'access_token' => $_SESSION['access_token'], 'code' => "$query", 'v' => '5.37' )), true); $gr_all = array_merge($gr_all, $result['response']); } /* foreach ($members_all as $u_id){ $vk_result = vk_query('https://api.vk.com/method/users.getSubscriptions', array( 'user_id' => $u_id, 'extended' => 0, 'param_v' => '5.37' )); $result = json_decode($vk_result, true); if ($result['response']['groups']['count'] > 0){ $gr = $result['response']['groups']['items']; $gr_all = array_merge($gr_all, $gr); } } */ $top_gr = array_count_values($gr_all); arsort($top_gr); $top_gr_ids = array_keys($top_gr); $gr_part = array_chunk($top_gr_ids, 500, true); $i = 0; $gr_all = array(); foreach ($gr_part as $part){ $u_ids_str = implode(',', $part); if ($i >= 9){ $u_ids_str_a = implode(',', $gr_ids_25); $query = ' var user_ids = ['.$u_ids_str_a.']; var user_groups = []; var i = 0; while (i < user_ids.length){ user_groups = user_groups + API.groups.getById({"group_ids": user_ids[i], "fields": "members_count"}); i = i + 1; } return user_groups;'; $result = json_decode(vk_query('https://api.vk.com/method/execute', array( 'access_token' => $_SESSION['access_token'], 'code' => "$query", 'v' => '5.37' )), true); $gr_all = array_merge($gr_all, $result['response']); $i = 0; $gr_ids_25 = array(); } $gr_ids_25[] = '['.$u_ids_str.']'; $i++; } if (!empty($u_ids)){ $u_ids_str_a = implode(',', $gr_ids_25); $query = ' var user_ids = ['.$u_ids_str_a.']; var user_groups = []; var i = 0; while (i < user_ids.length){ user_groups = user_groups + API.groups.getById({"group_ids": user_ids[i], "fields": "members_count"}); i = i + 1; } return user_groups;'; $result = json_decode(vk_query('https://api.vk.com/method/execute', array( 'access_token' => $_SESSION['access_token'], 'code' => "$query", 'v' => '5.37' )), true); $gr_all = array_merge($gr_all, $result['response']); } foreach ($gr_all as $g){ if ($g['members_count'] < 30000) $gr_print[] = $g['gid'].' '.$g['name'].' '.$g['screen_name'].'<br />'; } $gr_print = array_slice($gr_print, 0, 1000); foreach ($gr_print as $g){ echo $g; } } ?>