Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получение информации о постах со стены ВКонтакта (https://javascript.ru/forum/misc/74449-poluchenie-informacii-o-postakh-so-steny-vkontakta.html)

hdma 13.07.2018 12:20

Получение информации о постах со стены ВКонтакта
 
Имеется следующий код для метода execute, с помощью которого можно получать информацию по количеству лайков, репостов, комментариев, дат и айди (см. среди закомментированного) — к до двух тысячам пяти ста постам указанного сообщества или профиля (например, при использовании для мониторинга обновлений в группе). Есть ли возможность настроить код на получение инфы одновременно с двух стен (в частности, сообществ), чтобы в одном сообщении приходило два массива с сотней айди к двум разным сообществам (код ниже настроен на сотню для одного сообщества)? Подошло бы решение в том числе с дублированием кода, но чтобы за один раз код отрабатывал дважды для разных сообществ.

// [url]https://ru.stackoverflow.com/questions/479670/[/url]
var ITERS = 1;     // до 25 итераций
var COUNT = 100;   // до 100 постов за 1 итерацию
var posts = [];
var req_params = {
        "owner_id" : Args.id,  // здесь вместо аргументов в кавычках можно указать айди группы 
        "offset" : 0,
        "count"  : COUNT,
        "v" : "5.34"
};
var i = 0;
while(i < ITERS){
    req_params.offset = i*COUNT + ITERS*COUNT*Args.offset;
    var items = API.wall.get(req_params).items;

    if (items.length == 0) {
        return posts;
    }

    var ids = items@.id;
    var tmp = {};
    //tmp.chunk_size = ids.length;
    tmp.ids = ids;
    //tmp.likes = [email]items@.likes@.coun[/email]t;
    //tmp.reposts = [email]items@.reposts@.coun[/email]t;
    //tmp.comments = [email]items@.comments@.coun[/email]t;
    //tmp.dates = items@.date;
    posts.push(tmp);

    i = i + 1;
}
return posts;

Ermite 15.07.2018 21:45

Как самый простой вариант - добавить массив с ID групп и обернуть всю это в общий цикл
var posts = [];
var groupIds = [1,2]; // массив с ID групп

for (let id of groupIds) {
	posts[id] = [];

	var ITERS = 1;     // до 25 итераций
	var COUNT = 100;   // до 100 постов за 1 итерацию
	var req_params = {
			"owner_id" : id,  // здесь вместо аргументов в кавычках можно указать айди группы 
			"offset" : 0,
			"count"  : COUNT,
			"v" : "5.34"
	};
	var i = 0;
	while(i < ITERS){
		req_params.offset = i*COUNT + ITERS*COUNT*Args.offset;
		var items = API.wall.get(req_params).items;

		if (items.length == 0) {
			break;
		}

		var ids = items@.id;
		var tmp = {};
		//tmp.chunk_size = ids.length;
		tmp.ids = ids;
		//tmp.likes = [email]items@.likes@.coun[/email]t;
		//tmp.reposts = [email]items@.reposts@.coun[/email]t;
		//tmp.comments = [email]items@.comments@.coun[/email]t;
		//tmp.dates = items@.date;
		posts[id].push(tmp);

		i = i + 1;
	}
}
return posts;


И что за метод используется? Может, там можно передать айди групп через запятую?

hdma 16.07.2018 09:40

Выяснилось, что там используется немного урезанный по возможностям яваскрипт, видимо поэтому выводит ошибку синтаксиса:



Мне еще подсказали следующий код, но там он тоже не отрабатывает:

var listz = ["-29534144", "-125004421"];
var ITERS = 1;        // до 25 итераций    
var COUNT = 100;   // до 100 постов за 1 итерацию    
var posts = [];    
var j = 0; 
while(j < listz.length) {  
var req_params = {    
        "owner_id" : listz[j],      
        "offset" : 0,    
        "count"  : COUNT,    
        "v" : "5.34"    
};    
var i = 0;    
while(i < ITERS){    
    req_params.offset = i*COUNT + ITERS*COUNT*Args.offset;    
    var items = API.wall.get(req_params).items;    

    if (items.length == 0) {    
        return posts;    
    }    

    var ids = items@.id;    
    var tmp = {};    
    tmp.ids = ids;    
    posts[listz[j]].push(tmp);    

    i = i + 1;    
} 
j = j + 1; 
}  
return posts;

hdma 16.07.2018 09:42

А вот про метод я не в курсе.

hdma 16.07.2018 09:45

Может имелся в виду метод execute? Да, это он))


Часовой пояс GMT +3, время: 14:51.