Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2018, 08:13   #1
iskander1220
 
Регистрация: 28.06.2017
Сообщений: 7
По умолчанию Получение комментариев к посту ВКонтакта методом execute (VK API)

Здравствуйте. Имеется ли процедура для execute, с помощью которой можно получать комментарии к посту, чей ID явно не указан? То есть, по номеру поста со стены? К примеру, по этому принципу работает следующий код (из Ответа отсюда), но выяснилось, что он возвращает лишь первую сотню комментариев —

Код:
// 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[i].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 комментариев, требует явного указания идентификатора поста:


Код:
// 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};

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


Код:
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;
iskander1220 вне форума Ответить с цитированием
Старый 12.04.2018, 08:36   #2
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Вот очень странно, у ВК документация расписана, если Вы там ничего не нашли почему не написали в поддержку ВК? тут врятли кто-то Вам поможет.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение информации с вебсервиса используя REST API - Java Kvitkaa Общие вопросы по Java, Java SE, Kotlin 1 01.12.2017 02:47
получение обратной матрицы методом алгебраических дополнений Borsalino16 Паскаль, Turbo Pascal, PascalABC.NET 6 24.04.2016 14:40
Получение xml с сервера методом GET Mikhail48 Java Мобильная разработка (Android) 0 30.03.2015 10:32
Ссылка на mp3 вконтакта Flexoid2 Работа с сетью в Delphi 6 15.12.2010 02:12