social-clusters/src/person.py

64 lines
2.9 KiB
Python
Raw Normal View History

from src.career import Career
from src.military import Military
from src.raw_data import RawData
from src.school import School
from src.university import University
class Person:
def __init__(self, raw_person):
data = RawData(raw_person)
self.id = hash(str(data.id))
self.is_closed = data.is_closed
self.deactivated = data.deactivated is not None
self.has_photo = data.has_photo == 1
self.followers_count = data.followers_count
self.sex = data.sex
self.bdate = data.get_date(data.bdate)
self.relation = data.relation
self.country_id = data.get_int(data.country, 'id')
self.country = data.get_int(data.country, 'title')
self.city_id = data.get_int(data.city, 'id')
self.city = data.get_int(data.city, 'title')
self.home_town = data.home_town
self.status = data.status
self.site = data.site is not None
self.facebook = data.facebook is not None
self.twitter = data.twitter is not None
self.instagram = data.instagram is not None
self.mobile_phone = data.mobile_phone is not None
self.activities = data.activities
self.interests = data.interests
self.books = data.books
self.movies = data.movies
self.music = data.music
self.tv = data.tv
self.games = data.games
self.quotes = data.quotes
self.about = data.about
personal = None
if data.personal is not None:
if len(data.personal) == 1:
personal = data.personal[0]
if len(data.personal) > 1:
raise Exception(f'PERSONAL {data.id}')
self.political = data.get_int(personal, 'political')
self.religion = data.get_str(personal, 'religion')
self.inspired_by = data.get_str(personal, 'inspired_by')
self.people_main = data.get_int(personal, 'people_main')
self.life_main = data.get_int(personal, 'life_main')
self.smoking = data.get_int(personal, 'smoking')
self.alcohol = data.get_int(personal, 'alcohol')
self.relatives = Person.__collection(data.relatives, lambda item: item['type'])
self.occupation_type = data.get_str(data.occupation, 'type')
self.occupation_place_id = data.get_int(data.occupation, 'id')
self.occupation_place_name = data.get_str(data.occupation, 'name')
self.universities = Person.__collection(data.universities, lambda item: University(item).__dict__)
self.schools = Person.__collection(data.schools, lambda item: School(item).__dict__)
self.career = Person.__collection(data.career, lambda item: Career(item).__dict__)
self.military = Person.__collection(data.military, lambda item: Military(item).__dict__)
@staticmethod
def __collection(collection, function):
return list(map(lambda item: function(item), [] if collection is None else collection))