Exemple #1
0
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)