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}.")
Beispiel #2
0
    def test_get_albums_by_year(self):
        expected = [
            ["The Beatles", "Revolver", "1966", "rock", "34:43"],
            ["David Bowie", "Low", "1977", "rock", "38:26"]
        ]
        albums = get_albums_by_genre(self.albums, 'rock')

        self.assertListEqual(albums, expected)
def main():
    # importuje plik i zapisuje w lokalnej dla tego modułu liście
    albums_data = file_handling.import_data("albums_data.txt")
    working = True
    check = True
    text = ""
    # loopa zeby menu było wyświetlane non stop, nawet jesli ValueError to znaczy jesli input
    # nie bedzie int. text jest po to zeby wyswietlac okreslony komunikat w dowolnie wybranym miejscu
    # w przypadku dobrze wybranej opcji zamieniam text na pusty string zeby komunika nie byl wysiwetlany
    while working and check:
        try:
            display.print_program_menu([
                "Show table", "Delete album", "Display oldest album",
                "Get albums by genre", "What is the oldest album by genre",
                "For arrow keys navigation"
            ], text)
            choice = int(input("What is your choice?:"))
            if choice == 1:
                display.print_albums_list(albums_data)
                display.pause()
                text = ""
            elif choice == 2:
                display.print_albums_list(albums_data)
                artist = input("What is name of artist you want to delete: ")
                album_name = input(
                    "What is name of album you want to delete: ")
                delete_album_by_artist_and_album_name(albums_data, artist,
                                                      album_name)
                text = ""
            elif choice == 3:
                display.print_command_result(
                    music_reports.get_last_oldest(albums_data))
                text = ""
            elif choice == 4:
                try:
                    genre = input("What is the genre?: ")
                    display.print_albums_list(
                        music_reports.get_albums_by_genre(albums_data, genre))
                    display.pause()
                    text = ""
                except (ValueError, IndexError, TypeError):
                    text = "\033[41;33mNo such genre\33[m"
            elif choice == 5:
                try:
                    genre = input("What is the genre?: ")
                    display.print_command_result(
                        music_reports.get_last_oldest_of_genre(
                            albums_data, genre))
                    text = ""
                except (ValueError, IndexError, TypeError):
                    text = "\033[41;33mNo such genre\33[m"
            elif choice == 6:
                arow_nawigation_menu()
            elif choice == 0:
                display.clear()
                working = False
        except ValueError:
            text = "\033[41;33mGive proper number\33[m"
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!")
Beispiel #7
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)
Beispiel #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
    """
    choose = None

    while choose != 5:

        commands = [
            'Get albums by genre', 'Qunatity of albums in each genre',
            'Get album with biggest value in length field',
            'Get last album with earliest release year',
            'Get last album with earliest release year in given genre', 'Exit'
        ]
        display.print_albums_list(albums)
        display.print_program_menu(commands)

        choose = int(input("Please provide your choose: "))
        message = commands[choose]
        display.print_command_result(message)
        if message == 'Get albums by genre':
            genre = input("Pleae provide a music genre: ")
            albums_data = music_reports.get_albums_by_genre(albums, genre)
            for album in albums_data:
                display.print_album_info(album)
        if message == 'Qunatity of albums in each genre':
            result = music_reports.get_genre_stats(albums)
            message = str(result)
            display.print_command_result(message)
        if message == 'Get album with biggest value in length field':
            albums_data = music_reports.get_longest_album(albums)
            for album in albums_data:
                display.print_album_info(album)
        if message == 'Get last album with earliest release year':
            albums_data = music_reports.get_last_oldest(albums)
            for album in albums_data:
                display.print_album_info(album)
        else:
            print("dupas")
Beispiel #9
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")
Beispiel #10
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.")
Beispiel #11
0
def arow_nawigation_menu():
    albums_data = file_handling.import_data("albums_data.txt")
    working = True
    check = False
    text = ""
    menu_index = 0
    menu_lenght = 7
    # while not check and working:"\33[46;37m","\33[m"
    while working and not check:
        arrow_choice = []
        menu_index = ((7000 - len(arrow_up) + len(arrow_down)) % menu_lenght
                      )  #7k gdyby ktos chcial naciska up arrow
        printing_addons = [
            ["", ""], ["", ""], ["", ""], ["", ""], ["", ""], ["", ""]
        ]  #lista z brakujacym elementem ktora bedzie dodrukowywana do menu
        printing_addons.insert(
            menu_index, ["==>>", "<<=="]
        )  # brakujacy element o konkretnym indeksie ktory bedzie zmieniał kolor czcionki
        display.print_program_menu_arrow_nawigation([
            "             Show table              ",
            "            Delete album             ",
            "         Display oldest album        ",
            "          Get albums by genre        ",
            "  What is the oldest album by genre  ",
            "      For number keys navigation     ",
            "                Exit                 "
        ], text, menu_index, printing_addons)
        arrow_sensing(arrow_choice)
        if menu_index == 0 and len(arrow_choice) > 0:
            display.print_albums_list(albums_data)
            display.pause()
            text = ""
        elif menu_index == 1 and len(arrow_choice) > 0:
            display.print_albums_list(albums_data)
            artist = input("What is name of artist you want to delete: ")
            album_name = input("What is name of album you want to delete: ")
            delete_album_by_artist_and_album_name(albums_data, artist,
                                                  album_name)
            text = ""
        elif menu_index == 2 and len(arrow_choice) > 0:
            display.print_command_result(
                music_reports.get_last_oldest(albums_data))
            text = ""
        elif menu_index == 3 and len(arrow_choice) > 0:
            try:
                genre = input("What is the genre?: ")
                display.print_albums_list(
                    music_reports.get_albums_by_genre(albums_data, genre))
                display.pause()
                text = ""
            except (ValueError, IndexError, TypeError):
                text = "\033[41;33mNo such genre\33[m"
        elif menu_index == 4 and len(arrow_choice) > 0:
            try:
                genre = input("What is the genre?: ")
                display.print_command_result(
                    music_reports.get_last_oldest_of_genre(albums_data, genre))
                text = ""
            except (ValueError, IndexError, TypeError):
                text = "\033[41;33mNo such genre\33[m"
        elif menu_index == 5 and len(arrow_choice) > 0:
            check = True
        elif menu_index == 6 and len(arrow_choice) > 0:
            display.clear()
            exit()
Beispiel #12
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!')
Beispiel #13
0
import time


while True:

    display.print_start_menu(music_reports.DATA)
    
    answer = input("What would you like to do? ")
    print('----------------------------------------------------------------------------------------')

    if answer == '*':
        display.print_multiple_albums(music_reports.DATA)
    elif answer == 'g':
        answer=display.print_specific_type(music_reports.DATA,3)
        # answer = input("Which genre? ")
        display.print_multiple_albums(music_reports.get_albums_by_genre(music_reports.DATA, answer))

    elif answer == 't':
        answer = input("Album should be longer than? ")
        if answer.isnumeric():    
            album_name = input("Album should be shorter than? ")
            if album_name.isnumeric(): 
                display.print_multiple_albums(music_reports.get_albums_by_time(music_reports.DATA, answer, album_name))
        else:
            print('----------------------------------------------------------------------------------------')
            print("STOP ACTING LIKE A CHILD AND CHOOSE A TIMELINE FFS!!!")
            print('----------------------------------------------------------------------------------------')
            continue
    elif answer == 's':
        display.print_single_album(music_reports.get_shortest_album(music_reports.DATA))
    elif answer == 'l':