import os
os.chdir(os.path.dirname(os.path.realpath(__file__)))
class Movie:
#initializing movie class and maiking sure release_year and revenue are seen as numbers
def __init__(self, title, director, genre, release_year, revenue):
self.title = title
self.director = director
self.genre = genre
self.release_year = int(release_year)
self.revenue = float(revenue)
#customizing print functionality
def __str__(self):
return f"{self.title} by {self.director} ({self.release_year}) ${self.revenue}M"
#reading the data and passing it through to create classes and adding them to a list of classes
def read_data(filepath):
movie_list = []
with open(filepath, 'r') as file:
for line in file:
title, director, genre, release_year, revenue = line.strip().split(",")
movie_list.append(Movie(title, director, genre, release_year, revenue))
return movie_list
#displaying movies in a new line
def display_movies(movies):
print("Movie List:")
for movie in movies:
print(movie)
print()
#sorting and displaying movies by year
def display_sorted_movies(movies):
print("Sorted Movie List:")
sorted_movies = sorted(movies, key=lambda movie: movie.release_year)
for movie in sorted_movies:
print(movie)
print()
#displaying only movies that are in the romance genre
def display_movies_by_romance(movies):
sorted_movies = []
for movie in movies:
if movie.genre == "Romance":
sorted_movies.append(movie)
print("Movies In Romance Genre:")
for movie in sorted_movies:
print(movie)
print()
#displaying the highest revenue for an action movie before 2010
def highest_action_pre2010(movies):
inrange = []
for movie in movies:
if movie.genre == "Action" and movie.release_year < 2010:
inrange.append(movie)
sorted_movies = sorted(inrange, key=lambda movie: movie.revenue, reverse = True)
print(f"Highest Grossing 'Action' Movie Before 2010:\n{sorted_movies[0]}")
def main():
filepath = "movies.txt"
movie_list = read_data(filepath)
display_movies(movie_list)
display_sorted_movies(movie_list)
display_movies_by_romance(movie_list)
highest_action_pre2010(movie_list)
if __name__ == "__main__":
main()