def download_file(filesystem, ident, save_type): """Attempt to download all files for a given savefile""" log = logger() log.info("Downloading %s file %s (from %s)" % (save_type.name, ident, filesystem)) filename = filesystem.get_json_filename_for_type(ident, save_type) if not filename: log.error("Unable to find data file.") return False try: data = load_json_file(filename) except IOError as e: log.error("Unable to read data file %s (%s)" % (filename, e)) return False if not data: log.error("Unable to read data file %s" % filename) return False save = Save(savedata=data, filename=filename, ident=ident, save_type=save_type, filesystem=filesystem) if save.isInstalled: log.info("All files already downloaded.") return True successful = save.download() if successful: log.info("All files downloaded.") else: log.info("Some files failed to download.") return successful
def do_export(self, args): filename = None if args.output: if os.path.isdir(args.output): filename = os.path.join(args.output, args.id + ".pak") else: filename = args.output else: filename = args.id + ".pak" data = None json_filename = None if not args.save_type: args.save_type = self.filesystem.get_json_filename_type(args.id) if not args.save_type: return 1, "Unable to determine type of id %s" % args.id json_filename = self.filesystem.get_json_filename_for_type( args.id, args.save_type) if not json_filename: return 1, "Unable to find filename for id %s (wrong -s/-w/-c specified?)" % args.id data = load_json_file(json_filename) if not data: return 1, "Unable to load data for file %s" % json_filename save = Save(savedata=data, filename=json_filename, ident=args.id, save_type=args.save_type, filesystem=self.filesystem) if not save.isInstalled: if not args.download: return 1, "Unable to find all urls required by %s. Rerun with -d to try and download them or open it within TTS.\n%s" % ( args.id, save) else: logger().info("Downloading missing files...") successful = save.download() if successful: logger().info("Files downloaded successfully.") else: return 1, "Some files failed to download" if os.path.isfile(filename) and not args.force: return 1, "%s already exists. Please specify another file or use '-f'" % filename logger().info("Exporting json file %s to %s" % (args.id, filename)) save.export(filename) # TODO: exception handling return 0, "Exported %s to %s" % (args.id, filename)