def testGraphAddEdge(self): """ Tests adding an edge """ graph = Graph() graph.parseFile(TESTFILE) tmp_movie = Movies("BlahBlah", "1980", "$121,890,708", "Robert Redford") tmp_actor = Actors("Freeman Blah", 80, "BlahBlah") graph.add_movie(tmp_movie) graph.add_actor(tmp_actor) graph.add_edge(Edges(tmp_actor.name, tmp_movie.name, 222759050.0))
def testMovieActors(self): """ Tests finding actors who acted in a given movie """ graph = Graph() graph.parseFile(TESTFILE) tmp_movie = Movies("BlahBlah", "1980", "$121,890,708", "Robert Redford") tmp_actor = Actors("Freeman Blah", 80, "BlahBlah") graph.add_movie(tmp_movie) graph.add_actor(tmp_actor) graph.add_edge(Edges(tmp_actor.name, tmp_movie.name, 222759050.0)) graph.get_actors_for_movie("The Arrangement")
def testMovieGross(self): """ Tests how much a movie grossed at Box Office """ graph = Graph() graph.parseFile(TESTFILE) tmp_movie = Movies("BlahBlah", "1980", "$121,890,708", "Robert Redford") tmp_actor = Actors("Freeman Blah", 80, "BlahBlah") graph.add_movie(tmp_movie) graph.add_actor(tmp_actor) graph.add_edge(Edges(tmp_actor.name, tmp_movie.name, 222759050.0)) graph.get_movie_gross("The Thomas Crown Affair")
def testGetMoviesForYear(self): """ Tests getting movies for given year """ graph = Graph() graph.parseFile(TESTFILE) tmp_movie = Movies("BlahBlah", "1980", "$121,890,708", "Robert Redford") tmp_actor = Actors("Freeman Blah", 80, "BlahBlah") graph.add_movie(tmp_movie) graph.add_actor(tmp_actor) graph.add_edge(Edges(tmp_actor.name, tmp_movie.name, 222759050.0)) graph.get_movies_for_year("1980")
def testOldestActors(self): """ Tests finding oldest X actors """ graph = Graph() graph.parseFile(TESTFILE) tmp_movie = Movies("BlahBlah", "1980", "$121,890,708", "Robert Redford") tmp_actor = Actors("Freeman Blah", 78, "BlahBlah") graph.add_movie(tmp_movie) graph.add_actor(tmp_actor) graph.add_edge(Edges(tmp_actor.name, tmp_movie.name, 222759050.0)) graph.find_oldest_actors(2)
def testHighestGrossing(self): """ Tests finding highest grossing X actors """ graph = Graph() graph.parseFile(TESTFILE) tmp_movie = Movies("BlahBlah", "1980", "$121,890,708", "Robert Redford") tmp_actor = Actors("Freeman Blah", 80, "BlahBlah") graph.add_movie(tmp_movie) graph.add_actor(tmp_actor) graph.add_edge(Edges(tmp_actor.name, tmp_movie.name, 222759050.0)) graph.find_highest_grossing_actors(5)
def parseFile(self, filename): """ Parses through the .json file to create the graph :param filename: the name of the JSON format file :return: A graph structure with with vertices and edges """ with open(filename, 'r') as json_data: data = json.load(json_data) for d in data: for either in d: if d[either]['json_class']=='Movie': # print("==================================Movies=======================================") i = d[either]['name'] release_yr = d[either]['year'] gross = d[either]['box_office'] actors = d[either]['actors'] self.add_movie(Movies(i, release_yr, gross, actors)) else: # print("==================================Actors=======================================") i = d[either]['name'] age = d[either]['age'] movies = d[either]['movies'] self.add_actor(Actors(i, age, movies)) # print("==================================Edges=======================================") for each_actor in self.actors: movies = self.actors[each_actor].info()['Movies'] for m in movies: for each_movie in self.movies: if each_movie == m: self.movies[each_movie].info()['Release Year'] gross_m = self.movies[each_movie].info()['Box office'] if(gross_m < 9999): gross_m *= 1000000 number_actors_m = len(self.movies[each_movie].info()['Actors']) rank = 0; for a in range(number_actors_m): if self.movies[each_movie].info()['Actors'][a] == i: rank = a; if number_actors_m != 0: weight = gross_m * (number_actors_m - rank) / number_actors_m else: weight = gross_m self.add_edge(Edges(each_actor, each_movie, weight))
""" Tests extraction from Json file and structure of Graph """ graph = Graph2() graph.parseFile(TESTFILE) if __name__ == "__main__": #unittest.main() graph = Graph2() graph.parseFile(TESTFILE) tmp_movie = Movies("BlahBlah", 2010, 121890708, ["Robert Redford", "Freeman Blah"]) tmp_actor = Actors("Freeman Blah", 7, ["BlahBlah"]) graph.add_movie(tmp_movie) graph.add_actor(tmp_actor) graph.add_edge(Edges(tmp_actor.name, tmp_movie.name, 222759050.0)) graph.get_movies_for_actor("Faye Dunaway") graph.get_movies_for_year(2002) graph.get_movie_actors_for_year(2002) graph.get_actors_for_movie("Message in a Bottle") graph.get_movie_gross("The Thomas Crown Affair") graph.find_highest_grossing_actors(5) graph.find_oldest_actors(2) graph.find_actor_hub(5) graph.send_actors_to_json() graph.send_edges_to_json() graph.send_movies_to_json() graph.age_group_analysis() graph.plot_actor_hub()