diff --git a/Python_Scripts/DownloadSorter/DownloadSorter.py b/Python_Scripts/DownloadSorter/DownloadSorter.py new file mode 100644 index 0000000..f6fa51a --- /dev/null +++ b/Python_Scripts/DownloadSorter/DownloadSorter.py @@ -0,0 +1,16 @@ +import os +import shutil + +target_path = './TestFiles' +extensions = {item.split('.')[-1] for item in os.listdir(target_path) if os.path.isfile(os.path.join(target_path, item))} +# print(extensions) + +for ext in extensions: # Create a folder for extension types + if not os.path.exists(os.path.join(target_path, ext)): + os.mkdir(os.path.join(target_path, ext)) + +# Move the files into the folder +for item in os.listdir(target_path): + if os.path.isfile(os.path.join(target_path, item)): + file_extension = item.split('.')[-1] + shutil.move(os.path.join(target_path, item), os.path.join(target_path, file_extension, item)) \ No newline at end of file diff --git a/Python_Scripts/DownloadSorter/TestFiles/pdf/hphpe250f_specs.pdf b/Python_Scripts/DownloadSorter/TestFiles/pdf/hphpe250f_specs.pdf new file mode 100644 index 0000000..8bda672 Binary files /dev/null and b/Python_Scripts/DownloadSorter/TestFiles/pdf/hphpe250f_specs.pdf differ diff --git a/Python_Scripts/DownloadSorter/TestFiles/png/2023_07_28_batman-21837780.png b/Python_Scripts/DownloadSorter/TestFiles/png/2023_07_28_batman-21837780.png new file mode 100644 index 0000000..4d2102d Binary files /dev/null and b/Python_Scripts/DownloadSorter/TestFiles/png/2023_07_28_batman-21837780.png differ diff --git a/Python_Scripts/GameSorter/GameSorter.py b/Python_Scripts/GameSorter/GameSorter.py new file mode 100644 index 0000000..ebfa150 --- /dev/null +++ b/Python_Scripts/GameSorter/GameSorter.py @@ -0,0 +1,125 @@ +import os +import json +import shutil +from subprocess import PIPE, run +import sys + +GAME_DIR_PATTERN = "game" +GAME_CODE_EXTENSION = ".go" +GAME_COMPILE_COMMAND = ["go", "build"] + +def find_all_game_paths(source): + game_paths = [] + + for root, dirs, files in os.walk(source): + for directory in dirs: + if GAME_DIR_PATTERN in directory.lower(): + path = os.path.join(source, directory) + game_paths.append(path) + break + return game_paths + + +def get_name_from_paths(paths, to_strip): + new_names = [] + for path in paths: + _, dir_name = os.path.split(path) + new_dir_name = dir_name.replace(to_strip, "") + new_names.append(new_dir_name) + return new_names + + +def create_dir(path): + if not os.path.exists(path): + os.mkdir(path) + + +def copy_and_overwrite(source, dest): + if os.path.exists(dest): + shutil.rmtree(dest) # remove tree (recursive delete) + shutil.copytree(source, dest) # copy source to destination + pass + + +def make_json_metadata_file(path, game_dirs): + data = { + "gameName": game_dirs, + "numberOfGames": len(game_dirs) + } + with open(path, "w") as f: + json.dump(data, f) + + +def compile_game_code(path): + code_file_name = None + for root, dirs, files in os.walk(path): + for file in files: + if file.endswith(GAME_CODE_EXTENSION): # Avoids possible issues of .go.txt etc. + code_file_name = file + break + break + + if code_file_name is None: + return + + command = GAME_COMPILE_COMMAND + [code_file_name] # Run the go command + run_command(command, path) + +def run_command(command, path): + cwd = os.getcwd() + os.chdir(path) + + result = run(command, stdout=PIPE, stdin=PIPE, universal_newlines=True) + # print("compile result", result) + ''' + PIPE creates a bridge for the python code to be interpreted when + running a custom command. Essentially creates a .exe(.sh for linux/mac) + to be able to run the game. + If an errors occurs when compiling, the stdout will print it. + ''' + + os.chdir(cwd) + + + +def main(source, target): + # Get full folder path to avoid bugs in differing OS + cwd = os.getcwd() + source_path = os.path.join(cwd, source) + target_path = os.path.join(cwd, target) + + game_paths = find_all_game_paths(source_path) + # print(game_paths) + new_game_dirs = get_name_from_paths(game_paths, "_game") + # print(new_game_dirs) + + create_dir(target_path) + + # Loop through all game paths and copy them over to the destination + for src, dest in zip(game_paths, new_game,dirs): + dest_path = os.path.join(target_path, dest) + copy_and_overwrite(src, dest_path) + compile_game_code(dest_path) + ''' + How zip works + Takes matching elements from two arrays and turns it into a tuple + [1,2,3] + ["a", "b", "c"] + (1,"a"), (2,"b"), (3,"c") + ''' + + json_path = os.path.join(target_path, "metadata.json") + make_json_metadata_file(json_path, new_game_dirs) + + +# Makes sure the file is run directly +# Also stops the entire file from being loaded +if __name__ == "__main__": + args = sys.argv + # print(args) + if len(args) != 3: # Confirm 3 arguments are input + raise Exception("You must pass a source and target directory - only.") + + # Takes the two other arguments and assigns them + source, target = args[1:] + main(source, target) \ No newline at end of file diff --git a/Python_Scripts/PDFMerger/GetStared.md b/Python_Scripts/PDFMerger/GetStared.md new file mode 100644 index 0000000..3ebeaff --- /dev/null +++ b/Python_Scripts/PDFMerger/GetStared.md @@ -0,0 +1,4 @@ +# Getting Started +## Dependencies +- Requires python3 and PyPDF2 library. + -Use pip to install. diff --git a/Python_Scripts/PDFMerger/PDFMerger.py b/Python_Scripts/PDFMerger/PDFMerger.py new file mode 100644 index 0000000..45c787d --- /dev/null +++ b/Python_Scripts/PDFMerger/PDFMerger.py @@ -0,0 +1,10 @@ +import sys +import PyPDF2 +import os + +merger = PyPDF2.PdfFileMerger() +for file in os.listdir(os.curdir): + if file.endswith(".pdf"): + print(file) + merger.append(file) + merger.write('CombinedFile.pdf') \ No newline at end of file diff --git a/Websites/JandF/index.ts b/Websites/JandF/index.ts index 49c2b83..d5dc013 100644 --- a/Websites/JandF/index.ts +++ b/Websites/JandF/index.ts @@ -6,5 +6,15 @@ var number = 5; console.log(number); var a,b = 3; -var c = 5; -console.log(a); +var c = "I am a "; +c = c + "string" +console.log(c); + +var x = 1.5; +var y = 2.5; + +console.log(Math.ceil(x*y)) + +var myStr = "FirstLine\n\t\\SecondLine\nThirdLine\ftesting"; + console.log(myStr); +