Ejemplo n.º 1
0
def _find_or_create_profile(vk_post: dict, post_date: datetime,
                            db_profiles: List[Profile]) -> Profile:
    profile_id = vk_post['from_id']
    db_profile = find(db_profiles, lambda it: it.id == profile_id)
    if db_profile:
        return db_profile

    db_profile = Profile(id=profile_id,
                         join_date=post_date,
                         first_name='Unknown',
                         sex=Profile.Sex.UNKNOWN)
    time.sleep(GETTING_USER_INTERVAL)

    if profile_id >= 0:
        vk_user = vk_api_service.get_user(profile_id)
        if vk_user:
            db_profile.first_name = vk_user['first_name']
            db_profile.last_name = vk_user['last_name']
            db_profile.sex = vk_user['sex']
            db_profile.photo_50 = vk_user['photo_50']
            db_profile.photo_100 = vk_user['photo_100']
    else:
        vk_group = vk_api_service.get_group(profile_id * -1)
        if vk_group:
            db_profile.first_name = vk_group['name']
            db_profile.photo_50 = vk_group['photo_50']
            db_profile.photo_100 = vk_group['photo_100']
            db_profile.photo_200 = vk_group['photo_200']

    db_profile.save()
    db_profiles.append(db_profile)

    return db_profile