Compare commits

...

1 Commits

Author SHA1 Message Date
jordan martin-hall
b7590e30db move to pc 2023-07-15 18:35:27 +10:00
2 changed files with 650 additions and 0 deletions

View File

@ -0,0 +1,103 @@
import os
import json
def generate_root_json(directory):
data = {
"metadata": {
"page": "main",
"author": "Benjamyn Love + JMH"
},
"roms": {},
"utilities": []
}
excluded_dirs = ["emulation", "@recycle", "poobs"] # Add your excluded directory names here
for dir_name in os.listdir(directory):
dir_path = os.path.join(directory, dir_name)
uri = "/" + dir_name.lower().replace(" ", "-")
if os.path.isdir(dir_path):
if dir_name in excluded_dirs:
utilities_entry = {
"name": dir_name,
"uri": uri
}
data["utilities"].append(utilities_entry)
else:
console_name = dir_name
subdirectories = 0
files = 0
for entry in os.scandir(dir_path):
if entry.is_dir():
subdirectories += 1
elif entry.is_file():
files += 1
uri = "/" + console_name.lower().replace(" ", "-")
console = {
"name": console_name,
"uri": uri,
"subdirectories": subdirectories,
"files": files
}
data["roms"][console_name.lower()] = console
# Save the JSON data to a file
with open('game_consoles2.json', 'w') as json_file:
json.dump(data, json_file, indent=4)
directory = '/Users/jordanmartin/stuff/rm_site_dir_test/10.6.9.5/'
json_data = generate_root_json(directory)
def generate_roms_json(directories):
'''NEEDS WORK!'''
data = {
"roms": []
}
for directory in directories:
dir_name = directory["name"]
dir_path = directory["path"]
console_entry = {
"name": dir_name,
"uri": "/" + dir_name.lower().replace(" ", "-"),
"contents": {
"base": {},
"updates": [],
"dlc": []
}
}
base_rom = None
updates = []
dlc = []
for entry in os.scandir(dir_path):
if entry.is_file():
file_name = entry.name
file_path = entry.path
file_size = os.path.getsize(file_path)
if file_name.lower().endswith(".nsp"):
if "[v0]" in file_name:
base_rom = {
"name": file_name,
"size": file_size
}
elif "[v" in file_name:
updates.append({
"name": file_name,
"size": file_size
})
else:
dlc.append({
"name": file_name,
"size": file_size
})
console_entry["contents"]["base"] = base_rom
console_entry["contents"]["updates"] = updates
console_entry["contents"]["dlc"] = dlc
data["roms"].append(console_entry)
return data

547
json_creator/testing.ipynb Normal file
View File

@ -0,0 +1,547 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"ename": "TypeError",
"evalue": "'module' object is not callable",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn [2], line 27\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[39mreturn\u001b[39;00m data\n\u001b[1;32m 26\u001b[0m directory \u001b[39m=\u001b[39m \u001b[39m'\u001b[39m\u001b[39m/Users/jordanmartin/stuff/rm_site_dir_test/10.6.9.5/\u001b[39m\u001b[39m'\u001b[39m\n\u001b[0;32m---> 27\u001b[0m json_data \u001b[39m=\u001b[39m generate_json(directory)\n\u001b[1;32m 29\u001b[0m \u001b[39m# Save the JSON data to a file\u001b[39;00m\n\u001b[1;32m 30\u001b[0m \u001b[39mwith\u001b[39;00m \u001b[39mopen\u001b[39m(\u001b[39m'\u001b[39m\u001b[39mgame_consoles.json\u001b[39m\u001b[39m'\u001b[39m, \u001b[39m'\u001b[39m\u001b[39mw\u001b[39m\u001b[39m'\u001b[39m) \u001b[39mas\u001b[39;00m json_file:\n",
"Cell \u001b[0;32mIn [2], line 12\u001b[0m, in \u001b[0;36mgenerate_json\u001b[0;34m(directory)\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mgenerate_json\u001b[39m(directory):\n\u001b[1;32m 5\u001b[0m data \u001b[39m=\u001b[39m {\n\u001b[1;32m 6\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mmetadata\u001b[39m\u001b[39m\"\u001b[39m: {\n\u001b[1;32m 7\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mpage\u001b[39m\u001b[39m\"\u001b[39m: \u001b[39m\"\u001b[39m\u001b[39mmain\u001b[39m\u001b[39m\"\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mroms\u001b[39m\u001b[39m\"\u001b[39m: {}\n\u001b[1;32m 11\u001b[0m }\n\u001b[0;32m---> 12\u001b[0m \u001b[39mfor\u001b[39;00m root, dirs, files \u001b[39min\u001b[39;00m os\u001b[39m.\u001b[39;49mpath(directory):\n\u001b[1;32m 13\u001b[0m console_name \u001b[39m=\u001b[39m os\u001b[39m.\u001b[39mpath\u001b[39m.\u001b[39mbasename(root)\n\u001b[1;32m 14\u001b[0m rom_count \u001b[39m=\u001b[39m \u001b[39mlen\u001b[39m(files)\n",
"\u001b[0;31mTypeError\u001b[0m: 'module' object is not callable"
]
}
],
"source": [
"import os\n",
"import json\n",
"\n",
"def generate_json(directory):\n",
" data = {\n",
" \"metadata\": {\n",
" \"page\": \"main\",\n",
" \"author\": \"Benjamyn Love\"\n",
" },\n",
" \"roms\": {}\n",
" }\n",
" for root, dirs, files in os.walk(directory):\n",
" console_name = os.path.basename(root)\n",
" rom_count = len(files)\n",
" uri = \"/\" + console_name.lower().replace(\" \", \"-\")\n",
" \n",
" console = {\n",
" \"name\": console_name,\n",
" \"uri\": uri,\n",
" \"count\": rom_count\n",
" }\n",
" data[\"roms\"][console_name.lower()] = console\n",
" \n",
" return data\n",
"\n",
"directory = '/Users/jordanmartin/stuff/rm_site_dir_test/10.6.9.5/'\n",
"json_data = generate_json(directory)\n",
"\n",
"# Save the JSON data to a file\n",
"with open('game_consoles.json', 'w') as json_file:\n",
" json.dump(json_data, json_file, indent=4)\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import json\n",
"\n",
"def generate_json(directory):\n",
" data = {\n",
" \"metadata\": {\n",
" \"page\": \"main\",\n",
" \"author\": \"Benjamyn Love\"\n",
" },\n",
" \"roms\": {}\n",
" }\n",
" for root, dirs, files in os.walk(directory):\n",
" for dir_name in dirs:\n",
" console_name = dir_name\n",
" dir_path = os.path.join(root, dir_name)\n",
" rom_count = len(os.listdir(dir_path))\n",
" uri = \"/\" + console_name.lower().replace(\" \", \"-\")\n",
" \n",
" console = {\n",
" \"name\": console_name,\n",
" \"uri\": uri,\n",
" \"count\": rom_count\n",
" }\n",
" data[\"roms\"][console_name.lower()] = console\n",
" \n",
" return data\n",
"\n",
"directory = '/Users/jordanmartin/stuff/rm_site_dir_test/10.6.9.5/'\n",
"json_data = generate_json(directory)\n",
"\n",
"# Save the JSON data to a file\n",
"with open('game_consoles.json', 'w') as json_file:\n",
" json.dump(json_data, json_file, indent=4)\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import json\n",
"\n",
"def generate_json(directory):\n",
" data = {\n",
" \"metadata\": {\n",
" \"page\": \"main\",\n",
" \"author\": \"Benjamyn Love\"\n",
" },\n",
" \"roms\": {}\n",
" }\n",
" for dir_name in os.listdir(directory):\n",
" dir_path = os.path.join(directory, dir_name)\n",
" if os.path.isdir(dir_path):\n",
" console_name = dir_name\n",
" subdirectories = 0\n",
" files = 0\n",
" for entry in os.scandir(dir_path):\n",
" if entry.is_dir():\n",
" subdirectories += 1\n",
" elif entry.is_file():\n",
" files += 1\n",
"\n",
" uri = \"/\" + console_name.lower().replace(\" \", \"-\")\n",
" \n",
" console = {\n",
" \"name\": console_name,\n",
" \"uri\": uri,\n",
" \"subdirectories\": subdirectories,\n",
" \"files\": files\n",
" }\n",
" data[\"roms\"][console_name.lower()] = console\n",
" \n",
" return data\n",
"\n",
"directory = '/Users/jordanmartin/stuff/rm_site_dir_test/10.6.9.5/'\n",
"json_data = generate_json(directory)\n",
"\n",
"# Save the JSON data to a file\n",
"with open('game_consoles.json', 'w') as json_file:\n",
" json.dump(json_data, json_file, indent=4)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import json\n",
"\n",
"def generate_json(directory):\n",
" data = {\n",
" \"metadata\": {\n",
" \"page\": \"main\",\n",
" \"author\": \"Benjamyn Love\"\n",
" },\n",
" \"roms\": {}\n",
" }\n",
" excluded_dirs = [\"excluded_dir1\", \"excluded_dir2\"] # Add your excluded directory names here\n",
" for dir_name in os.listdir(directory):\n",
" if dir_name in excluded_dirs:\n",
" continue\n",
"\n",
" dir_path = os.path.join(directory, dir_name)\n",
" if os.path.isdir(dir_path):\n",
" console_name = dir_name\n",
" subdirectories = 0\n",
" files = 0\n",
" for entry in os.scandir(dir_path):\n",
" if entry.is_dir():\n",
" subdirectories += 1\n",
" elif entry.is_file():\n",
" files += 1\n",
"\n",
" uri = \"/\" + console_name.lower().replace(\" \", \"-\")\n",
"\n",
" console = {\n",
" \"name\": console_name,\n",
" \"uri\": uri,\n",
" \"subdirectories\": subdirectories,\n",
" \"files\": files\n",
" }\n",
" data[\"roms\"][console_name.lower()] = console\n",
"\n",
" return data\n",
"\n",
"directory = '/path/to/your/directory'\n",
"json_data = generate_json(directory)\n",
"\n",
"# Save the JSON data to a file\n",
"with open('game_consoles.json', 'w') as json_file:\n",
" json.dump(json_data, json_file, indent=4)\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import json\n",
"\n",
"def generate_json(directory):\n",
" data = {\n",
" \"metadata\": {\n",
" \"page\": \"main\",\n",
" \"author\": \"Benjamyn Love + JMH\"\n",
" },\n",
" \"roms\": {},\n",
" \"utilities\": []\n",
" }\n",
" excluded_dirs = [\"emulation\", \"@recycle\", \"poobs\"] # Add your excluded directory names here\n",
" for dir_name in os.listdir(directory):\n",
" dir_path = os.path.join(directory, dir_name)\n",
" uri = \"/\" + dir_name.lower().replace(\" \", \"-\")\n",
" if os.path.isdir(dir_path):\n",
" if dir_name in excluded_dirs:\n",
" utilities_entry = {\n",
" \"name\": dir_name,\n",
" \"uri\": uri\n",
" }\n",
" data[\"utilities\"].append(utilities_entry)\n",
" else:\n",
" console_name = dir_name\n",
" subdirectories = 0\n",
" files = 0\n",
" for entry in os.scandir(dir_path):\n",
" if entry.is_dir():\n",
" subdirectories += 1\n",
" elif entry.is_file():\n",
" files += 1\n",
"\n",
" uri = \"/\" + console_name.lower().replace(\" \", \"-\")\n",
"\n",
" console = {\n",
" \"name\": console_name,\n",
" \"uri\": uri,\n",
" \"subdirectories\": subdirectories,\n",
" \"files\": files\n",
" }\n",
" data[\"roms\"][console_name.lower()] = console\n",
"\n",
" return data\n",
"\n",
"directory = '/Users/jordanmartin/stuff/rm_site_dir_test/10.6.9.5/'\n",
"json_data = generate_json(directory)\n",
"\n",
"# Save the JSON data to a file\n",
"with open('game_consoles2.json', 'w') as json_file:\n",
" json.dump(json_data, json_file, indent=4)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import json\n",
"\n",
"def generate_json(directory):\n",
" data = {\n",
" \"roms\": []\n",
" }\n",
"\n",
" for dir_name in os.listdir(directory):\n",
" dir_path = os.path.join(directory, dir_name)\n",
" if os.path.isdir(dir_path):\n",
" console_entry = {\n",
" \"name\": dir_name,\n",
" \"uri\": \"/\" + dir_name.lower().replace(\" \", \"-\"),\n",
" \"contents\": {\n",
" \"base\": {},\n",
" \"updates\": [],\n",
" \"dlc\": []\n",
" }\n",
" }\n",
" base_rom = None\n",
" updates = []\n",
" dlc = []\n",
" \n",
" for entry in os.scandir(dir_path):\n",
" if entry.is_file():\n",
" file_name = entry.name\n",
" file_path = entry.path\n",
" file_size = os.path.getsize(file_path)\n",
"\n",
" if file_name.lower().endswith(\".nsp\"):\n",
" if \"[v0]\" in file_name:\n",
" base_rom = {\n",
" \"name\": file_name,\n",
" \"size\": file_size\n",
" }\n",
" elif \"[v\" in file_name:\n",
" updates.append({\n",
" \"name\": file_name,\n",
" \"size\": file_size\n",
" })\n",
" else:\n",
" dlc.append({\n",
" \"name\": file_name,\n",
" \"size\": file_size\n",
" })\n",
"\n",
" console_entry[\"contents\"][\"base\"] = base_rom\n",
" console_entry[\"contents\"][\"updates\"] = updates\n",
" console_entry[\"contents\"][\"dlc\"] = dlc\n",
"\n",
" data[\"roms\"].append(console_entry)\n",
"\n",
" return data\n",
"\n",
"directory = '/path/to/your/directory'\n",
"json_data = generate_json(directory)\n",
"\n",
"# Save the JSON data to a file\n",
"with open('roms.json', 'w') as json_file:\n",
" json.dump(json_data, json_file, indent=4)\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[{'name': 'ps4', 'path': '/ps4'}, {'name': '@recycle', 'path': '/@recycle'}, {'name': 'switch', 'path': '/switch'}]\n"
]
}
],
"source": [
"import json\n",
"\n",
"def generate_directory_list(json_file):\n",
" directories = []\n",
"\n",
" with open(json_file, 'r') as file:\n",
" data = json.load(file)\n",
"\n",
" roms_data = data.get('roms', {})\n",
" for console_name, console_entry in roms_data.items():\n",
" console_path = console_entry.get('uri', '')\n",
"\n",
" directory = {\n",
" 'name': console_name,\n",
" 'path': console_path\n",
" }\n",
" directories.append(directory)\n",
"\n",
" return directories\n",
"\n",
"json_file = 'game_consoles2.json' # Replace with the path to your JSON file\n",
"directory_list = generate_directory_list(json_file)\n",
"\n",
"print(directory_list)\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import json\n",
"\n",
"def generate_json(directories):\n",
" data = {\n",
" \"roms\": []\n",
" }\n",
"\n",
" for directory in directories:\n",
" dir_name = directory[\"name\"]\n",
" dir_path = directory[\"path\"]\n",
" console_entry = {\n",
" \"name\": dir_name,\n",
" \"uri\": \"/\" + dir_name.lower().replace(\" \", \"-\"),\n",
" \"contents\": {\n",
" \"base\": {},\n",
" \"updates\": [],\n",
" \"dlc\": []\n",
" }\n",
" }\n",
" base_rom = None\n",
" updates = []\n",
" dlc = []\n",
"\n",
" for entry in os.scandir(dir_path):\n",
" if entry.is_file():\n",
" file_name = entry.name\n",
" file_path = entry.path\n",
" file_size = os.path.getsize(file_path)\n",
"\n",
" if file_name.lower().endswith(\".nsp\"):\n",
" if \"[v0]\" in file_name:\n",
" base_rom = {\n",
" \"name\": file_name,\n",
" \"size\": file_size\n",
" }\n",
" elif \"[v\" in file_name:\n",
" updates.append({\n",
" \"name\": file_name,\n",
" \"size\": file_size\n",
" })\n",
" else:\n",
" dlc.append({\n",
" \"name\": file_name,\n",
" \"size\": file_size\n",
" })\n",
"\n",
" console_entry[\"contents\"][\"base\"] = base_rom\n",
" console_entry[\"contents\"][\"updates\"] = updates\n",
" console_entry[\"contents\"][\"dlc\"] = dlc\n",
"\n",
" data[\"roms\"].append(console_entry)\n",
"\n",
" return data\n",
"\n",
"# List of directories obtained from previous JSON file\n",
"directories = [\n",
" {\n",
" \"name\": \"Shin Megami Tensai V\",\n",
" \"path\": \"/path/to/Shin Megami Tensai V\"\n",
" },\n",
" {\n",
" \"name\": \"Astral Chain\",\n",
" \"path\": \"/path/to/Astral Chain\"\n",
" },\n",
" {\n",
" \"name\": \"Dead Cells\",\n",
" \"path\": \"/path/to/Dead Cells\"\n",
" }\n",
"]\n",
"\n",
"json_data = directory_list\n",
"\n",
"# Save the JSON data to a file\n",
"with open('roms.json', 'w') as json_file:\n",
" json.dump(json_data, json_file, indent=4)\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import json\n",
"\n",
"def generate_json(directory):\n",
" data = {\n",
" \"roms\": []\n",
" }\n",
"\n",
" for dir_name in os.listdir(directory):\n",
" dir_path = os.path.join(directory, dir_name)\n",
" if os.path.isdir(dir_path):\n",
" console_entry = {\n",
" \"name\": dir_name,\n",
" \"uri\": \"/\" + dir_name.lower().replace(\" \", \"-\"),\n",
" \"contents\": {\n",
" \"base\": {},\n",
" \"updates\": [],\n",
" \"dlc\": []\n",
" }\n",
" }\n",
" base_rom = None\n",
" updates = []\n",
" dlc = []\n",
" \n",
" for entry in os.scandir(dir_path):\n",
" if entry.is_file():\n",
" file_name = entry.name\n",
" file_path = entry.path\n",
" file_size = os.path.getsize(file_path)\n",
"\n",
" if file_name.lower().endswith(\".nsp\"):\n",
" if \"[v0]\" in file_name:\n",
" base_rom = {\n",
" \"name\": file_name,\n",
" \"size\": file_size\n",
" }\n",
" elif \"[v\" in file_name:\n",
" updates.append({\n",
" \"name\": file_name,\n",
" \"size\": file_size\n",
" })\n",
" else:\n",
" dlc.append({\n",
" \"name\": file_name,\n",
" \"size\": file_size\n",
" })\n",
"\n",
" console_entry[\"contents\"][\"base\"] = base_rom\n",
" console_entry[\"contents\"][\"updates\"] = updates\n",
" console_entry[\"contents\"][\"dlc\"] = dlc\n",
"\n",
" data[\"roms\"].append(console_entry)\n",
"\n",
" return data\n",
"\n",
"directory = '/Users/jordanmartin/stuff/rm_site_dir_test/10.6.9.5/'\n",
"json_data = generate_json(directory)\n",
"\n",
"# Save the JSON data to a file\n",
"with open('roms.json', 'w') as json_file:\n",
" json.dump(json_data, json_file, indent=4)\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.0"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}