def load(name, bare=False, options=None): name = str(name) node = None wantext = None if "." in name: a = name.split(".") if " " not in a[-1] and "/" not in a[-1]: wantext = a[-1] name = ".".join(a[:-1]) log.info("attempting to load beatmap %s", repr(name)) for ext, importer in muz.beatmap.formats.importersByInferExt.items(): if wantext is not None and ext != wantext: continue found = False paths = [] if name.startswith(vfs.VPATH_SEP) or name.startswith(os.path.sep): paths.append("%s.%s" % (name, ext)) else: for location in importer.locations: paths.append("%s/%s.%s" % (location, name, ext)) for path in paths: try: node = vfs.locate(path) except Exception: log.debug("couldn't load beatmap %s with the %s importer", repr(path), repr(importer.__name__), exc_info=True) else: log.info("loading beatmap %s (%s) with the %s importer", repr(name), repr(path), repr(importer.__name__)) found = True break if found: break if node is None: raise RuntimeError("No importer available for beatmap %s" % name) bm = importer.read(node.open(), node.name, bare=bare, options=options) if bm.vfsNode is None: bm.vfsNode = node if not bm.name: bm.name = name return bm
def export(*bmaps, **kwargs): format = formats.muz packtype = vfs.VirtualPack ifexists = 'remove' options = None if "format" in kwargs: format = kwargs["format"] if "packType" in kwargs: packtype = kwargs["packType"] if "ifExists" in kwargs: ifexists = kwargs["ifExists"] if "options" in kwargs: options = kwargs["options"] if "name" in kwargs and kwargs["name"] is not None: name = kwargs["name"] elif len(bmaps) > 1: name = "beatmap-pack-%s" % "_".join(m.name for m in bmaps) else: name = "beatmap-%s" % bmaps[0].name pack = packtype(name, ifExists=ifexists) for bmap in bmaps: s = StringIO() newname, mappath, muspath = format.write(bmap, s, options=options) s.seek(0) muspath = "%s%s" % (muspath, os.path.splitext(bmap.music)[-1]) with bmap.musicFile as mus: pack.addFile(muspath, mus) pack.addFile(mappath, s) pack.save() if len(bmaps) > 1: log.info("exported beatmaps as %s", pack.path) else: log.info("exported beatmap %s as %s", bmaps[0].name, pack.path)