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<Photo> Get(out int count, PhotoGetParams @params) { var response = Get(@params); count = Convert.ToInt32(response.TotalCount);; return response.ToReadOnlyCollection(); }
/// <summary> /// Привести к типу VkParameters. /// </summary> /// <param name="p"> Параметры. </param> /// <returns> </returns> public static VkParameters ToVkParameters(PhotoGetParams p) { var parameters = new VkParameters { { "owner_id", p.OwnerId } , { "album_id", p.AlbumId } , { "photo_ids", p.PhotoIds } , { "rev", p.Reversed } , { "extended", p.Extended } , { "feed_type", p.FeedType } , { "feed", p.Feed } , { "photo_sizes", p.PhotoSizes } , { "offset", p.Offset } , { "count", p.Count } }; return(parameters); }
/// <summary> /// Привести к типу VkParameters. /// </summary> /// <param name="p">Параметры.</param> /// <returns></returns> internal static VkParameters ToVkParameters(PhotoGetParams p) { var parameters = new VkParameters { { "owner_id", p.OwnerId }, { "album_id", p.AlbumId }, { "photo_ids", p.PhotoIds }, { "rev", p.Reversed }, { "extended", p.Extended }, { "feed_type", p.FeedType }, { "feed", p.Feed }, { "photo_sizes", p.PhotoSizes }, { "offset", p.Offset }, { "count", p.Count } }; return parameters; }
public ReadOnlyCollection<Photo> Get(out int count, PhotoGetParams @params) { var response = _vk.Call("photos.get", @params); count = response["count"]; return response.ToReadOnlyCollectionOf<Photo>(x => x); }