powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Получение комментариев к посту ВКонтакта методом execute (VK API)
1 сообщений из 1, страница 1 из 1
Получение комментариев к посту ВКонтакта методом execute (VK API)
    #39609421
q777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Имеется ли процедура для execute , с помощью которой можно получать комментарии к посту, чей ID явно не указан? То есть, по номеру поста со стены? К примеру, по этому принципу работает следующий код ( из Ответа отсюда ), но выяснилось, что он возвращает лишь первую сотню комментариев —

Код: sql
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.
// https://ru.stackoverflow.com/questions/604524/
var owner_id = Args.owner_id;
var user_id = Args.user_id;
var offset = Args.offset;
var post_count = Args.post_count;

if (post_count == null)
    post_count = 1;         // количество обрабатываемых постов

// Получаем список постов
var posts = API.wall.get({
    "owner_id": owner_id,
    "offset": offset,
    "count" : 100,
});

var i = 0;
var userComments = {};

while(i < posts.items.length && i < post_count)
{
    var post_id = posts.items.id;
    var comments = API.wall.getComments({
        "owner_id": owner_id,
        "post_id": post_id,

        "count" : 100,
    });

    var j = 0;
    while(j < comments.items.length)
    {
        if (user_id == null || comments.items[j].from_id == user_id)
            userComments.push(comments.items[j]);

        j = j + 1;
    }

    i = i + 1;
}

return userComments;



А вот этот код ( отсюда ), возвращающий 2500 комментариев, требует явного указания идентификатора поста:


Код: sql
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.
// https://ru.stackoverflow.com/questions/780304/
// count  --> 2500 / по умолчанию --> 10
// offset --> 0, 2500, 5000, 7500 и тд
var owner_id = Args.owner_id;
var post_id = Args.post_id;
var offset = Args.offset;
var count = Args.count;

if(post_id == null || owner_id == null){
    return {"count": 0, "items": []};  // Если параметры не заданы, возвращаем пустой массив
}
if(count == null){
    count = 10; // Значение по умолчанию
}
if(offset == null){
    offset = 0; // Значение по умолчанию
}
var i = 0;
var items = [];
while(i < 25 && count > items.length){
    var cur_count = count - items.length;
    if(cur_count > 100){
        cur_count = 100;
    }
    items = items + API.wall.getComments({"owner_id": owner_id, "post_id": post_id, "offset": offset+100*i, "count": cur_count, "need_likes":1})["items"];
    i = i + 1;
}
return {"count": items.length, "items": items};




Вопрос заключается в совмещении функционала из обоих кодов, чтобы вызывать процедуру можно было с указанием смещения [i]offset
, а не с указанием номера поста. Может быть, для этого в первый код (настроенный на обработку одного поста за один раз) достаточно будет добавить последовательный вызов методов со смещением, как в следующем коде, получающем за раз 500 постов? —



Код: sql
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.
var owner_id = Args.owner_id; 
var offset   = Args.offset; 
 
return 
    API.wall.get({ 
        "owner_id" : owner_id, 
        "count"    : 100, 
        "filter"   : "owner", 
        "offset"   : parseInt(offset) + 0 * 100 
    }).items +  
    API.wall.get({ 
        "owner_id" : owner_id, 
        "count"    : 100, 
        "filter"   : "owner", 
        "offset"   : parseInt(offset) + 1 * 100 
    }).items + 
    API.wall.get({ 
        "owner_id" : owner_id, 
        "count"    : 100, 
        "filter"   : "owner", 
        "offset"   : parseInt(offset) + 2 * 100 
    }).items +  
    API.wall.get({ 
        "owner_id" : owner_id, 
        "count"    : 100, 
        "filter"   : "owner", 
        "offset"   : parseInt(offset) + 3 * 100 
    }).items + 
    API.wall.get({ 
        "owner_id" : owner_id, 
        "count"    : 100, 
        "filter"   : "owner", 
        "offset"   : parseInt(offset) + 4 * 100 
    }).items;
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Получение комментариев к посту ВКонтакта методом execute (VK API)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]