Add tv specifics genres

This commit is contained in:
Zoe Roux 2024-04-01 02:17:31 +02:00
parent 266caa3f02
commit 13ad35a9ac
No known key found for this signature in database
3 changed files with 33 additions and 10 deletions

View File

@ -41,4 +41,10 @@ public enum Genre
Thriller,
War,
Western,
Kids,
News,
Reality,
Soap,
Talk,
Politics,
}

View File

@ -56,12 +56,31 @@ class TheMovieDatabase(Provider):
53: Genre.THRILLER,
10752: Genre.WAR,
37: Genre.WESTERN,
10759: [Genre.ACTION, Genre.ADVENTURE],
10762: Genre.KIDS,
10763: Genre.NEWS,
10764: Genre.REALITY,
10765: [Genre.SCIENCE_FICTION, Genre.FANTASY],
10766: Genre.SOAP,
10767: Genre.TALK,
10768: [Genre.WAR, Genre.POLITICS],
}
@property
def name(self) -> str:
return "themoviedatabase"
def process_genres(self, genres) -> list[Genre]:
def flatten(x: Genre | list[Genre]) -> list[Genre]:
if isinstance(x, list):
return [j for i in x for j in flatten(i)]
return [x]
return flatten([
self.genre_map[x["id"]]
for x in genres
if x["id"] in self.genre_map
])
def get_languages(self, *args):
return self._languages + list(args)
@ -154,11 +173,7 @@ class TheMovieDatabase(Provider):
rating=round(float(movie["vote_average"]) * 10),
runtime=int(movie["runtime"]) if movie["runtime"] is not None else None,
studios=[self.to_studio(x) for x in movie["production_companies"]],
genres=[
self.genre_map[x["id"]]
for x in movie["genres"]
if x["id"] in self.genre_map
],
genres=self.process_genres(movie["genres"]),
external_id=(
{
self.name: MetadataID(
@ -260,11 +275,7 @@ class TheMovieDatabase(Provider):
else ShowStatus.FINISHED,
rating=round(float(show["vote_average"]) * 10),
studios=[self.to_studio(x) for x in show["production_companies"]],
genres=[
self.genre_map[x["id"]]
for x in show["genres"]
if x["id"] in self.genre_map
],
genres=self.process_genres(show["genres"]),
external_id={
self.name: MetadataID(
show["id"], f"https://www.themoviedb.org/tv/{show['id']}"

View File

@ -20,6 +20,12 @@ class Genre(str, Enum):
THRILLER = "Thriller"
WAR = "War"
WESTERN = "Western"
KIDS = "Kids"
NEWS = "News"
REALITY = "Reality"
SOAP = "Soap"
TALK = "Talk"
POLITICS = "Politics"
def to_kyoo(self):
return self.value