import json, os, shutil import curses os.system("title " + "GTA BuyBase") logo = [ "|---------------------------------------------------------------------|", "| KOTIKOT, script by BarsTiger |", "| |", "| |", "| _____ _______ ____ ____ |", "| / ____|__ __|/\ | _ \ | _ \ |", "| | | __ | | / \ | |_) |_ _ _ _ | |_) | __ _ ___ ___ |", "| | | |_ | | | / /\ \ | _ <| | | | | | | | _ < / _` / __|/ _ \ |", "| | |__| | | |/ ____ \ | |_) | |_| | |_| | | |_) | (_| \__ \ __/ |", "| \_____| |_/_/ \_\ |____/ \__,_|\__, | |____/ \__,_|___/\___| |", "| __/ | |", "| |___/ |", "|---------------------------------------------------------------------|" ] def print_center(stdscr, text): stdscr.clear() h, w = stdscr.getmaxyx() x = w//2 - len(text)//2 y = h//2 stdscr.addstr(y, x, text) stdscr.refresh() def printlogo(): print("\n" * ((os.get_terminal_size().lines // 2 - (len(logo) // 2)) + 1)) for line in logo: print(" " * ((os.get_terminal_size().columns//2 - (len(line)//2)) - 1) + line) print("\n" * ((os.get_terminal_size().lines // 2 - (len(logo) // 2)) - 1)) input() cls() def cls(): os.system('cls' if os.name == 'nt' else 'clear') mainmenu = ['Data output', 'Play', 'Scoreboard', 'Exit'] def print_menu(stdscr, selected_row_idx, menu): stdscr.clear() h, w = stdscr.getmaxyx() for idx, row in enumerate(menu): x = w//2 - len(row)//2 y = h//2 - len(menu)//2 + idx if idx == selected_row_idx: stdscr.attron(curses.color_pair(1)) stdscr.addstr(y, x, row) stdscr.attroff(curses.color_pair(1)) else: stdscr.addstr(y, x, row) stdscr.refresh() def main(stdscr): # turn off cursor blinking curses.curs_set(0) # color scheme for selected row curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_WHITE) # specify the current selected row current_row = 0 # print the menu print_menu(stdscr, current_row, mainmenu) while 1: key = stdscr.getch() if key == curses.KEY_UP and current_row > 0: current_row -= 1 elif key == curses.KEY_DOWN and current_row < len(mainmenu)-1: current_row += 1 elif key == curses.KEY_ENTER or key in [10, 13]: print_center(stdscr, "You selected '{}'".format(mainmenu[current_row])) stdscr.getch() # if user selected last row, exit the program if current_row == len(mainmenu)-1: break print_menu(stdscr, current_row, mainmenu) # class menu: # def section(self=0): # cls() # print("Select section") # print("1 - Data output") # print("2 - Database loading and options") # print("3 - Add new item") # print("4 - Owning options") # print("0 - Exit") # # def outputmenu(self=0): # print("What you want to do?") # print("1 - Print all database") # print("2 - Print all items") # print("3 - Print all items by type") # print("4 - Print all items by shop") # print("5 - Print all items by price below this") # print("0 - Back") # # def baseoptions(self=0): # print("What you want to do?") # print("1 - Create backup of opened database") # print("2 - Open another database") # print("3 - Create new database") def getkey(value, dictionary): for key, val in dictionary.items(): if value == val: return key def getkeys(value, dictionary): listofkeys = [] for key, val in dictionary.items(): if value == val: listofkeys.append(key) return listofkeys def dictsortedkey(dictionary): sorteddict = {} for key in sorted(dictionary.keys()): sorteddict[key] = dictionary[key] return sorteddict def printbase(dictionary): keys = list(dictionary) for key in keys: print(key + ": " + dictionary[key][0] + " " + dictionary[key][1] + " " + "{:,}".format(dictionary[key][2])) def checkbelow(belowthis, dictionary): yesbelow = {} for key in list(dictionary): if dictionary[key] <= int(belowthis): yesbelow[key] = dictionary[key] return yesbelow if not os.path.isfile('whattobuy.database'): basewrite = open('whattobuy.database', 'w+') empty = {} json.dump(empty, basewrite, indent=3) basewrite.close() baseread = open('whattobuy.database') database = json.load(baseread) baseread.close() database = dictsortedkey(database) buyitems = list(database) typesofitems = [] shops = [] bytype = {} byshop = {} byprice = {} for item in buyitems: bytype[item] = database[item][0] for item in buyitems: byshop[item] = database[item][1] for item in buyitems: byprice[item] = database[item][2] for key in buyitems: typesofitems.append(bytype[key]) typesofitems = set(typesofitems) typesofitems = list(typesofitems) typesofitems = sorted(typesofitems) for key in buyitems: shops.append(byshop[key]) shops = set(shops) shops = list(shops) shops = sorted(shops) # print(buyitems) # print(bytype) # print(byshop) # print(byprice) printlogo() while True: print("What you want to do?") print("1 - Print all database") print("2 - Print all items") print("3 - Print all items by type") print("4 - Print all items by shop") print("5 - Print all items by price below this") print("6 - Add new item to database") print("7 - Create backup of database") print("8 - Exit") doing = input("Type here: ") print() if doing == "1": print("Name: Type Shop Price") printbase(database) print() input("To go back to menu press Enter...") elif doing == "2": for item in buyitems: print(item) print() input("To go back to menu press Enter...") elif doing == "3": print("Types to search in database: ") for item in typesofitems: print(item) print() for item in getkeys(input("For which type I should check: "), bytype): print(item) print() input("To go back to menu press Enter...") elif doing == "4": print("Types to search in database: ") for item in shops: print(item) print() for item in getkeys(input("For which shop I should check: "), byshop): print(item) print() input("To go back to menu press Enter...") elif doing == "5": belowthisprice = checkbelow(input("I will check for items below this price: "), byprice) for item in list(belowthisprice): print(item + ": " + "{:,}".format(belowthisprice[item])) print() input("To go back to menu press Enter...") elif doing == "6": print() print("Adding new item") specif = [] nameofnewitem = input("Type here name of new item: ") specif.append(input("Type here type of item: ")) specif.append(input("Type here shop, where item can be bought: ")) specif.append(int(input("Type here price of item (without spaces or comas): "))) database[nameofnewitem] = specif basewrite = open('whattobuy.database', 'w+') json.dump(database, basewrite, indent=3, ensure_ascii=False) basewrite.close() elif doing == "7": shutil.copy("whattobuy.database", "whattobuy.databack") if os.path.isfile('whattobuy.databack'): print("Backup successful") print() elif doing == "8": print("---------------------------------------------------------------------") input("To exit press Enter...") exit() elif doing == "228": curses.wrapper(main)