Improved messaging and error handling when creating the games list

This commit is contained in:
CosmicScale 2025-02-23 15:32:54 +00:00
parent a2c94a1f75
commit 1c97a7835a
3 changed files with 34 additions and 17 deletions

View File

@ -440,10 +440,23 @@ fi
echo | tee -a "${LOG_FILE}" echo | tee -a "${LOG_FILE}"
echo "Creating PS1 games list..." | tee -a "${LOG_FILE}" echo "Creating PS1 games list..." | tee -a "${LOG_FILE}"
python3 "${HELPER_DIR}/list-builder-ps1.py" "${GAMES_PATH}" "${PS1_LIST}" | tee -a "${LOG_FILE}" python3 -u "${HELPER_DIR}/list-builder-ps1.py" "${GAMES_PATH}" "${PS1_LIST}" | tee -a "${LOG_FILE}"
if [ "${PIPESTATUS[0]}" -ne 0 ]; then
echo "Error: Failed to create PS1 games list." | tee -a "${LOG_FILE}"
read -n 1 -s -r -p "Press any key to exit..."
echo
exit 1
fi
echo | tee -a "${LOG_FILE}"
echo "Creating PS2 games list..." | tee -a "${LOG_FILE}" echo "Creating PS2 games list..." | tee -a "${LOG_FILE}"
python3 "${HELPER_DIR}/list-builder-ps2.py" "${GAMES_PATH}" "${PS2_LIST}" | tee -a "${LOG_FILE}" python3 -u "${HELPER_DIR}/list-builder-ps2.py" "${GAMES_PATH}" "${PS2_LIST}" | tee -a "${LOG_FILE}"
if [ "${PIPESTATUS[0]}" -ne 0 ]; then
echo "Error: Failed to create PS2 games list." | tee -a "${LOG_FILE}"
read -n 1 -s -r -p "Press any key to exit..."
echo
exit 1
fi
# Deactivate the virtual environment # Deactivate the virtual environment
deactivate deactivate

View File

@ -1,8 +1,8 @@
import os import os
import sys import sys
import subprocess
import math import math
import unicodedata import unicodedata
import re
from natsort import natsorted from natsort import natsorted
done = "Error: No games found." done = "Error: No games found."
@ -96,7 +96,7 @@ def process_vcd(folder):
if len(string) != 11: if len(string) != 11:
# Remove spaces from filename and convert to uppercase # Remove spaces from filename and convert to uppercase
base_name = os.path.splitext(image)[0] # Strip the file extension base_name = os.path.splitext(image)[0] # Strip the file extension
string = base_name.replace(' ', '').upper() string = re.sub(r'[^A-Z0-9]', '', base_name.upper()) # Keep only A-Z and 0-9
# Trim the string to 9 characters or pad with zeros # Trim the string to 9 characters or pad with zeros
string = string[:9].ljust(9, '0') string = string[:9].ljust(9, '0')
@ -241,7 +241,7 @@ def main(arg1, arg2):
count_vcd('/POPS') count_vcd('/POPS')
if total == 0: # No VCD files found if total == 0: # No VCD files found
print("No PS1 games found in the POPS folder.") print("No PS1 games found in the POPS folder.")
sys.exit(1) sys.exit(0)
process_vcd('/POPS') process_vcd('/POPS')
else: else:
print('POPS folder not found at ' + game_path) print('POPS folder not found at ' + game_path)

View File

@ -3,6 +3,7 @@ import math
import os.path import os.path
import subprocess import subprocess
import unicodedata import unicodedata
import re
from natsort import natsorted from natsort import natsorted
import shlex import shlex
@ -66,18 +67,21 @@ def process_files(folder, extensions):
zso_path = os.path.join(game_path + folder, image) zso_path = os.path.join(game_path + folder, image)
iso_path = os.path.join(game_path + folder, os.path.splitext(image)[0] + '.iso') iso_path = os.path.join(game_path + folder, os.path.splitext(image)[0] + '.iso')
print(f"Converting {image} from .zso to .iso...")
venv_activate = os.path.join('venv', 'bin', 'activate')
command = ( command = (
f"source {shlex.quote(venv_activate)} && " f'echo "Converting {image} from .zso to .iso..." && '
f"python3 ./helper/ziso.py -c 0 {shlex.quote(zso_path)} {shlex.quote(iso_path)}" f"python3 ./helper/ziso.py -c 0 {shlex.quote(zso_path)} {shlex.quote(iso_path)}"
) )
try:
subprocess.run(command, shell=True, check=True, executable='/bin/bash') subprocess.run(command, shell=True, check=True, executable='/bin/bash')
# Update image to the new .iso path for processing # Update image to the new .iso path for processing
image = os.path.basename(iso_path) image = os.path.basename(iso_path)
converted_iso = True # Mark the .iso file as being converted from .zso converted_iso = True # Mark the .iso file as being converted from .zso
except subprocess.CalledProcessError:
print(f"Error: Conversion of {image} failed. Deleting {iso_path}.")
if os.path.exists(iso_path):
os.remove(iso_path)
sys.exit(1) # Exit script on failure
# Extract the game ID from the file content if not set by the filename # Extract the game ID from the file content if not set by the filename
if not string: # Only process if the game ID is not set from the filename if not string: # Only process if the game ID is not set from the filename
@ -121,7 +125,7 @@ def process_files(folder, extensions):
if len(string) != 11: if len(string) != 11:
# Remove spaces from filename and convert to uppercase # Remove spaces from filename and convert to uppercase
base_name = os.path.splitext(image)[0] # Strip the file extension base_name = os.path.splitext(image)[0] # Strip the file extension
string = base_name.replace(' ', '').upper() string = re.sub(r'[^A-Z0-9]', '', base_name.upper()) # Keep only A-Z and 0-9
# Trim the string to 9 characters or pad with zeros # Trim the string to 9 characters or pad with zeros
string = string[:9].ljust(9, '0') string = string[:9].ljust(9, '0')
@ -323,7 +327,7 @@ def main(arg1, arg2):
# Check if no games were found # Check if no games were found
if total == 0: if total == 0:
print("No PS2 games found in the CD or DVD folder.") print("No PS2 games found in the CD or DVD folder.")
sys.exit(1) sys.exit(0)
# Process the files now that we know there are games # Process the files now that we know there are games
for folder, extensions in [('/DVD', ['.iso', '.zso']), ('/CD', ['.iso', '.zso'])]: for folder, extensions in [('/DVD', ['.iso', '.zso']), ('/CD', ['.iso', '.zso'])]:
@ -338,6 +342,6 @@ def main(arg1, arg2):
if __name__ == '__main__': if __name__ == '__main__':
if len(sys.argv) != 3: if len(sys.argv) != 3:
print('Usage: python3 list_builder-ps1.py <path/to/games> <path/to/ps2.list>') print('Usage: python3 list_builder-ps2.py <path/to/games> <path/to/ps2.list>')
sys.exit(1) sys.exit(1)
main(sys.argv[1], sys.argv[2]) main(sys.argv[1], sys.argv[2])