Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.07.2018, 12:20
Аспирант
Отправить личное сообщение для hdma Посмотреть профиль Найти все сообщения от hdma
 
Регистрация: 28.05.2012
Сообщений: 60

Получение информации о постах со стены ВКонтакта
Имеется следующий код для метода 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;

Последний раз редактировалось hdma, 13.07.2018 в 12:25.
Ответить с цитированием
  #2 (permalink)  
Старый 15.07.2018, 21:45
Аспирант
Отправить личное сообщение для Ermite Посмотреть профиль Найти все сообщения от Ermite
 
Регистрация: 20.10.2015
Сообщений: 32

Как самый простой вариант - добавить массив с 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;


И что за метод используется? Может, там можно передать айди групп через запятую?
Ответить с цитированием
  #3 (permalink)  
Старый 16.07.2018, 09:40
Аспирант
Отправить личное сообщение для hdma Посмотреть профиль Найти все сообщения от hdma
 
Регистрация: 28.05.2012
Сообщений: 60

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



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

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:43.
Ответить с цитированием
  #4 (permalink)  
Старый 16.07.2018, 09:42
Аспирант
Отправить личное сообщение для hdma Посмотреть профиль Найти все сообщения от hdma
 
Регистрация: 28.05.2012
Сообщений: 60

А вот про метод я не в курсе.
Ответить с цитированием
  #5 (permalink)  
Старый 16.07.2018, 09:45
Аспирант
Отправить личное сообщение для hdma Посмотреть профиль Найти все сообщения от hdma
 
Регистрация: 28.05.2012
Сообщений: 60

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



Опции темы Искать в теме
Искать в теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор - числа с запятой/точкой MC-XOBAHCK Общие вопросы Javascript 65 26.08.2017 11:05
Получение некой информации при нажатие на картинку seishikage Events/DOM/Window 2 17.03.2016 15:48
Временной пояс, получение информации javascript Dima20132015 Серверные языки и технологии 1 07.06.2015 14:56
Получение части выбранной информации jquery mvanyam Общие вопросы Javascript 1 27.07.2014 16:05
Получение информации из БД через Javascript Alex351960 Элементы интерфейса 8 24.01.2014 09:13