Список друзей, не установивших приложение

Готовые уроки IFrame + ВКонтакте API
ToresMax
Сообщения: 21
Зарегистрирован: 02 дек 2011, 18:13

Re: Список друзей, не установивших приложение

Сообщение ToresMax »

Как вывести друзей которые установили приложение?
Аватара пользователя
Mihailow_du
Сообщения: 63
Зарегистрирован: 24 янв 2012, 18:26

Re: Список друзей, не установивших приложение

Сообщение Mihailow_du »

ToresMax писал(а):Как вывести друзей которые установили приложение?
Тоже хочу это найти!!!

Только что бы массив всех друзей забился на два списка (два столбца):
в одном перечень тех кто в приложении, а в соседнем кто еще не поставил...
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: Список друзей, не установивших приложение

Сообщение Serge »

Mihailow_du писал(а):
ToresMax писал(а):Как вывести друзей которые установили приложение?
Тоже хочу это найти!!!

Только что бы массив всех друзей забился на два списка (два столбца):
в одном перечень тех кто в приложении, а в соседнем кто еще не поставил...
Это не искать надо, а взять и сделать. В этом уроке все подробно расписано, как получить список всех друзей и список друзей в приложении, как вычеркнуть из общего списка тех, кто установил приложение.
andrei2295kmail
Сообщения: 188
Зарегистрирован: 07 ноя 2011, 10:51

Re: Список друзей, не установивших приложение

Сообщение andrei2295kmail »

ToresMax писал(а):Как вывести друзей которые установили приложение?
Щас выложу
Minimalgift
Сообщения: 17
Зарегистрирован: 12 ноя 2012, 08:07

Re: Список друзей, не установивших приложение

Сообщение Minimalgift »

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

Код: Выделить всё

window.onload = (function() {    VK.init(function() {    // узнаём flashVars, переданные приложению GET запросом. Сохраняем их в переменную flashVars    var _parts=document.location.search.substr(1).split("&");    var _flash_Vars={}, _curr;    for (i=0; i<_parts.length; i++) {        _curr = _parts[i].split('=');        // записываем в массив flashVars значения. Например: flashVars['viewer_id'] = 1;        _flash_Vars[_curr[0]] = _curr[1];    }        // получаем viewer_id из полученных переменных    var viewer_iid = _flash_Vars['viewer_id'];VK.api("users.get", {uids:viewer_iid,fields:"photo_medium"}, function(_data) {         // обрабатываем полученные данные        // выводим имя и фамилию в блок user_info        document.getElementById('user__info').innerHTML = _data.response[0].first_name + ' ' + _data.response[0].last_name + '<br />';        // создаем img, для отображения аватарки        var image=document.createElement('img');        // из полученных данных берем ссылку на фото        image.src=_data.response[0].photo_medium;        // добавляем img в блок user_info        user_info.appendChild(image);    });        // выполняем запрос получения списка друзей        VK.api("friends.get", {}, function(dataAllFriends) {            // после получения списка друзей, выполняем запрос получения списка друзей установивших приложение            VK.api("friends.getAppUsers", {}, function(dataAppUsers) {                                                          // узнаем количество друзей                    var frCount = dataAllFriends.response.length;                    // количество установивших приложение                    var appCount = dataAppUsers.response.length;                                       // создаём массив друзей, которые не установили приложение                    var noApp = dataAllFriends.response; // cначала записываем всех друзей в массив, дальше будем удалять из него установивших                    var App = dataAppUsers.response;                                                                               if (appCount<frCount) { // если все друзья установили, то нет смысла и проверять                        // кол-во установивших приложение никогда не будет больше чем общее количество друзей, поэтому в первом цикле будем пробегаться по массиву установивших                        for (i=0;i<appCount;i++) {                            for(j=0;j<frCount;j++){                                // если нашли в массиве всех друзей тот, который в списке установивших - удаляем                                if (dataAppUsers.response[i]==noApp[j]) {                                    // вырезаем такой id                                    noApp.splice(j,1);                                    // прерываем цикл. Перебирать дальше нет смысла.                                    break;                                }                            }                        }                    }                                       // теперь в массиве noApp храняться id друзей, которые не установили приложение                    var noAppCount = noApp.length;                    document.getElementById('uids_count').innerHTML = 'друзья которые не установили: ' + noAppCount;                    // выведем ссылки на профили трех из этих пользователей                    // смысл получать профили есть только если массив пользователей не пустой                    if (noAppCount>0) {                                        // если не установили приложение менее 4х друзей, то выведем только их                        if (noAppCount<2) {                            // просто превращаем массив пользователей в строку                            var noAppUids = noApp.join(',');                        } else {                            // выбираем случайных трёх, причем исключаем вероятность выбора одного и того же пользователя                            // сделаем это так: выберем одного и удалим его из массива и т.д.                            var uidCount = 1; // количество профилей                            var uidArr = []; // в этот массив запишем id                                                       for (i=0;i<uidCount;i++) {                                var max = noApp.length-1;                                var rand = Math.floor(Math.random()*max);                                uidArr.push(noApp[rand]);                                noApp.splice(rand,1);                            }                            // превращаем массив в строку                            noAppUids = uidArr.join(',');                        }                        var ApppCount = Appp.length;                        document.getElementById('uids_count_vigre').innerHTML = 'Которые установили: ' + ApppCount;                        if (ApppCount>0) {                                         if (ApppCount<4) {                             var ApppUids = Appp.join(',');                        } else {                             var uidpCount = 20;                            var uidpArr = [];                                                       for (i=0;i<uidpCount;i++) {                                var pmax = Appp.length-1;                                var prand = Math.floor(Math.random()*pmax);                                uidpArr.push(Appp[prand]);                                Appp.splice(rand,1);                            }                             ApppUids = uidpArr.join(',');                        }                                               VK.api("getProfiles", {uids:noAppUids,fields:"photo_rec"}, function(data) {                            // узнаем количество полученных профилей                            var profilesCount = data.response.length;                                                       // в эту переменную запишем html код для вывода списка пользователей                            var profilesStr = '';                                                       for (var i=0; i<profilesCount; i++) {                                profilesStr += '<a href="http://vk.com/id' + data.response[i].uid + '" title="' + data.response[i].first_name + ' ' + data.response[i].last_name + '" target="_blank"><img src="' + data.response[i].photo_rec + '" /></a> ';                            }                            document.getElementById('friends_list').innerHTML = profilesStr;                            //                            var pprofilesCount = pdata.response.length;                                                       var pprofilesStr = '';                                                       for (var i=0; i<pprofilesCount; i++) {                                pprofilesStr += '<a href="http://vk.com/id' + pdata.response[i].uid + '" title="' + pdata.response[i].first_name + ' ' + pdata.response[i].last_name + '" target="_blank"><img src="' + pdata.response[i].photo_rec + '" /></a> ';                            }                            document.getElementById('friends_list_vigre').innerHTML = pprofilesStr;                        });                    }            });        });    });});
Думаю что где-то переменные повторяются, только не могу найти где именно. Надеюсь на Вашу помощь.
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: Список друзей, не установивших приложение

Сообщение Serge »

Minimalgift
если нажать F12 (в Хроме так точно) - откроется консоль ошибок.
Смутно подозреваю, что в яваскрипте нельзя начинать имя переменной с нижнего подчеркивания. А так в целом не смотрел, но Вам бы сначала разобраться, что вообще происходит, а не просто скопировать и переименовать.
Minimalgift
Сообщения: 17
Зарегистрирован: 12 ноя 2012, 08:07

Re: Список друзей, не установивших приложение

Сообщение Minimalgift »

Serge
С нижним подчеркиванием все работает (вывод аватарки,имени,фамилии, список друзей которые не установили приложение). Ошибка возникает при подключении вывода людей которые установили приложение. Высвечивания ошибок для .js нет в браузере. Конфликт происходит скорее всего с одинаковыми переменными/функциями, которые я не могу найти и заменить имена.
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: Список друзей, не установивших приложение

Сообщение Serge »

Minimalgift

Код: Выделить всё

var ApppCount = Appp.length;
Ошибка тут, переменной Appp не существует.
Я бы вообще делал по-другому...
Сделать запрос к ВК за всеми френдами, потом за теми что установили приложение (ничего пока не меняется), а потом просто выводить инфо о них в разные блоки, в зависимости от того, уид в одном массиве или в обоих.
Minimalgift
Сообщения: 17
Зарегистрирован: 12 ноя 2012, 08:07

Re: Список друзей, не установивших приложение

Сообщение Minimalgift »

Serge
Спасибо, попробую.
Minimalgift
Сообщения: 17
Зарегистрирован: 12 ноя 2012, 08:07

Re: Список друзей, не установивших приложение

Сообщение Minimalgift »

Все, настроил скрипт для вывода тех кто не установил, тех кто установил и вывод данных о пользователе. Если кому надо - могу скинуть.
Ответить