From f239dfa98205b28ce3a8d87057609a8f650b2f3a Mon Sep 17 00:00:00 2001 From: David Shadoff <46657586+dshadoff@users.noreply.github.com> Date: Mon, 25 Jan 2021 05:43:49 -0500 Subject: [PATCH] Fixes for mra_rom_check * Log mra_rom_check output to logfile Since mra_rom_check can create a lot of output, and that output needs to be reviewed carefully, this fix causes to output to simultaneously be directed to a logfile. - 'Scripts/Logs' subdirectory will be created if it does not already exist - log output goes to Logs/mra_rom_check.log, which will be deleted and recreated each time it is run * fixed error reporting with a mismatched rom * Separate messages for missing MAME version Too many MRA files are missing MAME version - these drown out the real issues on the screen and in the logfile - these don't appear to cause issues with the MRAs - It is difficult to actually acquire "correct" data for these -> This update outputs them to a separate logfile and suppresses them from the screen output (can easily be re-enabled later when/if this problem is under control) Co-authored-by: Alan Steremberg Co-authored-by: Alan Steremberg --- other_authors/mra_rom_check.sh | 90 ++++++++++++++++++++++++++-------- 1 file changed, 70 insertions(+), 20 deletions(-) mode change 100755 => 100644 other_authors/mra_rom_check.sh diff --git a/other_authors/mra_rom_check.sh b/other_authors/mra_rom_check.sh old mode 100755 new mode 100644 index 21ae8b8..aa7ca6e --- a/other_authors/mra_rom_check.sh +++ b/other_authors/mra_rom_check.sh @@ -32,6 +32,16 @@ def find_mame_folder(): broken = [] +def output_line(line): + print(line) + logfile.write(line) + logfile.write('\n') + +def output_line_mameversion(line): + #print(line) + logfile_v.write(line) + logfile_v.write('\n') + def parseMRA(mraFile): working = True tree = ET.parse(mraFile) @@ -51,48 +61,51 @@ def parseMRA(mraFile): if ('zip' in child.attrib): zip=child.attrib['zip'] zipfiles = zipfiles+ zip.split('|') - #print(zipfiles) + #output_line(zipfiles) crclist = [] for zipfilename in zipfiles: try: mame_folder=find_mame_folder() zf = zipfile.ZipFile(mame_folder+'/'+zipfilename) for zi in zf.infolist(): - #print(zi.filename) - #print('{:x}'.format(zi.CRC)) - #print('{0:0{1}x}'.format(zi.CRC,8)) + #output_line(zi.filename) + #output_line('{:x}'.format(zi.CRC)) + #output_line('{0:0{1}x}'.format(zi.CRC,8)) crclist.append('{0:0{1}x}'.format(zi.CRC,8)) except: - #print('file not found: '+zipfilename) + #output_line('file not found: '+zipfilename) if ('filename' in info): info['filename'].append(zipfilename) else: info['filename']=[] info['filename'].append(zipfilename) - #print(crclist) + #output_line(crclist) for item in root.findall('rom/part'): - #print(item.attrib) + #output_line(item.attrib) if ('crc' in item.attrib): noCRC = False crc=item.attrib['crc'] if (crc.lower() in crclist): a=1 - #print('rom found') + #output_line('rom found') else: - #print('**ROM NOT FOUND** '+crc) + #output_line('**ROM NOT FOUND** '+crc) if (crc in info): info['crc'].append(crc) + info['name'].append(item.attrib['name']) else: info['crc']=[] + info['name']=[] info['crc'].append(crc) + info['name'].append(item.attrib['name']) working = False if not working: broken.append(info) if noCRC and len(zipfiles): - print(mraFile+':NO CRC, Could not validate') + output_line(mraFile+':NO CRC, Could not validate') if noMameVersion: - print(mraFile+':No MameVersion ') + output_line_mameversion(mraFile+':No MameVersion ') return working @@ -100,31 +113,68 @@ def iterateMRAFiles(directory): for filename in os.listdir(directory): if filename.endswith(".mra"): fullname=os.path.join(directory,filename) - #print(fullname) + #output_line(fullname) try: working=parseMRA(fullname) except: - print('Broken XML:'+fullname) + output_line('Broken XML:'+fullname) #if not working: - # print('Not Working:'+fullname) + # output_line('Not Working:'+fullname) -print("checking /media/fat/_Arcade/") +######################################### +# Create Logs subdirectory for log output +######################################### +path = os.getcwd() +print ("The current working directory is %s" % path) +path = "Logs" + +try: + os.mkdir(path) +except OSError: + print ("Directory %s already exists" % path) +else: + print ("Successfully created the directory %s " % path) + +######################################### +# Create Logs subdirectory for log output +######################################### + +logfile = open("Logs/mra_rom_check.log", "w") +logfile_v = open("Logs/mra_rom_check_mamever.log", "w") + +output_line("checking /media/fat/_Arcade/") +#logfile.write("checking /media/fat/_Arcade/") iterateMRAFiles('/media/fat/_Arcade/') for info in broken: + #print(info) missingzips="" + wrongcrc="" if ('filename' in info): for fname in info['filename']: missingzips=missingzips+fname+"," - print("missing: "+missingzips+" for: "+info['mraname']) + if ('name' in info): + for name in info['name']: + wrongcrc=wrongcrc+name+"," + errorstr = "" + if (len(missingzips)): + errorstr=errorstr+" missing zip: "+missingzips+" " + if (len(wrongcrc)): + errorstr=errorstr+" wrong crc for: "+wrongcrc+" " + + output_line(errorstr+" for: "+info['mraname']) + #working=parseMRA('Xevious.mra') #working=parseMRA('Tapper.mra') -#print('Working:'+str(working)) +#output_line('Working:'+str(working)) #working=parseMRA('Asteroids.mra') -#print('Working:'+str(working)) +#output_line('Working:'+str(working)) #working=parseMRA('Alien Arena.mra') -#print('Working:'+str(working)) +#output_line('Working:'+str(working)) #working=parseMRA('Xevious.mra') -#print('Working:'+str(working)) +#output_line('Working:'+str(working)) + +logfile.close() +logfile_v.close()