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() + ": Отмена обновления бд");
            }
        }
Beispiel #2
0
        /* Метод для сбора данных друзей по списку пользователей
         * Возвращает массив 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);
        }
Beispiel #3
0
        /* Метод для сбора данных пользователей с обычного поиска
         * Возвращает массив 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);
        }