def do_option(user_option, albums):
    if user_option == "1":
        genre = get_genre()
        try:
            by_genre = music_reports.get_albums_by_genre(albums,genre)
            display.print_albums_list(by_genre)
            while True:
                try:
                    way_of_export = input("\nProvide mode a or w: \n")
                    file_handling.export_data(by_genre, "albums_kuba.txt", way_of_export)
                    break
                except ValueError:
                    display.print_command_result("Wrond mode!")
        except ValueError:
            display.print_command_result("There is no genre like yours!")


    if user_option == "2":
        longest_album = music_reports.get_longest_album(albums)
        display.print_command_result("The longest album is: ")
        display.print_album_info(longest_album)

    if user_option == "3":
        total_albums_length = music_reports.get_total_albums_length(albums)
        display.print_command_result(f"Total length of albums is: {total_albums_length}.")
예제 #2
0
    def test_get_total_albums_length(self):
        expected = 9.18
        albums = [["rock", "rock", "966", "pop", "3:51"],
                  ["Shorts", "Short", "1991", "hip hop", "5:20"]]
        total_length = get_total_albums_length(albums)

        self.assertAlmostEqual(total_length, expected, 2)
예제 #3
0
def main():
    """
    Calls all interaction between user and program, handles program menu
    and user inputs. It should repeat displaying menu and asking for
    input until that moment.

    You should create new functions and call them from main whenever it can
    make the code cleaner
    """


    print_command_result('MUSIC LIBARY \n')

    while True:
        global file_albums
        global MENU
        print_command_result('Menu\n')
        print_program_menu(MENU)
        print('___________________________________________________\n')
        user_input =input('Please chose one of teh following option:')
        if user_input =='1':
            print_command_result('LIST OF ALBUMS\n')
            print_albums_list(file_albums)
        elif user_input =='2':
            genre = input('Enter a music genre: ')
            gen_albums = get_albums_by_genre(file_albums, genre)
            print_command_result('all of the file data\n')
            print_albums_list(gen_albums)
        elif user_input=='3':
            genre =input('Enter genre: \n')
            last_oldest_by_gen = get_last_oldest_of_genre(file_albums,genre)
            print_command_result('Oldest album of chosen genre:\n')
            print_album_info(last_oldest_by_gen)
        elif user_input =='4':
            longest_album = get_longest_album(file_albums)
            print_command_result('Longest album is:\n')
            print_album_info(longest_album)
        elif user_input =='5':
            lenght_f_album = get_total_albums_length(file_albums)
            print_command_result('"Total albums lenght is(float):\n"')
            print_command_result(str(lenght_f_album))
        elif user_input =='6':
            year = input("Enter choosen year: ")
            album_years = get_album_by_year(file_albums,year)
            print_command_result('Album chosen by year\n')
            print_albums_list(album_years)
        elif user_input =='7':
            last_oldest = get_last_oldest(file_albums)
            print_command_result('oldest album\n')
            print_albums_list(last_oldest)
        elif user_input =='8':
            genre_stat =get_genre_stats(file_albums)
            print_command_result('Statistic\n')
            print_album_info(genre_stat)
        elif user_input =='9':
            break
        else:
            continue
def choose_options_menu(albums):
    user_choice = input('Your choice: ')
    if user_choice == '0':
        sys.exit()
    elif user_choice == ALBUMS_BY_GENRE:
        genre = ui.genre('Enter genre of music: ', albums)
        music_reports.get_albums_by_genre(albums, genre)
    elif user_choice == LONGEST_ALBUM:
        music_reports.get_longest_album(albums)
    elif user_choice == TOTAL_ALBUM_LENGTH:
        music_reports.get_total_albums_length(albums)
    elif user_choice == SORT_BY_DURATION:
        music_reports.sort_by_duration(albums)
    elif user_choice == DELETE_BY_GENRE:
        music_reports.get_genre_list(albums)
        # modify.delete_album_from(albums)
    else:
        ui.display_messsge(ui.display_colored_text(MESSAGE_COLOR, "There isn't such option"))
def load_action(action, albums):
    if action == 1:
        genre = get_genre(albums)
        genre_albums = music_reports.get_albums_by_genre(albums, genre)
        display.print_albums_list(genre_albums)
    elif action == 2:
        longest_album = music_reports.get_longest_album(albums)
        display.print_album_info(longest_album)
    elif action == 3:
        total_length = str(music_reports.get_total_albums_length(albums))
        display.print_command_result(total_length)
    elif action == 0:
        return 0
    else:
        raise KeyError("Wrong input!")
예제 #6
0
def menu_option_choose(albums):
    inputs = get_inputs(["Please enter a number: "], "")
    option = inputs[0]
    if option == "0":
        display.print_albums_list(albums)
    elif option == "1":
        genre = get_inputs(['genre: '], 'What genre do you looking for?')
        albums_in_genre = music_reports.get_albums_by_genre(albums, genre[0])
        try:
            display.print_albums_list(albums_in_genre)
        except TypeError:
            print("Albums in such genre not found")
    elif option == "2":
        longest_album = music_reports.get_longest_album(albums)
        display.print_album_info(longest_album)
    elif option == "3":
        total_albums_length = music_reports.get_total_albums_length(albums)
        print(total_albums_length)
예제 #7
0
def choose_option():
    albums = file_handling.import_data()
    choose_option = get_inputs(['Enter option number: '])
    option = choose_option[0]
    if option == '0':
        add_album(albums)
    elif option == '1':
        remove_album(albums)
    elif option == '2':
        get_genre = get_inputs(['genre: '])
        try:
            display.print_albums_list(
                music_reports.get_albums_by_genre(albums, get_genre[0]))
        except ValueError as err:
            display.print_command_result(str(err))
    elif option == '3':
        display.print_album_info(music_reports.get_longest_album(albums))
    elif option == '4':
        total_albums_length = music_reports.get_total_albums_length(albums)
        display.print_command_result(
            f'Total albums length in mins: {total_albums_length}')
    elif option == '5':
        genre_stats = music_reports.get_genre_stats(albums)
        for genre_name, amount_of_albums in genre_stats.items():
            display.print_command_result(f'{genre_name}|{amount_of_albums}')
    elif option == '6':
        oldest_album = music_reports.get_last_oldest(albums)
        display.print_album_info(oldest_album)
    elif option == '7':
        get_genre = get_inputs(['genre: '])
        oldest_album_in_genre = music_reports.get_last_oldest_of_genre(
            albums, get_genre[0])
        display.print_album_info(oldest_album_in_genre)
    elif option == '8':
        sys.exit()
    else:
        raise ValueError("There is no such option")
예제 #8
0
def main():
    """
    Calls all interaction between user and program, handles program menu
    and user inputs. It should repeat displaying menu and asking for
    input until that moment.

    You should create new functions and call them from main whenever it can
    make the code cleaner
    """
    menu_commands = [
        "Delete album", "Get albums by genre",
        "How many albums are in each genre",
        "Get last album with earliest release year",
        "Get last album with earliest release year in given genre",
        "Get longest album", "Get sum of lengths of all albums in minutes",
        "Quit program"
    ]

    while True:
        albums_data = file_handling.import_data(filename='albums_data.txt')
        display.print_command_result("Choose your option:")
        display.print_program_menu(menu_commands)
        choice = input("What would you like to do? ")
        if choice == "0":
            display.print_albums_list(albums_data)
            artist = input("Which artist would you like to remove?")
            album_name = input("Which album would you like to remove?")
            delete_album_by_artist_and_album_name(albums_data, artist,
                                                  album_name)
        elif choice == "1":
            genre = input("Which genre would you like to check?")
            try:
                genre_list = music_reports.get_albums_by_genre(
                    albums_data, genre)
                display.print_albums_list(genre_list)
            except ValueError:
                display.print_command_result("Wrong genre does not match")

        elif choice == "2":
            message = str(music_reports.get_genre_stats(albums_data))
            display.print_command_result(message)

        elif choice == "3":
            oldest = music_reports.get_last_oldest(albums_data)
            display.print_album_info(oldest)

        elif choice == "4":
            genre = input("Which genre would you like to check?")
            try:
                oldest_from_genre = music_reports.get_last_oldest_of_genre(
                    albums_data, genre)
                display.print_album_info(oldest_from_genre)
            except ValueError:
                display.print_command_result("Wrong genre does not match")

        elif choice == "5":
            longest = music_reports.get_longest_album(albums_data)
            display.print_album_info(longest)

        elif choice == "6":
            message = str(music_reports.get_total_albums_length(albums_data))
            display.print_command_result(message)

        elif choice == "7":
            sys.exit()

        else:
            display.print_command_result("There's no such option. Try again.")
예제 #9
0
def main():
    """
    Calls all interaction between user and program, handles program menu
    and user inputs. It should repeat displaying menu and asking for
    input until that moment.

    You should create new functions and call them from main whenever it can
    make the code cleaner
    """
    menu = [
        'Get album by genre.', 'Get genre stats.', 'Get longest album.',
        'Get last album with earliest release year by genre',
        'Get sum of lengths of all albums in minutes', 'Delete album.'
    ]
    albums = file_handling.import_data()
    while True:

        display.print_program_menu(menu)
        try:
            option = int(input('Enter option number: '))
            os.system('cls')
            if option == 0:
                try:
                    genre = input('Enter genre: ')
                    result = music_reports.get_albums_by_genre(albums, genre)
                    display.print_albums_list(result)
                except:
                    display.print_command_result('Genre not found!')

            elif option == 1:
                result = music_reports.get_genre_stats(albums)
                print(result)

            elif option == 2:
                result = music_reports.get_longest_album(albums)
                display.print_album_info(result)

            elif option == 3:
                try:
                    genre = input('Enter genre: ')
                    result = music_reports.get_last_oldest_of_genre(
                        albums, genre)
                    display.print_album_info(result)
                except:
                    display.print_command_result('Genre not found!')

            elif option == 4:
                result = music_reports.get_total_albums_length(albums)
                display.print_command_result(str(result))

            elif option == 5:
                display.print_albums_list(albums)
                artist = input('Enter artist name: ')
                album_name = input('Enter album_name: ')
                result = delete_album_by_artist_and_album_name(
                    albums, artist, album_name)
                display.print_albums_list(result)
            else:
                print('Option not found')
        except ValueError:
            print('Enter only number!')