def get_search_result(): user_id, sex, age_from, age_to = ask_params() user = VKUser(user_id) user.get_user_data() if user.error == token_error: print('Неправильный токен, попробуйте еще раз') elif user.error == user_ban_del_error: print('Пользователь удален или забанен') elif user.error == user_existance: print('Пользователь не существует') else: update_params(user) print(f'Поиск по совпадениям по id {user.user_id}') offset = get_offset() search_results = user.search_users(sex, age_from, age_to, offset)[1] update_offset(offset) print('Scoring users') score_users(user, search_results) print('Получение топ совпадений') top_matches = get_top_matches(search_results) print('Подготвливаем результат') result = prepare_result(top_matches) print('Сохраняем в базу данных') print('Успешно завершено') print_result(result)
def get_search_result(): user_id, sex, age_from, age_to = ask_params() user = VKUser(user_id) user.get_user_data() if user.error is 5: print('Invalid token given. Try again') elif user.error is 18: print('This user was deleted or banned') elif user.error is 113: print('User does not exist. Try again') else: update_params(user) print(f'Searching for matches based on ID {user.user_id}') offset = get_offset() search_results = user.search_users(sex, age_from, age_to, offset)[1] update_offset(offset) print('Scoring users') score_users(user, search_results) print('Getting top matches') top_matches = get_top_matches(search_results) print('Preparing result') result = prepare_result(top_matches) print('Saving to database') print('Finished successfully') print_result(result) json_writer(result)
class VKUserTestCase(unittest.TestCase): def setUp(self): self.user = VKUser('1') self.user_data = self.user.get_user_data() def test_user_id_isdigit(self): value = self.user.user_id.isdigit() self.assertTrue(value, 'User ID is not a number') def test_user_data_is_dict(self): self.assertIsInstance(self.user_data, dict, 'User_data is not a dict type') def test_get_groups_is_list(self): value = self.user.get_groups() self.assertIsInstance(value, list, 'User groups are not type list') def test_get_photos_is_list(self): value = self.user.get_photos() self.assertIsInstance(value, list, 'User groups is not type list') def test_search_results_is_list(self): value = self.user.search_users(0, 20, 50, 0) self.assertIsInstance(value[1], list, 'Search results is not type list') def test_search_results_are_instances(self): value = self.user.search_users(0, 20, 50, 0) self.assertIsInstance(value[1][0], VKUser, 'Search results are not instances of VKUser')
def prepare_data(input_id, unique_groups): result = list() unique_groups_data = VKUser(input_id).get_groups_data(unique_groups)['response'] for group in unique_groups_data: try: created_group_data = create_group_data(group) result.append(created_group_data) except KeyError: group_conflict = group['id'] print(f'Не удалось получить информацию о группе с ID {group_conflict} (группа удалена).') return result
def get_friends_groups(friends_list): friends_groups = set() for item, friend_id in enumerate(friends_list): try: response = VKUser(friend_id).get_groups() except RuntimeError: time.sleep(0.35) try: friend_groups = response['response']['items'] friends_groups.update(friend_groups) print(f'Обработано профилей друзей: {item + 1}, осталось: {len(friends_list) - item - 1}') except KeyError: code = response['error']['error_code'] if code == 15: print('Пользователь скрыл информацию') elif code == 18: print('Пользователь удалён') else: print('Не удалось получить информацию о пользователе') return friends_groups
def get_user_friends(input_id): vk_user_friends = VKUser(input_id).get_friends() return vk_user_friends['response']['items']
def get_user_groups(input_id): vk_user_groups = VKUser(input_id).get_groups() groups_list = set(vk_user_groups['response']['items']) return groups_list
def check_validity(input_id): try: VKUser(input_id) except KeyError: sys.exit('Данные введены неверно')
def setUp(self): self.user = VKUser('1') self.user_data = self.user.get_user_data()