private void ButtonUpdateDB(object sender, RoutedEventArgs e)
        {
            Console.WriteLine(sender.ToString() + ": Обновить бд");
            SaveFileDialog save_file_dialog = new SaveFileDialog();

            save_file_dialog.Filter = "Database files (*.ldb)|*.ldb|All files (*.*)|*.*";
            save_file_dialog.ShowDialog();

            if (save_file_dialog.FileName.Count() != 0)
            {
                List <string> users_ids = new List <string>();

                // Получаем id пользователей из исходной бд
                Console.WriteLine("Before : " + MainWindow.db_users.Count());
                foreach (Human user in MainWindow.db_users)
                {
                    users_ids.Add(user.vk_id.ToString());
                }
                Console.WriteLine("After : " + users_ids.Count());

                // Получаем новую информацию через vk api
                JArray users_data = VkApiMulti.UsersGet(users_ids, VkApiUtils.fields, "Update");

                // Парсим json в Human
                List <Human> users = new List <Human>();
                Parallel.ForEach(users_data, user_data =>
                {
                    lock (users)
                    {
                        users.Add(new Human(user_data, "vk"));
                    }
                });

                // Сохраняем данные в бд
                MainWindow.db = new DatabaseAPI();
                MainWindow.db.saveDB(save_file_dialog.FileName);
                MainWindow.db.addUsers(users);
                MainWindow.db_users = MainWindow.db.getAllUsers();

                MessageBox.Show("Обновление базы данных завершено!", "Info", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                Console.WriteLine(sender.ToString() + ": Обнавлена бд: " + save_file_dialog.FileName);
                this.Close();
            }
            else
            {
                Console.WriteLine(sender.ToString() + ": Отмена обновления бд");
            }
        }
        /* Метод для сбора данных друзей по списку пользователей
         * Возвращает массив json */
        // TODO Долго работает, много мусора
        public JArray VkUsersFriendsSearch(List <string> users)
        {
            Console.WriteLine("FriendsGet");
            timer.Restart();
            /* ???? | ???? */
            HashSet <string> unique_ids = new HashSet <string>(users);

            foreach (string user_id in users)
            {
                HashSet <string> friends_ids = new HashSet <string>(VkApi.FriendsGet(user_id));
//                int trusted_friends = 0;

                /*
                 * foreach (string check_friend_id in friends_ids)
                 * {
                 *  if (users.Contains(check_friend_id))
                 *  {
                 *      trusted_friends++;
                 *
                 *  }
                 * }*/
                if (users.Count(friends_ids.Contains) > friends_ids.Count() * (50.0 / 100.0))
                {
                    foreach (string friend_id in friends_ids)
                    {
                        unique_ids.Add(friend_id);
                    }
                }
            }
            timer.Stop();
            Console.WriteLine("Найдено " + unique_ids.Count() + " друзей " + timer.Elapsed);

            Console.WriteLine("UsersGet");
            timer.Restart();
            /* ???? | ???? */
            JArray users_friends_data = VkApiMulti.UsersGet(unique_ids.ToList(), VkApiUtils.fields, "search");

            timer.Stop();
            Console.WriteLine("Получена информация о " + users_friends_data.Count() + " пользователях и друзьях " + timer.Elapsed);

            return(users_friends_data);
        }
        /* Метод для сбора данных пользователей с обычного поиска
         * Возвращает массив json */
        private JArray VkDefaultUsersSearch()
        {
            Console.WriteLine("UsersSearch");
            timer.Restart();
            /* 4129 | 1 min 37.36 s */
            List <string> search_users_ids = VkApiMulti.UsersSearch();

            timer.Stop();
            Console.WriteLine("Найдено " + search_users_ids.Count() + " пользователей из миэта по поиску " + timer.Elapsed);

            Console.WriteLine("UsersGet");
            timer.Restart();
            /* 4129 | 3.87 s */
            JArray search_users_data = VkApiMulti.UsersGet(search_users_ids, VkApiUtils.fields, "search");

            timer.Stop();
            Console.WriteLine("Получена информация о " + search_users_data.Count() + " пользователях из миэта по поиску " + timer.Elapsed);

            return(search_users_data);
        }
        /* Метод для сбора данных пользователей с публичных групп
         * Возвращает массив json */
        private JArray VkPublicGroupsSearch()
        {
            Console.WriteLine("GroupsSearch");
            timer.Restart();
            /* 335 | 16.42 s */
            List <int> public_groups_ids = VkApiMulti.GroupsSearch(new List <string>()
            {
                "miet", "миэт"
            });

            timer.Stop();
            Console.WriteLine("Найдено " + public_groups_ids.Count() + " публичных миэтовских групп " + timer.Elapsed);

            Console.WriteLine("GroupsGetMembers");
            timer.Restart();
            /* 20330 | 54.46 s */
            JArray public_groups_members_data = VkApiMulti.GroupsGetMembers(public_groups_ids.Select(x => x.ToString()).ToList());

            timer.Stop();
            Console.WriteLine("Получена информация о " + public_groups_members_data.Count() + " пользователях в публичных миэтовских группах " + timer.Elapsed);

            return(public_groups_members_data);
        }
        /* Метод для сбора данных пользователей с локальных групп
         * Возвращает массив json */
        private JArray VkLocalGroupsSearch()
        {
            List <string> words = new List <string>()
            {
                "миэт", "miet", "бмс", "bms", "bmc",
                "мпитк", "мп", "mp", "mpitk", "вт", "vt",
                "экт", "ekt", "ect", "иняз", "inyas", "inyaz",
                "прит", "prit", "итс", "its", "мэ", "me",
                "инэуп", "ineup", "иэмс", "iems", "оиг", "oig",
                "вм", "vm", "иб", "ib", "мпв", "mpv", "мртус", "mrtus",
                "игд", "ipovs", "мфэ", "mfe", "оф", "of",
                "китис", "kitis", "п", "пэ", "саук", "sauk", "sayk",
                "кфн", "kfn", "эим", "eim", "эу", "eu",
                "миуп", "miup", "эув", "euv", "ius",
                "пкимс", "pkims", "сск", "ssk", "cck",
                "ткс", "tks", "фсип", "fcip", "иус",
                "ато", "ato", "итуутс", "ituuts"
            };

            Console.WriteLine("GroupsSearch");
            timer.Restart();
            /* 18954 | 1 min 0.40 s */
            List <int> local_not_checked_groups_ids = VkApiMulti.GroupsSearch(words);

            timer.Stop();
            Console.WriteLine("Найдено " + local_not_checked_groups_ids.Count() + " локальных групп " + timer.Elapsed);

            Console.WriteLine("LocalMietGroupCheck");
            timer.Restart();
            /* 7517 | 8 min 59.31 s */
            JArray local_groups_members_data = VkApiMulti.LocalMietGroupCheck(local_not_checked_groups_ids.Select(x => x.ToString()).ToList());

            timer.Stop();
            Console.WriteLine("Получена информация о " + local_groups_members_data.Count() + " пользователях в локальных миэтовских группах " + timer.Elapsed);

            return(local_groups_members_data);
        }