SickGear/lib/imdbpie/objects.py

102 lines
2.2 KiB
Python

import attr
@attr.s
class Image(object):
url = attr.ib()
width = attr.ib()
height = attr.ib()
class TitleEpisodes(object):
def __init__(self, facade, imdb_id):
self._facade = facade
episodes = self._facade._client.get_title_episodes(
imdb_id=imdb_id
)
self._episode_imdb_ids = []
for season in episodes['seasons']:
for episode in season['episodes']:
imdb_id = self._facade._parse_id(episode['id'])
self._episode_imdb_ids.append(imdb_id)
self._count = len(self._episode_imdb_ids)
def __len__(self):
return self._count
def __bool__(self):
return self._count > 0
def __getitem__(self, index):
imdb_id = self._episode_imdb_ids[index]
return self._facade.get_title(imdb_id=imdb_id)
@attr.s
class Title(object):
imdb_id = attr.ib()
title = attr.ib()
type = attr.ib()
certification = attr.ib()
year = attr.ib()
genres = attr.ib()
writers = attr.ib()
creators = attr.ib()
credits = attr.ib()
directors = attr.ib()
stars = attr.ib()
image = attr.ib()
episodes = attr.ib()
rating_count = attr.ib(default=0)
releases = attr.ib(default=())
season = attr.ib(default=None)
episode = attr.ib(default=None)
rating = attr.ib(default=None)
plot_outline = attr.ib(default=None)
release_date = attr.ib(default=None)
runtime = attr.ib(default=None)
def __repr__(self):
return 'Title(imdb_id={0}, title={1})'.format(self.imdb_id, self.title)
@attr.s
class TitleSearchResult(object):
imdb_id = attr.ib()
title = attr.ib()
type = attr.ib()
year = attr.ib()
@attr.s
class NameSearchResult(object):
imdb_id = attr.ib()
name = attr.ib()
@attr.s
class TitleRelease(object):
date = attr.ib()
region = attr.ib()
@attr.s
class TitleName(object):
name = attr.ib()
category = attr.ib()
imdb_id = attr.ib()
job = attr.ib(default=None)
characters = attr.ib(default=())
@attr.s
class Name(object):
name = attr.ib()
imdb_id = attr.ib()
image = attr.ib()
birth_place = attr.ib()
gender = attr.ib()
bios = attr.ib()
date_of_birth = attr.ib()
filmography = attr.ib()