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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2018, 19:05   #1
iskander1220
 
Регистрация: 28.06.2017
Сообщений: 7
По умолчанию Дублирование фрагмента JS-кода с условием

Привет! Следующий код представляет собой процедуру для execute, с помощью которой можно возвращать комментарии к посту ВКонтакта, по его номеру от первого поста в сообществе (то есть, без указания айдишника поста). Также он возвращает только комментарии отдельного пользователя, если его айди указать в user_id. А за счёт извлечения постов по порядковым номерам — во-первых, избавляет от необходимости указывать в аргументах и получать точные ИД-постов заранее, а во-вторых, позволяет отслеживать и накапливать на inoreader.com комментарии со стен чужих сообществ. То есть, достаточно будет на feed43.com создать RSS-ленту с offset=1 в аргументах, потом вторую ленту с offset=2 (и так далее — в меру необходимости), а затем на inoreader.com объединить эти ленты в одну непрерывную и получать примерно получасовые обновления.

Проблема заключается в том, что код возвращает лишь первую сотню комментариев, хотя возможности execute позволяют это число увеличить, в чём и прошу посодействовать. Для этого, как гуманитарию представляется, к фрагменту кода, где получают сто комментариев, надо добавить offset=0, потом запомнить результаты и продублировать фрагмент с получением следующей сотни комментариев, но уже с добавлением offset=100, и так далее. Что будет примерным выражением (потому что вместо ИД поста "8331059" — в коде достаточно указать его номер на стене сообщества) следующих команд:

Код:
https://api.vk.com/method/wall.getComments?owner_id=-29534144&post_id=8331059&offset=0&count=100&v=5.35
https://api.vk.com/method/wall.getComments?owner_id=-29534144&post_id=8331059&offset=100&count=100&v=5.35
...
Сам код (с подсветкой доступен по ссылке):

Код:
// 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,
                               // здесь, возможно, потребуется "offset": 0,
        "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;

Последний раз редактировалось iskander1220; 08.03.2018 в 01:02.
iskander1220 вне форума Ответить с цитированием
Старый 08.03.2018, 00:09   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Так в чём вопрос-то?
Black Fregat вне форума Ответить с цитированием
Старый 08.03.2018, 00:38   #3
iskander1220
 
Регистрация: 28.06.2017
Сообщений: 7
По умолчанию

Имелось в виду, что сейчас код возвращает 100 комментариев к посту (в настройках на обработке один пост), а задача далее продублировать эту же команду несколько раз, увеличивая сдвиг по офсет.
iskander1220 вне форума Ответить с цитированием
Старый 08.03.2018, 06:07   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Ну Вы же сами детально изложили, что именно нужно сделать.
И в коде комментарий даже поставили. Что не выходит?
Black Fregat вне форума Ответить с цитированием
Старый 08.03.2018, 10:03   #5
iskander1220
 
Регистрация: 28.06.2017
Сообщений: 7
По умолчанию

Не выходит понимание последовательности действий вызова процедуры — представить в виде работающего js-кода)). Затруднение вызывает: что именно надо дублировать, как потом всё это связать, чтобы данные прибавлялись к предыдущим результатам и т.д.
iskander1220 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пояснение фрагмента. INShcherbakov Помощь студентам 6 19.12.2014 13:26
Получение фрагмента HTML кода страницы Meow HellYeah Работа с сетью в Delphi 7 30.03.2014 14:57
Убрать дублирование кода шаблонной функции higimo Общие вопросы C/C++ 1 25.12.2013 12:27
Есть ли альтернатива "for to do" для фрагмента кода?? Vova777 Общие вопросы Delphi 13 07.10.2011 15:39
Прошу помощи в проверке моего перевода небольшого фрагмента кода от Си к делфи! SkAndrew Общие вопросы Delphi 11 16.08.2009 16:37