Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)