static void Main(string[] args) { int appID = 5293954; //id приложения, который выдается при регистрации приложения в ВК string login = "******";// логин и пороль пользователя string password = "******"; // в целях безопасности моей страницы в ВК, пороль не настоящий Settings scope = Settings.Groups; var vk = new VkApi(); vk.Authorize(appID, login, password, scope); // авторизация --> documentation https://vknet.github.io/vk/authorize/ int outCount; Group embassyUSA = vk.Groups.Search("Посольство США в Беларуси", out outCount).First();// получаем данные о группе PhotoGetAlbumsParams param = new PhotoGetAlbumsParams(); param.OwnerId = embassyUSA.Id * (-1); // индентификатор группы, для полуния ее альбомов (умножен на -1, так как cказано в документации API -> https://vknet.github.io/vk/photos/getAlbums/) param.Count = 7; int count = 0; var albums = vk.Photo.GetAlbums(out count, param);// получаем все альбомы var selfieAlbum = albums.Where(x => x.Title == "Selfie Contest").First(); // выбираем альбом по названию, в котором фото учасников PhotoGetParams photoParam = new PhotoGetParams(); photoParam.OwnerId = embassyUSA.Id * (-1); // индентификатор группы, для полуния ее альбомов (умножен на -1, так как cказано в документации API -> https://vknet.github.io/vk/photos/get/) photoParam.AlbumId = PhotoAlbumType.Id(selfieAlbum.Id); // тут указываем, индентификатор альбома, фотографии которого нам нужны photoParam.Extended = true; photoParam.Count = 82; var selfiePhotos = vk.Photo.Get(out count, photoParam);// получаем список фотографий int number = 1;// счетчик номера фотографии foreach (var photo in selfiePhotos)//перебираем фотографии по одной, начиная с первой { LikesGetListParams listParam = new LikesGetListParams(); listParam.Count = 500; listParam.ItemId = photo.Id.Value; //берем индентификатор текущей фотографии listParam.Type = LikeObjectType.Photo; listParam.Filter = LikesFilter.Likes; // говорим, что хотим получить информацию о лайках пользователей listParam.OwnerId = embassyUSA.Id * (-1); // указываем индентификатор владельца фотографи, т. е. вашей группы var users = vk.Likes.GetList(listParam); // получаем список пользователей лайкнувших данную фотографию --> documentation https://vknet.github.io/vk/likes/getList/ int inGroup = 0; // счетчик для количества, лайкнувших текущую фотографию, пользователей, которые состоят в группе. foreach (var id in users)//перебираем пользователей, лайкнувших текущую фотографию, по одному, начиная с первого { Thread.Sleep(400);// приостанавливаем программу на 0.4 секунды, так как есть ограничение на количество запросов к Вконтакте в секунду. if (vk.Groups.IsMember(embassyUSA.Id, id))//проверяем состоит ли текущий пользователь в группе --> documentation https://vknet.github.io/vk/groups/isMember/ { inGroup = inGroup + 1; // если состоит, увеличиваем счетчик на 1 } } Console.WriteLine(String.Format("{0} Likes - {1} InGroup - {2} ", number, users.Count, inGroup)); // Отображаем информациию на консоль. number++; } Console.ReadLine();// Ждем нажатия клавиши интер, после чего приложение(консоль) закрывается. }
public ReadOnlyCollection<PhotoAlbum> GetAlbums(out int count, PhotoGetAlbumsParams @params) { var response = GetAlbums(@params); count = Convert.ToInt32(response.TotalCount); return response.ToReadOnlyCollection(); }
/// <summary> /// Привести к типу VkParameters. /// </summary> /// <param name="p">Параметры.</param> /// <returns></returns> internal static VkParameters ToVkParameters(PhotoGetAlbumsParams p) { var parameters = new VkParameters { {"owner_id", p.OwnerId}, {"album_ids", p.AlbumIds}, {"offset", p.Offset}, {"count", p.Count}, {"need_system", p.NeedSystem}, {"need_covers", p.NeedCovers}, {"photo_sizes", p.PhotoSizes} }; return parameters; }
public ReadOnlyCollection<PhotoAlbum> GetAlbums(out int count, PhotoGetAlbumsParams @params) { var response = _vk.Call("photos.getAlbums", @params); count = response["count"]; return response["items"].ToReadOnlyCollectionOf<PhotoAlbum>(x => x); }