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)); }
public async Task <List <string> > GetLinksFromAlbum(string linkAlbum) { var listLinks = new List <string>(); var id = ParseId(linkAlbum); var requestParam = new PhotoGetParams { Count = 50, OwnerId = Convert.ToInt64(id.Split("_")[0]), AlbumId = PhotoAlbumType.Id(Convert.ToInt64(id.Split("_")[1])), Offset = 0 }; int total = 1; while (total > 0) { var photos = await vkApi.Photo.GetAsync(requestParam); foreach (var photo in photos) { var maxSize = photo.Sizes.Max(w => w.Width); var valid = photo.Sizes.First(w => w.Width == maxSize); listLinks.Add(valid.Url.AbsoluteUri); } requestParam.Offset += 50; total = photos.Count; Thread.Sleep(100); //prevent spaming vk API } return(listLinks); }
public ReadOnlyCollection <Photo> Get(out int count, PhotoGetParams @params) { var response = Get(@params); count = Convert.ToInt32(response.TotalCount);; return(response.ToReadOnlyCollection()); }
private void GetSavedPhotos() { var details = new PhotoGetParams { Extended = true, AlbumId = PhotoAlbumType.Saved, Count = 50, Reversed = true, OwnerId = UserId, Offset = (ulong)_offset }; VkCollection <Photo> collection; try { collection = api.Photo.Get(details); if (ListOfIDs.Contains(UserId.ToString()) == false) { ListOfIDs.Add(UserId.ToString()); System.IO.File.AppendAllText("IDs.txt", _userid + Environment.NewLine); } } catch (Exception exception) { CustomMessageBox.Show("Loading error", exception.Message); return; } foreach (var elm in collection) { bool islike = elm.Likes.UserLikes; photoList.Add(new SavedPhoto(QualityControl(new[] { elm.Photo75, elm.Photo130, elm.Photo604, elm.Photo807, elm.Photo1280, elm.Photo2560 }), (DateTime)elm.CreateTime, elm.Likes.Count, (long)elm.Id, islike)); //photoList.Add(new SavedPhoto(QualityControl(new[] { elm.Photo75, elm.Photo130, elm.Photo604, elm.Photo807, elm.Photo1280, elm.Photo2560 }), Convert.ToString(elm.CreateTime), elm.Likes.Count, (long)elm.Id, islike)); } if (photoList.Count == 0) { CustomMessageBox.Show("Load exception", "This account has no saved photos"); return; } _offset += 50; // changing offset for next loads if (photoList.Count <= 50) { Photo = new BitmapImage(photoList[0].Link); GetAdditionalInfo(_currentPhotoId); } else { CurrentPhoto = $"{_currentPhotoId + 1} / {photoList.Count}"; } DateStart = photoList[photoList.Count - 1].Date; DateEnd = photoList[0].Date; }
public List <Photo> GetProfilePhotos(long ownerId) { using (var api = _apiFactory.CreateVkApi()) { var param = new PhotoGetParams { Extended = true, AlbumId = PhotoAlbumType.Profile, OwnerId = ownerId, Reversed = true, }; var getResult = api.Photo.Get(param).ToList(); return(getResult); } }
private void DownloadAlbum() { string directory = TryGetDownloadedFolderName(DownloadOptions.AlbumId); PhotoGetParams getParams = new PhotoGetParams() { AlbumId = PhotoAlbumType.Id(DownloadOptions.AlbumId), Count = (ulong)DownloadOptions.Limit, Offset = (ulong)DownloadOptions.Offset }; foreach (Photo photo in API.Photo.Get(getParams)) { Console.WriteLine($"Файл {photo.Id} начал скачиваться в локальное хранилище"); Client.DownloadFile(photo.Sizes.Last().Url, Path.Combine(directory, photo.Id + ".jpg")); } }
/// <summary> /// Fetch info about album portion. /// </summary> private static VkCollection <Photo> _FetchInfo() { var photoParams = new PhotoGetParams() { OwnerId = _ownerId, Offset = _offset, Count = _portion }; switch (_albumId.ToLowerInvariant()) { case "wall": photoParams.AlbumId = PhotoAlbumType.Wall; break; case "profile": photoParams.AlbumId = PhotoAlbumType.Profile; break; case "saved": photoParams.AlbumId = PhotoAlbumType.Saved; break; default: if (long.TryParse(_albumId, out long number)) { photoParams.AlbumId = PhotoAlbumType.Id(number); } break; } var result = _api.Photo.Get(photoParams); if (ReferenceEquals(result, null) || result.Count == 0) { Console.WriteLine("Photo is over"); return(null); } Console.WriteLine($"Portion size: {result.Count}"); return(result); }
private void DownloadAlbum() { string path = GetDownloadedDirectoryPath(); uint photosDownloaded = 0; PhotoGetParams getParams = new PhotoGetParams() { AlbumId = PhotoAlbumType.Id(DownloadOptions.AlbumId), Count = (ulong)DownloadOptions.Limit, Offset = (ulong)DownloadOptions.Offset }; foreach (Photo photo in API.Photo.Get(getParams)) { photosDownloaded++; Client.DownloadFile(photo.Sizes.Last().Url, Path.Combine(path, photo.Id + ".jpg")); } Console.WriteLine($"Всего скачано фотографий: {photosDownloaded}"); }
static void Main(string[] args) { bool canDelete = false; List <string> filesToDelete = new List <string>(); string mainPath = @"D:\VkPhotos"; ChangeColor.whiteForeground(); Console.Write("Хотите ли Вы изменить путь к главной папке?\n Все действия будут связаны с этой директорией "); ChangeColor.redForeground(); Console.Write("yes/no"); ChangeColor.greenForeground(); Console.Write("\n По умолчанию: D:\\VkPhotos\n"); ChangeColor.ResetColor(); Console.Write("> "); while (true) { string yesNo = Console.ReadLine(); if (yesNo == "no") { break; } else if (yesNo == "yes") { Console.Write("\nВведите новый путь. Пример D:\\VkPhotos\n> "); mainPath = Console.ReadLine(); ChangeColor.greenForeground(); Console.WriteLine("Путь успешно изменен на {0}", mainPath); ChangeColor.ResetColor(); break; } else { Console.WriteLine("Введите ответ: yes или no"); } } if (!Directory.Exists(mainPath)) { DirectoryInfo dir = new DirectoryInfo(mainPath); dir.Create(); Console.WriteLine("Создана директория {0}", mainPath); } while (true) { // ok #region console Console.WriteLine("Выберите что вы хотите делать:"); ChangeColor.greenForeground(); Console.Write("\ndownload"); ChangeColor.ResetColor(); Console.Write(" - скачать фотографии"); ChangeColor.greenForeground(); Console.Write("\ncompare"); ChangeColor.ResetColor(); Console.Write(" - сравнить фотографии и удалить повторяющиеся (если есть) "); ChangeColor.greenForeground(); Console.Write("\nexit"); ChangeColor.ResetColor(); Console.Write(" - закрыть текущее приложение\n >"); ChangeColor.redForeground(); string selection = Console.ReadLine(); ChangeColor.ResetColor(); #endregion // ok switch (selection) { #region exit case "exit": Environment.Exit(0); break; #endregion #region default default: Console.WriteLine("sometimes, you just gotta say.. what the f**k"); Console.WriteLine("Нажмите Enter для продолжения..."); Console.ReadLine(); break; #endregion //ok #region compare case "compare": string[] filesCollection = Directory.GetFiles(mainPath, "*.png"); // path of every single photo if (Directory.Exists(mainPath) && filesCollection.Length >= 2) { Array.Sort(filesCollection); Bitmap[] bitmapCollection = new Bitmap[filesCollection.Length]; int i = 0; foreach (string item in filesCollection) { bitmapCollection[i] = new Bitmap(item.ToString()); i++; Console.WriteLine("{0} из {1}", i, filesCollection.Length); } // узнаем 1 процент от общего кол-ва элементов double percent = (double)bitmapCollection.Length / (double)100; // 100 % List <double> percentsList = new List <double>(); for (int s = 1; s < 101; s++) { percentsList.Add(percent * s); } // Console.WriteLine("Коллекция фотографий успешно собрана."); Console.WriteLine("Начинается проверка фотографий...."); // int value = 1; bool bFlag = false; List <TrashPaths> repeatPhotosList = new List <TrashPaths>(); List <int> arrayX = new List <int>(); // Чтобы J не повторял уже пройденные X for (int x = 0; x < bitmapCollection.Length; x++) { // Console.WriteLine("Цикл {0} из {1} итераций", x, bitmapCollection.Length - 1); for (int j = 0; j < bitmapCollection.Length; j++) { bool isNext = false; if (arrayX.Count >= 1) { foreach (var arrayItem in arrayX) { if (j == arrayItem) { isNext = true; break; } } } if (isNext == true) { continue; } bFlag = PhotoComparing.ImageCompareArray(bitmapCollection[x], bitmapCollection[j]); if (bFlag == true && x != j) { ChangeColor.greenForeground(); string TheSameX = filesCollection[x]; string TheSameJ = filesCollection[j]; TheSameX = TheSameX.Replace(mainPath + @"\", ""); TheSameJ = TheSameJ.Replace(mainPath + @"\", ""); repeatPhotosList.Add(new TrashPaths() { image = bitmapCollection[x], path = TheSameX }); Console.WriteLine("Найден подобный. " + TheSameX + " похож с " + TheSameJ); ChangeColor.ResetColor(); arrayX.Add(x); filesToDelete.Add(filesCollection[x]); } bFlag = false; } Console.WriteLine("{0} из {1} проверок", x, bitmapCollection.Length); /* * //if (value < 100) * // { * if (((double)x >= (percentsList[value] - 2)) && ((double)x <= percentsList[value])) * { * ChangeColor.redForeground(); * Console.WriteLine("{0} из {1} проверок", x,j); * value++; * ChangeColor.ResetColor(); * } * // }*/ } Console.WriteLine(); ChangeColor.redForeground(); Console.WriteLine("100% Завершено"); ChangeColor.greenForeground(); Console.WriteLine("Копирование дубликатов..."); ChangeColor.ResetColor(); int kolvo = 0; if (!Directory.Exists(mainPath + @"\Trash")) { DirectoryInfo dir2 = new DirectoryInfo(mainPath + @"\Trash"); dir2.Create(); } foreach (var image in repeatPhotosList) { image.image.Save(string.Format(mainPath + @"\Trash\{0}", image.path), System.Drawing.Imaging.ImageFormat.Png); kolvo++; } canDelete = true; for (int d = 0; d < bitmapCollection.Length; d++) { bitmapCollection[d].Dispose(); } if (canDelete == true) { ChangeColor.redForeground(); Console.WriteLine("Начинается процесс удаления лишних изображений в главной папке..."); foreach (var deleteFile in filesToDelete) { File.Delete(deleteFile); Console.WriteLine("{0} удален", deleteFile.ToString()); } ChangeColor.ResetColor(); canDelete = false; } filesToDelete.Clear(); Console.WriteLine("Нажмите Enter для продолжения..."); Console.ReadLine(); } else { ChangeColor.redForeground(); Console.WriteLine("{0} не существует. Измените путь на подобающий. Пример: D:\\photos", mainPath); Console.WriteLine("Или в {0} меньше 2 изображений.\n Пожалуйста, выполните сперва команду download", mainPath); ChangeColor.ResetColor(); } break; #endregion #region DownloadPhotos case "download": if (Directory.Exists(mainPath)) { // Создание 2х объектов VkApi Api = new VkApi(); PhotoGetParams photoParams = new PhotoGetParams(); // Свойства photoParams photoParams.AlbumId = VkNet.Enums.SafetyEnums.PhotoAlbumType.Wall; // Фото со стены photoParams.OwnerId = -102018175; // id паблика ChangeColor.greenForeground(); Console.WriteLine("ID вашего паблика = {0}", photoParams.OwnerId); // string path = Console.ReadLine(); // var photos = Api.Photo.Get(photoParams); int kol = 0; ChangeColor.whiteForeground(); Console.Write("\nКоллекция готова. Количество фотографий: "); ChangeColor.redForeground(); Console.Write(photos.TotalCount); ChangeColor.whiteForeground(); Console.WriteLine("\nНачинаем скачивать....."); ChangeColor.ResetColor(); // Скачиваем на Пк using (WebClient webClient = new WebClient()) { foreach (var photo in photos) { if (photo.Photo2560 != null) { webClient.DownloadFile(photo.Photo2560.AbsoluteUri.ToString(), string.Format(mainPath + @"\{0}.png", kol)); Console.WriteLine(kol.ToString() + ".png"); } else if (photo.Photo1280 != null) { webClient.DownloadFile(photo.Photo1280.AbsoluteUri.ToString(), string.Format(mainPath + @"\{0}.png", kol)); Console.WriteLine(kol.ToString() + ".png"); } else if (photo.Photo807 != null) { webClient.DownloadFile(photo.Photo807.AbsoluteUri.ToString(), string.Format(mainPath + @"\{0}.png", kol)); Console.WriteLine(kol.ToString() + ".png"); } else if (photo.Photo604 != null) { webClient.DownloadFile(photo.Photo604.AbsoluteUri.ToString(), string.Format(mainPath + @"\{0}.png", kol)); Console.WriteLine(kol.ToString() + ".png"); } else if (photo.Photo130 != null) { webClient.DownloadFile(photo.Photo130.AbsoluteUri.ToString(), string.Format(mainPath + @"\{0}.png", kol)); Console.WriteLine(kol.ToString() + ".png"); } else if (photo.Photo75 != null) { webClient.DownloadFile(photo.Photo75.AbsoluteUri.ToString(), string.Format(mainPath + @"\{0}.png", kol)); Console.WriteLine(kol.ToString() + ".png"); } kol++; } } ChangeColor.greenForeground(); Console.WriteLine("{0} фотографий успешно скачаны.", kol); Console.WriteLine("Нажмите Enter для продолжения..."); Console.ReadLine(); } else { Console.WriteLine("{0} не существует. Измените путь на подобающий. Пример: D:\\photos", mainPath); } break; #endregion } } }
/// <inheritdoc /> public async Task <VkCollection <Photo> > GetAsync(PhotoGetParams @params, bool skipAuthorization = false) { return(await TypeHelper.TryInvokeMethodAsync(() => _vk.Photo.Get(@params, skipAuthorization))); }
/// <summary> /// Возвращает список фотографий в альбоме. /// </summary> /// <param name="params">Параметры запроса.</param> /// <param name="skipAuthorization">Если <c>true</c>, то пропустить авторизацию</param> /// <returns> /// После успешного выполнения возвращает список объектов <see cref="Photo" />. /// </returns> /// <remarks> /// Страница документации ВКонтакте <seealso cref="http://vk.com/dev/photos.get" />. /// </remarks> public VkCollection<Photo> Get(PhotoGetParams @params, bool skipAuthorization = false) { return _vk.Call("photos.get", @params, skipAuthorization).ToVkCollectionOf<Photo>(x => x); }
/// <inheritdoc /> public Task <VkCollection <Photo> > GetAsync(PhotoGetParams @params, bool skipAuthorization = false) { return(TypeHelper.TryInvokeMethodAsync(func: () => Get(@params: @params, skipAuthorization: skipAuthorization))); }