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, Thriller,
War, War,
Western, Western,
Kids,
News,
Reality,
Soap,
Talk,
Politics,
} }

View File

@ -56,12 +56,31 @@ class TheMovieDatabase(Provider):
53: Genre.THRILLER, 53: Genre.THRILLER,
10752: Genre.WAR, 10752: Genre.WAR,
37: Genre.WESTERN, 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 @property
def name(self) -> str: def name(self) -> str:
return "themoviedatabase" 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): def get_languages(self, *args):
return self._languages + list(args) return self._languages + list(args)
@ -154,11 +173,7 @@ class TheMovieDatabase(Provider):
rating=round(float(movie["vote_average"]) * 10), rating=round(float(movie["vote_average"]) * 10),
runtime=int(movie["runtime"]) if movie["runtime"] is not None else None, runtime=int(movie["runtime"]) if movie["runtime"] is not None else None,
studios=[self.to_studio(x) for x in movie["production_companies"]], studios=[self.to_studio(x) for x in movie["production_companies"]],
genres=[ genres=self.process_genres(movie["genres"]),
self.genre_map[x["id"]]
for x in movie["genres"]
if x["id"] in self.genre_map
],
external_id=( external_id=(
{ {
self.name: MetadataID( self.name: MetadataID(
@ -260,11 +275,7 @@ class TheMovieDatabase(Provider):
else ShowStatus.FINISHED, else ShowStatus.FINISHED,
rating=round(float(show["vote_average"]) * 10), rating=round(float(show["vote_average"]) * 10),
studios=[self.to_studio(x) for x in show["production_companies"]], studios=[self.to_studio(x) for x in show["production_companies"]],
genres=[ genres=self.process_genres(show["genres"]),
self.genre_map[x["id"]]
for x in show["genres"]
if x["id"] in self.genre_map
],
external_id={ external_id={
self.name: MetadataID( self.name: MetadataID(
show["id"], f"https://www.themoviedb.org/tv/{show['id']}" show["id"], f"https://www.themoviedb.org/tv/{show['id']}"

View File

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