def main(vk: "VkUser object provides access to VK API", limit: "int number friends per group"): user_friends = vk.get_friends_list() user_groups = vk.get_groups_list(vk.get_user_id()) friends_number = len(user_friends) print("{}({}) has {} friends and participate in {} groups\n".format(vk.get_user_name(), vk.get_user_id(), friends_number, len(user_groups))) friends_groups = list() bar = Bar(friends_number, 'loading friends groups') for i, friend in enumerate(user_friends): groups = vk.get_groups_list(friend) if groups: friends_groups.extend(groups) bar.show_progress(i) else: bar.show_progress_100("loaded groups data for {} friends".format(friends_number)) group_counts = Counter(friends_groups) # count number of friends using each group, place results in the dict result = list(set(user_groups) - set(group_counts.keys())) # unique user groups if limit > 0: # add groups where friends participate for group, count in group_counts.items(): if group in user_groups and count <= limit: result.append(group) write_json_file(vk.get_user_id(), [vk.get_group_info(group) for group in result])