Try utf-16 if utf-8 fails
This commit is contained in:
parent
0b29d1a3e1
commit
1c3e207f5d
@ -49,7 +49,14 @@ def process_file(in_file, file_type) -> ConfigParser:
|
|||||||
bot_config = json.load(f)
|
bot_config = json.load(f)
|
||||||
ignore_strings = bot_config['ignore_strings'][file_type]
|
ignore_strings = bot_config['ignore_strings'][file_type]
|
||||||
keep_blocks = bot_config['keep_blocks'][file_type]
|
keep_blocks = bot_config['keep_blocks'][file_type]
|
||||||
data = list(map(bytes.decode, in_file.readlines()))
|
lines = in_file.readlines()
|
||||||
|
try:
|
||||||
|
data = [line.decode('utf-8') for line in lines]
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
try:
|
||||||
|
data = [line.decode('utf-16') for line in lines]
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
return 0
|
||||||
clean_data = list()
|
clean_data = list()
|
||||||
|
|
||||||
if ignore_strings:
|
if ignore_strings:
|
||||||
@ -88,10 +95,14 @@ def process_files(z) -> (ConfigParser, ConfigParser, list):
|
|||||||
if filename.lower() == 'game.ini':
|
if filename.lower() == 'game.ini':
|
||||||
# Clean the Game.ini file, removing unnecessary lines
|
# Clean the Game.ini file, removing unnecessary lines
|
||||||
game_config = process_file(z.open(filename), 'game.ini')
|
game_config = process_file(z.open(filename), 'game.ini')
|
||||||
|
if not game_config:
|
||||||
|
return 0, 0, 0
|
||||||
mods = check_for_mods(z.open(filename))
|
mods = check_for_mods(z.open(filename))
|
||||||
elif 'DinoExport' in filename:
|
elif 'DinoExport' in filename:
|
||||||
# Get the contents of all DinoExport_*.ini files loaded into a dict
|
# Get the contents of all DinoExport_*.ini files loaded into a dict
|
||||||
dino_data[filename] = process_file(z.open(filename), 'dino.ini')
|
dino_data[filename] = process_file(z.open(filename), 'dino.ini')
|
||||||
|
if not dino_data[filename]:
|
||||||
|
return 0, 0, 0
|
||||||
if not mods:
|
if not mods:
|
||||||
mods = check_for_modded_dinos(dino_data, mods)
|
mods = check_for_modded_dinos(dino_data, mods)
|
||||||
return game_config, dino_data, mods
|
return game_config, dino_data, mods
|
||||||
|
|||||||
@ -24,6 +24,10 @@ class Uploader:
|
|||||||
await attachment.save(file)
|
await attachment.save(file)
|
||||||
unzipped = process_files.load_zip(file)
|
unzipped = process_files.load_zip(file)
|
||||||
game_ini, dinos_data, mods = process_files.process_files(unzipped)
|
game_ini, dinos_data, mods = process_files.process_files(unzipped)
|
||||||
|
if not game_ini and not dinos_data and not mods:
|
||||||
|
await msg.edit(content='There was an encoding error with one of the files provided'
|
||||||
|
'and they cannot be processed')
|
||||||
|
return
|
||||||
if dinos_data == dict():
|
if dinos_data == dict():
|
||||||
await msg.edit(content='There aren\'t any DinoExport files in the zip file attached.\n'
|
await msg.edit(content='There aren\'t any DinoExport files in the zip file attached.\n'
|
||||||
'Please make sure the files have not been renamed.')
|
'Please make sure the files have not been renamed.')
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user