def getFilmography(dataF, indexF, keyF, attrIF, attrKF, offset, charNF=None, doCast=0, doWriters=0): """Gather information from the given files about the person entry found at offset; return a list of Movie objects, with the relevant attributes.""" name, res = getRawData(dataF, offset, doCast, doWriters) resList = [] for movie in res: title = getLabel(movie['movieID'], indexF, keyF) if not title: continue curRole = movie.get('currentRole', u'') roleID = None if curRole and charNF: curRole, roleID = getCharactersIDs(curRole, charNF) m = Movie(title=title, movieID=movie['movieID'], currentRole=curRole, roleID=roleID, accessSystem='local') if movie.has_key('attributeID'): attr = getLabel(movie['attributeID'], attrIF, attrKF) if attr: m.notes = attr resList.append(m) return resList
def getMovieCast(dataF, movieID, indexF, keyF, attrIF, attrKF, offsList=[], charNF=None, doCast=0, doWriters=0): """Read the specified files and return a list of Person objects, one for every people in offsList.""" resList = [] _globoff = [] for offset in offsList: # One round for person is enough. if offset not in _globoff: _globoff.append(offset) else: continue personID, movies = getRawData(dataF, offset, doCast, doWriters) # Consider only the current movie. movielist = [x for x in movies if x.get('movieID') == movieID] # XXX: a person can be listed more than one time for a single movie: # think about directors of TV series. # XXX: here, 'movie' is a dictionary as returned by the getRawData # function, not a Movie class instance. for movie in movielist: name = getLabel(personID, indexF, keyF) if not name: continue curRole = movie.get('currentRole', u'') roleID = None if curRole and charNF: curRole, roleID = getCharactersIDs(curRole, charNF) p = Person(name=name, personID=personID, currentRole=curRole, roleID=roleID, accessSystem='local') if movie.has_key('attributeID'): attr = getLabel(movie['attributeID'], attrIF, attrKF) if attr: p.notes = attr # Used to sort cast. if movie.has_key('position'): p.billingPos = movie['position'] or None resList.append(p) return resList