From 6ec12f70dbcebcff026863db2f0b741546e17237 Mon Sep 17 00:00:00 2001 From: Julien Veyssier Date: Wed, 26 Nov 2014 13:33:35 +0100 Subject: [PATCH] [cinema] a person may have several roles in a movie, cap and apps adapted --- weboob/applications/cineoob/cineoob.py | 20 ++++++++++---------- weboob/applications/qcineoob/main_window.py | 12 ++++++------ weboob/capabilities/cinema.py | 20 ++++++++++++-------- 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/weboob/applications/cineoob/cineoob.py b/weboob/applications/cineoob/cineoob.py index a8dfe88a..02606490 100644 --- a/weboob/applications/cineoob/cineoob.py +++ b/weboob/applications/cineoob/cineoob.py @@ -250,13 +250,13 @@ class Cineoob(ReplApplication): inter = list(set(lid1) & set(lid2)) for common in inter: movie = self.get_object(common, 'get_movie', caps=CapCinema) - role1 = movie.get_role_by_person_id(person1.id) + role1 = movie.get_roles_by_person_id(person1.id) if not role1: - role1 = movie.get_role_by_person_name(person1.name) - role2 = movie.get_role_by_person_id(person2.id) + role1 = movie.get_roles_by_person_name(person1.name) + role2 = movie.get_roles_by_person_id(person2.id) if not role2: - role2 = movie.get_role_by_person_name(person2.name) - movie.short_description = '%s as %s ; %s as %s'%(person1.name, role1, person2.name, role2) + role2 = movie.get_roles_by_person_name(person2.name) + movie.short_description = '%s as %s ; %s as %s'%(person1.name, ', '.join(role1), person2.name, ', '.join(role2)) if movie: self.cached_format(movie) @@ -290,13 +290,13 @@ class Cineoob(ReplApplication): inter = list(set(lid1) & set(lid2)) for common in inter: person = self.get_object(common, 'get_person', caps=CapCinema) - role1 = person.get_role_by_movie_id(movie1.id) + role1 = person.get_roles_by_movie_id(movie1.id) if not role1: - role1 = person.get_role_by_movie_title(movie1.original_title) - role2 = person.get_role_by_movie_id(movie2.id) + role1 = person.get_roles_by_movie_title(movie1.original_title) + role2 = person.get_roles_by_movie_id(movie2.id) if not role2: - role2 = person.get_role_by_movie_title(movie2.original_title) - person.short_description = '%s in %s ; %s in %s'%(role1, movie1.original_title, role2, movie2.original_title) + role2 = person.get_roles_by_movie_title(movie2.original_title) + person.short_description = '%s in %s ; %s in %s'%(', '.join(role1), movie1.original_title, ', '.join(role2), movie2.original_title) self.cached_format(person) def do_info_movie(self, id): diff --git a/weboob/applications/qcineoob/main_window.py b/weboob/applications/qcineoob/main_window.py index 3bc16c9b..42ccca47 100644 --- a/weboob/applications/qcineoob/main_window.py +++ b/weboob/applications/qcineoob/main_window.py @@ -131,9 +131,9 @@ class Result(QFrame): for common in inter: movie = backend.get_movie(common) movie.backend = backend_name - role1 = movie.get_role_by_person_id(person1.id) - role2 = movie.get_role_by_person_id(person2.id) - movie.short_description = '%s as %s ; %s as %s'%(person1.name, role1, person2.name, role2) + role1 = movie.get_roles_by_person_id(person1.id) + role2 = movie.get_roles_by_person_id(person2.id) + movie.short_description = '%s as %s ; %s as %s'%(person1.name, ', '.join(role1), person2.name, ', '.join(role2)) self.addMovie(movie) self.processFinished() @@ -167,9 +167,9 @@ class Result(QFrame): for common in inter: person = backend.get_person(common) person.backend = backend_name - role1 = movie1.get_role_by_person_id(person.id) - role2 = movie2.get_role_by_person_id(person.id) - person.short_description = '%s in %s ; %s in %s'%(role1, movie1.original_title, role2, movie2.original_title) + role1 = movie1.get_roles_by_person_id(person.id) + role2 = movie2.get_roles_by_person_id(person.id) + person.short_description = '%s in %s ; %s in %s'%(', '.join(role1), movie1.original_title, ', '.join(role2), movie2.original_title) self.addPerson(person) self.processFinished() diff --git a/weboob/capabilities/cinema.py b/weboob/capabilities/cinema.py index 1e8a2d0d..20260771 100644 --- a/weboob/capabilities/cinema.py +++ b/weboob/capabilities/cinema.py @@ -46,17 +46,19 @@ class Movie(BaseObject): BaseObject.__init__(self, id) self.original_title = original_title - def get_role_by_person_name(self,name): + def get_roles_by_person_name(self,name): for role in self.roles.keys(): if name.lower() in [person[1].lower() for person in self.roles[role]]: return role return None - def get_role_by_person_id(self,id): + def get_roles_by_person_id(self,id): + result = [] for role in self.roles.keys(): if id in [person[0] for person in self.roles[role]]: - return role - return None + result.append(role) + + return result class Person(BaseObject): @@ -80,7 +82,7 @@ class Person(BaseObject): BaseObject.__init__(self, id) self.name = name - def get_role_by_movie_title(self,title): + def get_roles_by_movie_title(self,title): for role in self.roles.keys(): for mt in [movie[1] for movie in self.roles[role]]: # title we have is included ? @@ -88,11 +90,13 @@ class Person(BaseObject): return role return None - def get_role_by_movie_id(self,id): + def get_roles_by_movie_id(self,id): + result = [] for role in self.roles.keys(): if id in [movie[0] for movie in self.roles[role]]: - return role - return None + result.append(role) + + return result class CapCinema(Capability):