From 8a6a038955e2e4f722bd6627ac46342ceb721e5f Mon Sep 17 00:00:00 2001 From: BarsTiger Date: Tue, 3 May 2022 10:01:40 +0300 Subject: [PATCH] Deleted GTAwhatToBuy.py as it is located in other repo --- .gitignore | 3 +- OfficialProjects/GTAwhatToBuy/GTAwhatToBuy.py | 620 ------------------ 2 files changed, 1 insertion(+), 622 deletions(-) delete mode 100644 OfficialProjects/GTAwhatToBuy/GTAwhatToBuy.py diff --git a/.gitignore b/.gitignore index 175ace7..b0c3413 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ /.idea/ /Tests/ /Unoffs/ -/OfficialProjects/SuperTimer/alarm.mp3/ -/OfficialProjects/GTAwhatToBuy/ \ No newline at end of file +/OfficialProjects/SuperTimer/alarm.mp3/ \ No newline at end of file diff --git a/OfficialProjects/GTAwhatToBuy/GTAwhatToBuy.py b/OfficialProjects/GTAwhatToBuy/GTAwhatToBuy.py deleted file mode 100644 index bd9b8f1..0000000 --- a/OfficialProjects/GTAwhatToBuy/GTAwhatToBuy.py +++ /dev/null @@ -1,620 +0,0 @@ -import json, os, shutil, subprocess, sys -try: - import curses -except: - subprocess.check_call([sys.executable, "-m", "pip", "install", 'windows-curses']) - import curses -import sys - -os.system("title " + "GTA BuyBase") - -logo = [ - "|---------------------------------------------------------------------|", - "| KOTIKOT, script by BarsTiger |", - "| |", - "| |", - "| _____ _______ ____ ____ |", - "| / ____|__ __|/\ | _ \ | _ \ |", - "| | | __ | | / \ | |_) |_ _ _ _ | |_) | __ _ ___ ___ |", - "| | | |_ | | | / /\ \ | _ <| | | | | | | | _ < / _` / __|/ _ \ |", - "| | |__| | | |/ ____ \ | |_) | |_| | |_| | | |_) | (_| \__ \ __/ |", - "| \_____| |_/_/ \_\ |____/ \__,_|\__, | |____/ \__,_|___/\___| |", - "| __/ | |", - "| |___/ |", - "|---------------------------------------------------------------------|" - ] - -def glstdscr(stdscr): - return stdscr - -globalstdscr = curses.wrapper(glstdscr) - -def print_center(stdscr=globalstdscr, 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') - -def softcls(): - print("\n" * (os.get_terminal_size().lines * 2)) - -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() - -doing = 0 -menulist = {"main": ['Data output', 'Database loading and options', 'Add new item', 'Owning options', 'Exit'], - "output": ['Print all database', 'Print all items', 'Print all items by type', 'Print all items by shop', 'Print all items by price below this', 'Back'], - "baseoptions": ['Create backup of opened database', 'Open another database', 'Create new database', 'Validate database', 'Back'], - "ownoptions": ['Edit own or not', 'Show only owned', 'Show only unowned', 'Show all', 'Back'], - "exit": ["Exit", "Back"]} - -def exitmenu(stdscr): - curses.curs_set(0) - curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_WHITE) - current_row = 0 - - print_menu(stdscr, current_row, menulist["exit"]) - - 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(menulist["exit"])-1: - current_row += 1 - - elif key == curses.KEY_ENTER or key in [10, 13]: - if current_row == 0: - exit() - if current_row == 1: - mainmenu(stdscr) - break - - print_menu(stdscr, current_row, menulist["exit"]) - -def mainmenu(stdscr): - global doing - curses.curs_set(0) - curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_WHITE) - current_row = 0 - - print_menu(stdscr, current_row, menulist["main"]) - - while True: - key = stdscr.getch() - - if key == curses.KEY_UP and current_row > 0: - current_row -= 1 - elif key == curses.KEY_UP and current_row == 0: - current_row = len(menulist["main"])-1 - elif key == curses.KEY_DOWN and current_row < len(menulist["main"])-1: - current_row += 1 - elif key == curses.KEY_DOWN and current_row == len(menulist["main"]) - 1: - current_row = 0 - - elif key == curses.KEY_ENTER or key in [10, 13]: - if current_row == 0: - outputmenu(stdscr) - break - - if current_row == 1: - baseoptionsmenu(stdscr) - break - - if menulist["main"][current_row] == "Add new item": - doing = menulist["main"][current_row] - break - - if current_row == 3: - ownmenu(stdscr) - break - - if current_row == len(menulist["main"])-1: - exitmenu(stdscr) - break - - print_menu(stdscr, current_row, menulist["main"]) - -def outputmenu(stdscr): - global doing - curses.curs_set(0) - curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_WHITE) - current_row = 0 - - print_menu(stdscr, current_row, menulist["output"]) - - while True: - key = stdscr.getch() - - if key == curses.KEY_UP and current_row > 0: - current_row -= 1 - elif key == curses.KEY_UP and current_row == 0: - current_row = len(menulist["output"])-1 - elif key == curses.KEY_DOWN and current_row < len(menulist["output"])-1: - current_row += 1 - elif key == curses.KEY_DOWN and current_row == len(menulist["output"]) - 1: - current_row = 0 - - elif key == curses.KEY_ENTER or key in [10, 13]: - if current_row == len(menulist["output"])-1: - mainmenu(stdscr) - break - else: - doing = menulist["output"][current_row] - break - - elif key == curses.KEY_BACKSPACE or str(key) in ['KEY_BACKSPACE', '8', '127']: - mainmenu(stdscr) - break - - print_menu(stdscr, current_row, menulist["output"]) - -def baseoptionsmenu(stdscr): - global doing - curses.curs_set(0) - curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_WHITE) - current_row = 0 - - print_menu(stdscr, current_row, menulist["baseoptions"]) - - while True: - key = stdscr.getch() - - if key == curses.KEY_UP and current_row > 0: - current_row -= 1 - elif key == curses.KEY_UP and current_row == 0: - current_row = len(menulist["baseoptions"])-1 - elif key == curses.KEY_DOWN and current_row < len(menulist["baseoptions"])-1: - current_row += 1 - elif key == curses.KEY_DOWN and current_row == len(menulist["baseoptions"]) - 1: - current_row = 0 - - elif key == curses.KEY_ENTER or key in [10, 13]: - if current_row == len(menulist["baseoptions"])-1: - mainmenu(stdscr) - break - else: - doing = menulist["baseoptions"][current_row] - break - - elif key == curses.KEY_BACKSPACE or str(key) in ['KEY_BACKSPACE', '8', '127']: - mainmenu(stdscr) - break - - print_menu(stdscr, current_row, menulist["baseoptions"]) - -def ownmenu(stdscr): - global doing - curses.curs_set(0) - curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_WHITE) - current_row = 0 - - print_menu(stdscr, current_row, menulist["ownoptions"]) - - while True: - key = stdscr.getch() - - if key == curses.KEY_UP and current_row > 0: - current_row -= 1 - elif key == curses.KEY_UP and current_row == 0: - current_row = len(menulist["ownoptions"])-1 - elif key == curses.KEY_DOWN and current_row < len(menulist["ownoptions"])-1: - current_row += 1 - elif key == curses.KEY_DOWN and current_row == len(menulist["ownoptions"]) - 1: - current_row = 0 - - elif key == curses.KEY_ENTER or key in [10, 13]: - if current_row == len(menulist["ownoptions"])-1: - mainmenu(stdscr) - break - else: - doing = menulist["ownoptions"][current_row] - break - - elif key == curses.KEY_BACKSPACE or str(key) in ['KEY_BACKSPACE', '8', '127']: - mainmenu(stdscr) - break - - print_menu(stdscr, current_row, menulist["ownoptions"]) - -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) - if show == "All": - for key in keys: - print(key + ": " + dictionary[key][0] + " " + dictionary[key][1] + " " + "{:,}".format(dictionary[key][2])) - print() - elif show == "Owned": - for key in keys: - if dictionary[key][3] == True: - print(key + ": " + dictionary[key][0] + " " + dictionary[key][1] + " " + "{:,}".format(dictionary[key][2])) - print() - elif show == "Unowned": - for key in keys: - if dictionary[key][3] == False: - print(key + ": " + dictionary[key][0] + " " + dictionary[key][1] + " " + "{:,}".format( - dictionary[key][2])) - print() - -def checkbelow(belowthis, dictionary): - yesbelow = {} - for key in list(dictionary): - if dictionary[key] <= int(belowthis): - yesbelow[key] = dictionary[key] - return yesbelow - -basename = 'default.database' -backname = str(os.path.splitext(basename)[0]) + ".databack" -show = "All" - -if not os.path.isfile(basename): - basewrite = open(basename, 'w+') - empty = {} - json.dump(empty, basewrite, indent=3) - basewrite.close() - -baseread = open(basename) -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) - -def openbase(): - global baseread, database, buyitems, typesofitems, shops, bytype, byshop, byprice, backname - if not os.path.isfile(basename): - basewrite = open(basename, 'w+') - empty = {} - json.dump(empty, basewrite, indent=3) - basewrite.close() - - baseread = open(basename) - 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) - backname = str(os.path.splitext(basename)[0]) + ".databack" - -printlogo() - -while True: - curses.wrapper(mainmenu) - - if doing == menulist["output"][0]: - print("Name: Type Shop Price") - print() - printbase(database) - print() - input("To go back to menu press Enter...") - softcls() - - elif doing == menulist["output"][1]: - if show == "All": - for item in buyitems: - print(item) - elif show == "Owned": - for item in buyitems: - if database[item][3] == True: - print(item) - elif show == "Unowned": - for item in buyitems: - if database[item][3] == False: - print(item) - print() - input("To go back to menu press Enter...") - softcls() - - elif doing == menulist["output"][2]: - print("Types to search in database: ") - for item in typesofitems: - print(item) - print() - if show == "All": - for item in getkeys(input("For which type I should check: "), bytype): - print(item) - elif show == "Owned": - for item in getkeys(input("For which type I should check: "), bytype): - if database[item][3] == True: - print(item) - elif show == "Unowned": - for item in getkeys(input("For which type I should check: "), bytype): - if database[item][3] == False: - print(item) - - print() - input("To go back to menu press Enter...") - softcls() - - elif doing == menulist["output"][3]: - print("Types to search in database: ") - for item in shops: - print(item) - print() - if show == "All": - for item in getkeys(input("For which type I should check: "), byshop): - print(item) - elif show == "Owned": - for item in getkeys(input("For which type I should check: "), byshop): - if database[item][3] == True: - print(item) - elif show == "Unowned": - for item in getkeys(input("For which type I should check: "), byshop): - if database[item][3] == False: - print(item) - print() - input("To go back to menu press Enter...") - softcls() - - elif doing == menulist["output"][4]: - belowthisprice = checkbelow(input("I will check for items below this price: "), byprice) - if show == "All": - for item in list(belowthisprice): - print(item + ": " + "{:,}".format(belowthisprice[item])) - elif show == "Owned": - for item in list(belowthisprice): - if database[item][3] == True: - print(item + ": " + "{:,}".format(belowthisprice[item])) - elif show == "Unowned": - for item in list(belowthisprice): - if database[item][3] == False: - print(item + ": " + "{:,}".format(belowthisprice[item])) - print() - input("To go back to menu press Enter...") - softcls() - - elif doing == "Add new item": - 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): "))) - isowneditem = bool(input("Do you own this item? (1 - Yes, 0 - No): ") == "1") - specif.append(isowneditem) - database[nameofnewitem] = specif - basewrite = open(basename, 'w+') - json.dump(database, basewrite, indent=3, ensure_ascii=False) - basewrite.close() - softcls() - - elif doing == menulist["baseoptions"][0]: - print() - shutil.copy(basename, backname) - if os.path.isfile(backname): - print("Backup successful") - print() - input("To go back to menu press Enter...") - softcls() - - elif doing == menulist["baseoptions"][1]: - alldatabases = [] - for file in os.listdir(os.getcwd()): - if '.database' in file: - alldatabases.append(os.path.splitext(file)[0]) - print("Which database would you like to open?") - for base in alldatabases: - print(base) - basename = input("Type here: ") + ".database" - openbase() - print("Other DB opened") - input("To go back to menu press Enter...") - softcls() - - elif doing == menulist["baseoptions"][2]: - print("Creating new DB. Choose name for it") - basename = input("Type here: ") + ".database" - openbase() - print("New DB created") - input("To go back to menu press Enter...") - softcls() - - elif doing == menulist["baseoptions"][3]: - print("Checking file valid") - try: - openbase() - print("File is valid") - except: - print("File is !INvalid!") - print("Try to check file by yourself or create new DB") - - print() - print("Checking if all owning options are valid") - - for item in buyitems: - try: - if database[item][3] == True: - pass - elif database[item][3] == False: - pass - else: - database[item][3] = False - except: - databasethisitem = database[item] - databasethisitem.append(False) - database[item] = databasethisitem - - basewrite = open(basename, 'w+') - json.dump(database, basewrite, indent=3, ensure_ascii=False) - basewrite.close() - - print("Owning options were checked and validated if needed") - - input("To go back to menu press Enter...") - softcls() - - elif doing == menulist["ownoptions"][0]: - print("Select type of editor") - typeofedit = input("1 - Edit all items\n2 - Edit one at a time\nType here: ") - if typeofedit == "2": - print() - print("Which item you would like to change?") - whattodonow = input("1 - Print all items\n2 - Search item\nType here: ") - if whattodonow == "1": - for item in buyitems: - print(item) - print() - elif whattodonow == "2": - whichtocontain = input("Start typing name here: ") - containthis = [] - for item in buyitems: - if whichtocontain.lower() in item.lower(): - containthis.append(item) - for item in containthis: - print(item) - itemtoedit = input("Type here name of item: ") - print(itemtoedit + " is now " + str(database[itemtoedit][3])) - isowneditem = bool(input("Do you own this item? (1 - Yes, 0 - No): ") == "1") - database[itemtoedit][3] = isowneditem - - basewrite = open(basename, 'w+') - json.dump(database, basewrite, indent=3, ensure_ascii=False) - basewrite.close() - - elif typeofedit == "1": - ownbasename = str(os.path.splitext(basename)[0]) + ".ownbase" - print("Will be created file named " + ownbasename) - owningtempbase = {} - for item in buyitems: - owningtempbase[item] = database[item][3] - - with open(ownbasename, 'w+') as ownwrite: - json.dump(owningtempbase, ownwrite, indent=3, ensure_ascii=False) - - print() - print("File is created. Open it with any text editor (notepad will be opened automatically on Windows)") - print("If you own item, type true near its name. If not - false") - print("It shold be like this: ") - print('"Avenger": true,') - print("After each line shold be a ','") - print() - if sys.platform == "win32": - input("After you press Enter, notepad app will be opened") - command = 'cmd /c "notepad.exe {}"'.format(ownbasename) - os.system(command) - - print() - - input("When you are ready, press Enter") - input("Press Enter to load data from ownbase file") - - with open(ownbasename) as ownread: - owningtempbase = json.load(ownread) - - for item in buyitems: - database[item][3] = owningtempbase[item] - - basewrite = open(basename, 'w+') - json.dump(database, basewrite, indent=3, ensure_ascii=False) - basewrite.close() - - os.remove(ownbasename) - - print("All data from ownbase file moved to database file") - print("Ownbase file deleted") - print() - input("To go back to menu press Enter...") - softcls() - - elif doing == menulist["ownoptions"][1]: - show = "Owned" - elif doing == menulist["ownoptions"][2]: - show = "Unowned" - elif doing == menulist["ownoptions"][3]: - show = "All"