• Подписан ли человек на такую группу и оставлял ли он там фотографии?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Метод users.getSubscriptions() возвращает подписки юзера. Если user_id не указывать, вернёт ваши подписки. Вот такой нехитрый код в процедуре execute() (прямо на той странице его вставьте и «Выполните») вернёт два массива: ваши и его id групп:
    var uid=12345; 
    return {
      "my": API.users.getSubscriptions().groups.items,
      "her": API.users.getSubscriptions({"user_id":uid}).groups.items
    };

    В первой строке задаётся id "того юзера", с кем сравнивать.

    Эти два массива остаётся сопоставить. Можно в скретч-паде браузера выполнить следующий код:
    var r = 
    {"response":.....} // тут целиком ответ из метода execute
    ;                  // и точка-с-запятой в конце.
    var common = [];   // сюда попадут id общих групп
    for(var i=0;i<r.response.my.length;i++){
      if( !!~r.response.her.indexOf( r.response.my[i])) 
        common.push(r.response.my[i]);
    }
    common;   // если в Scratchpad Firefox'а нажать Ctrl+L, 
              // код выполнится а в коммент вставится содержание этого массива


    Постил ли фотографии – надо просмотреть всю фото методом photos.getAll(). Параметр owner_id – по очереди, каждой из общих групп. У каждой фотографии смотреть значение поля user_id – нужны только те, где оно равно искомому юзеру.

    За один вызов метода можно получить до 200 фотографий, поэтому добавляем параметр count=200 и параметром offset листаем по 200 снимков вглубь истории. Можно опять методом execute зарядить сбор – так будет по 25*200 = 5000 фото за один вызов.
    Ответ написан
    Комментировать