Получение общего числа лайков с нужной странички vk, возможны и другие преминения

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
/**
* Делаем запрос к vk api пример выбрать первые 3 записи для сообщества glory_to_ukraine01
* var_dump(request(null, 'glory_to_ukraine01', 0, 3));
*
* @param int $owner_id идентификатор пользователя или сообщества, со стены которого необходимо получить записи (по умолчанию — текущий пользователь)
* @param string $domain короткий адрес пользователя или сообщества
* @param int $offset смещение, необходимое для выборки определенного подмножества записей
* @param int $count количество записей, которое необходимо получить (но не более 100)
* @param string $filter определяет, какие типы записей на стене необходимо получить
* @param int $extended 1 — будут возвращены три массива wall, profiles и groups. По умолчанию дополнительные поля не возвращаются
* @return array
*/
function request($owner_id = null, $domain = '', $offset = 0, $count = 0, $filter = 'all', $extended = 0)
{
$url = 'https://api.vk.com/method/wall.get?';
if (is_int($owner_id)) {
$url .= "owner_id={$owner_id}";
$url .= "&domain={$domain}";
} else {
$url .= "domain={$domain}";
}
$url .= "&offset={$offset}&count={$count}&filter={$filter}&extended={$extended}";
return json_decode(file_get_contents($url), true);
}
// Все итемы
$items = array();
// Смещение если потребуется после первого прохода цикла
$offset = 0;
// Количество итемов для извлечения, можно хоть по одному но тогда много запросов к api что замедляет работу
$count = 100;
// Общике количество лайков
$summa = 0;
// Сам цикл
do {
// Делаем запрос
$response = request(null, 'glory_to_ukraine01', $offset, $count);
// Если отсутствует ключ response нам вернули ошибку или запрос не был выполнен корректно
if(!isset($response['response'])) {
// Выполнять скрипт нет смысла если была ошибка, выбрасываем исключение
throw new RuntimeException('Bad response');
}
// всего записей
$all = array_shift($response['response']);
// Перебираем все записи что извлекли (offset + count)
foreach ($response['response'] as $item) {
// После каждой записи инкрементируем оффсет
++$offset;
$items[] = $item;
}
// Условие если итемов меньше чем всего записей то цикл выполняется
} while (count($items) < $all);
// Дальше выполняем нужную логику с массивом итемов
foreach ($items as $item) {
$summa += $item['likes']['count'];
}
echo 'summa = ', $summa;