""" Music Playlist Manager - Main Program """ from library import MusicLibrary from parameters import APP_TITLE, APP_VERSION def create_sample_library(library): """ Create sample music library """ songs_data = [ ("Bohemian Rhapsody", "Queen", "A Night at the Opera", 354, "Rock", 1975), ("Imagine", "John Lennon", "Imagine", 183, "Pop", 1971), ("Billie Jean", "Michael Jackson", "Thriller", 294, "Pop", 1982), ("Smells Like Teen Spirit", "Nirvana", "Nevermind", 301, "Rock", 1991), ("Sweet Child O' Mine", "Guns N' Roses", "Appetite for Destruction", 356, "Rock", 1987), ("Hotel California", "Eagles", "Hotel California", 391, "Rock", 1977), ("Stairway to Heaven", "Led Zeppelin", "Led Zeppelin IV", 482, "Rock", 1971), ("Purple Rain", "Prince", "Purple Rain", 518, "R&B", 1984), ("Like a Rolling Stone", "Bob Dylan", "Highway 61 Revisited", 369, "Rock", 1965), ("What's Going On", "Marvin Gaye", "What's Going On", 232, "R&B", 1971) ] for title, artist, album, duration, genre, year in songs_data: song = library.add_song(title, artist, album) song.set_duration(duration) song.set_genre(genre) song.set_year(year) # Simulate some plays and ratings import random plays = random.randint(5, 50) for _ in range(plays): song.play() song.rate(random.randint(3, 5)) print(f"Added {len(songs_data)} songs to library") def print_separator(char='=', length=70): """ Print separator line """ print(char * length) def main(): """ Main program execution """ print_separator() print(f"{APP_TITLE} v{APP_VERSION}") print_separator() print("") # Create music library library = MusicLibrary() # Create sample library print("Building music library...") create_sample_library(library) print("") # Display library statistics stats = library.get_library_statistics() print_separator() print("Library Statistics") print_separator() print(f"Total Songs: {stats['total_songs']}") print(f"Total Artists: {stats['total_artists']}") print(f"Total Albums: {stats['total_albums']}") print(f"Total Playlists: {stats['total_playlists']}") print(f"Total Duration: {stats['total_duration_hours']:.2f} hours") print(f"Total Plays: {stats['total_plays']}") print("") # Display all songs print_separator() print("Song Library") print_separator() for song in list(library.songs.values())[:5]: print(f"{song.title} - {song.artist}") print(f" Album: {song.album} ({song.year})") print(f" Duration: {song.get_duration_string()}") print(f" Genre: {song.genre}") print(f" Plays: {song.play_count} | Rating: {song.rating}/5") print("") # Create playlists print_separator() print("Creating Playlists") print_separator() rock_playlist = library.create_playlist("Classic Rock Hits") rock_playlist.set_description("Best rock songs from the 60s to 90s") # Add rock songs to playlist for song in library.get_songs_by_genre("Rock"): rock_playlist.add_song(song.song_id) print(f"Created: {rock_playlist}") print("") favorites_playlist = library.create_playlist("My Favorites") # Add top rated songs top_songs = library.get_most_played_songs(5) for song in top_songs: favorites_playlist.add_song(song.song_id) song.toggle_favorite() print(f"Created: {favorites_playlist}") print("") # Display playlists print_separator() print("Playlists") print_separator() for playlist in library.playlists.values(): print(f"\n{playlist.name}") print(f" Description: {playlist.description}") print(f" Songs: {playlist.get_song_count()}") print(f" Created: {playlist.created_date.strftime('%Y-%m-%d')}") # Show first 3 songs in playlist playlist_songs = library.get_playlist_songs(playlist.playlist_id) if playlist_songs: print(" Tracks:") for i, song in enumerate(playlist_songs[:3], 1): print(f" {i}. {song.title} - {song.artist}") print("") # Display most played songs print_separator() print("Most Played Songs") print_separator() most_played = library.get_most_played_songs(5) for i, song in enumerate(most_played, 1): print(f"{i}. {song.title} - {song.artist}") print(f" Plays: {song.play_count} | Rating: {song.rating}/5") print("") # Search example print_separator() print("Search Results for 'Hotel'") print_separator() results = library.search_songs("Hotel") for song in results: print(f" {song}") print("") if __name__ == "__main__": main()