vk execute – parse array or posts and get comments of each

vk executepy_vk

Родил, наконец-то, следующее детище Франкенштейна:

Этот скрипт позволяет форматировать первый аргумент – строку-список с post_id типа “53288,53303,53306,53288,” (обязательно с запятой вконце, чтобы ометить конец строки) – в понятный для vk executearray – список айди постов, и потом, до тех пор, пока длина этого списка не будет равна 0 – он будет получать комментарии с каждого элемента этого списка и сохранять их в переменной all_comments и в свою очередь, если кол-во комментов под постов больше 100 – запускать второй while до тех пор, пока счетчик comments_cnt(сколько комментов в посте) не сравняется со счетчиком offset_comments(на сколько сдвигать выборку).

Результат обработки 4-х постов с комментами (305, 13, 5, 6): = 329 комментариев

var myList = Args.post_id_array_str;
var listSeparator = ",";
var listItemsType = "integer";
var result = [];
var charsLength = myList.length;
var currentPosition = 0;
var previousSeparatorPosition = -1;
var item;
while (currentPosition < charsLength) {
	if (myList.substr(currentPosition, 1) == listSeparator) {
		item = myList.substr(previousSeparatorPosition + 1, currentPosition - previousSeparatorPosition - 1);
		if (listItemsType == "integer") {
			item = parseInt(item);
		}
		result.push(item);
		previousSeparatorPosition = currentPosition;
	}
	currentPosition = currentPosition + 1;
}
var post_id;
var posts = result;
var all_comments = [];
while (posts.length != 0){post_id = posts.shift();
        var owner_id = Args.owner_id;
        var comments = API.wall.getComments(
            {"owner_id":(owner_id),
             "post_id":(post_id),
             "need_likes":"1",
             "offset":"0",
             "count":"100",
             "sort":"asc",
             "preview_length":"1",
             "extended":"0",
             "v":"5.27"});
        var comments_cnt = comments.count;
        comments = comments.items;
        var offset_comments = 100;
        while (offset_comments < comments_cnt)
            {comments = comments + API.wall.getComments(
                {"owner_id":(owner_id),
                 "post_id":(post_id),
                 "need_likes":"1",
                 "offset":(offset_comments),
                 "count":"100",
                 "sort":"asc",
                 "preview_length":"1",
                 "extended":"0",
                 "v":"5.27"}
            ).items;
        offset_comments = offset_comments + 100;};
        all_comments = all_comments+comments;
    };
return all_comments;

Хух блять, пользуйтесь, кому попадется.

About trianglesis

Александр Брюндтзвельт - гений, филантроп, 100 гривен в кармане. Этот блог - "сток" моих мыслей и заметок. Достаточно одного взгляда на него, чтобы понять, что такой же бардак творится у меня в голове. Если вам этот бардак интересен - милости прошу.
Bookmark the permalink.