Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        public ReadOnlyCollection <Photo> Get(out int count, PhotoGetParams @params)
        {
            var response = Get(@params);

            count = Convert.ToInt32(response.TotalCount);;

            return(response.ToReadOnlyCollection());
        }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
 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"));
            }
        }
Exemplo n.º 7
0
        /// <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);
        }
Exemplo n.º 8
0
        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}");
        }
Exemplo n.º 9
0
        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
                }
            }
        }
Exemplo n.º 10
0
 /// <inheritdoc />
 public async Task <VkCollection <Photo> > GetAsync(PhotoGetParams @params, bool skipAuthorization = false)
 {
     return(await TypeHelper.TryInvokeMethodAsync(() => _vk.Photo.Get(@params, skipAuthorization)));
 }
Exemplo n.º 11
0
 /// <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);
 }
Exemplo n.º 12
0
 /// <inheritdoc />
 public Task <VkCollection <Photo> > GetAsync(PhotoGetParams @params, bool skipAuthorization = false)
 {
     return(TypeHelper.TryInvokeMethodAsync(func: () => Get(@params: @params, skipAuthorization: skipAuthorization)));
 }