Example #1
0
    def __init__(self, path, dstpath, skintype=""):
        self.name = os.path.basename(path)
        self.path = path
        self.dir = util.join_paths(dstpath, os.path.basename(path))
        self.dir = util.check_duplicate(self.dir)
        self.skintype = skintype
        # progress dialog data
        self.message = ""
        self.curnum = 0
        self.maxnum = 1
        # 読み込んだデータリスト
        self.datalist = []
        self.wyd = None
        self.wchs = []
        self.wcps = []
        self.wrms = []
        self.wpls = []
        self.wpts = []
        self.nowadventuringparties = []
        # エラーログ
        self.errorlog = ""
        # pathにあるファイル・ディレクトリを
        # (宿ファイル,シナリオファイル,その他のファイル,ディレクトリ)に種類分け。
        exts_yado = set(["wch", "wcp", "wpl", "wpt", "wrm", "whs"])
        exts_sce = set(["wsm", "wid", "wcl"])
        exts_ignore = set(["wck", "wci", "wcb"])
        self.yadofiles = []
        self.cardfiles = []
        self.otherfiles = []
        self.otherdirs = []
        self.environmentpath = None

        for name in os.listdir(self.path):
            path = util.join_paths(self.path, name)

            if os.path.isfile(path):
                ext = cw.util.splitext(name)[1].lstrip(".").lower()

                if name == "Environment.wyd" and not self.environmentpath:
                    self.environmentpath = path
                    self.yadofiles.append(path)
                elif ext in exts_yado:
                    self.yadofiles.append(path)
                elif ext in exts_sce:
                    self.cardfiles.append(path)
                elif not ext in exts_ignore:
                    self.otherfiles.append(path)

            else:
                self.otherdirs.append(path)
Example #2
0
    def convert(self):
        if not self.datalist:
            self.load()

        self.curnum = 0

        # シナリオファイルをxmlに変換
        for data in self.datalist:
            self.message = u"%s を変換中..." % (os.path.basename(data.fpath))
            self.curnum += 1

            try:
                data.create_xml(self.dir)
            except Exception:
                cw.util.print_ex()
                s = os.path.basename(data.fpath)
                s = u"%s は変換できませんでした。\n" % (s)
                self.write_errorlog(s)

        # 素材ファイルをMaterialディレクトリにコピー
        materialdir = util.join_paths(self.dir, "Material")

        if not os.path.isdir(materialdir):
            os.makedirs(materialdir)

        for path in self.materials:
            self.message = u"%s をコピー中..." % (os.path.basename(path))
            self.curnum += 1
            dst = util.join_paths(materialdir, os.path.basename(path))
            dst = util.check_duplicate(dst)
            shutil.copy2(path, dst)

        # その他のファイルをシナリオディレクトリにコピー
        for path in self.otherfiles:
            self.message = u"%s をコピー中..." % (os.path.basename(path))
            self.curnum += 1
            dst = util.join_paths(self.dir, os.path.basename(path))
            dst = util.check_duplicate(dst)
            shutil.copy2(path, dst)

        # ディレクトリをシナリオディレクトリにコピー
        for path in self.otherdirs:
            self.message = u"%s をコピー中..." % (os.path.basename(path))
            self.curnum += 1
            dst = util.join_paths(self.dir, os.path.basename(path))
            dst = util.check_duplicate(dst)
            shutil.copytree(path, dst)

        self.curnum = self.maxnum
        return self.dir
Example #3
0
def save_plots(plots, path_identifier='folder_path', prefix='plot'):
    folder = session[path_identifier]
    session['plots'] = []
    names = session['results'][0][1:]
    for i in range(len(plots)):
        path = util.join_paths(folder, f'{prefix}-{names[i]}.png')
        session['plots'].append(path)
        plots[i].savefig(path)
Example #4
0
 def __init__(self, ydata, dstpath, targetengine):
     self.ydata = ydata
     self.targetengine = targetengine
     self.name = self.ydata.name
     self.dir = util.join_paths(dstpath, util.check_filename(self.name))
     self.dir = util.check_duplicate(self.dir)
     # progress dialog data
     self.message = ""
     self.curnum = 0
     self.maxnum = 1
     self.maxnum += len(ydata.storehouse)
     self.maxnum += len(ydata.standbys)
     self.maxnum += len(ydata.partys) * 2
     self.maxnum += len(ydata.album)
     # エラーログ
     self.errorlog = ""
Example #5
0
def forecast_from_csv(csv_filename, folder_path, prefix='static/'):
    column_names, columns = all_but_first_columns_and_names_from_csv(
        csv_filename)
    results = forecast(columns)
    results_matrix = format_forecasting_results(column_names, results)
    real = [column[len(column) - 1] for column in columns]
    if folder_path:
        plots = []
        for i in range(len(columns)):
            path = join_paths(folder_path,
                              f'plot-{column_names[i].replace(" ", "")}.png')
            columns[i].plot().get_figure().savefig(path)
            relative_path = path[path.find(prefix) + len(prefix):]
            plots.append((relative_path, column_names[i]))
            plt.clf()
    else:
        plots = None
    return results_matrix, error(real, column_names, results), plots
Example #6
0
def csv_path(index, path_identifier='folder_path', prefix='data'):
    return util.join_paths(session[path_identifier], f'{prefix}-{index}.csv')
Example #7
0
    def convert(self):

        if not self.datalist:
            self.load()

        self.curnum_n = 0
        self.curnum = 50

        # 宿データをxmlに変換
        if not os.path.isdir(self.dir):
            os.makedirs(self.dir)
        yadodb = cw.yadodb.YadoDB(self.dir)
        for data in self.datalist:
            data.yadodb = yadodb
            self.message = u"%s を変換中..." % (os.path.basename(data.fpath))
            self.curnum_n += 1
            self.curnum = min(99, 50 + self.curnum_n * 50 / self.maxnum)

            try:
                fpath = data.create_xml(self.dir)

                if isinstance(data, party.Party) and\
                        self.wyd.partyname == cw.util.splitext(os.path.basename(data.fpath))[0]:
                    fpath = cw.util.relpath(fpath, self.dir)
                    fpath = cw.util.join_paths(fpath)
                    self.wyd.cwpypartyname = fpath

                if hasattr(data, "errorcards"):
                    for errcard in data.errorcards:
                        s = errcard.fname
                        s = u"%s は読込できませんでした。\n" % (s)
                        self.write_errorlog(s)
            except Exception:
                cw.util.print_ex()
                s = os.path.basename(data.fpath)
                s = u"%s は変換できませんでした。\n" % (s)
                self.write_errorlog(s)

        # 冒険中情報を変換
        for partyinfo, partymembers in self.nowadventuringparties:
            self.message = u"%s の冒険中情報を変換中..." % (partyinfo.name)
            self.curnum_n += 1
            self.curnum = min(99, 50 + self.curnum_n * 50 / self.maxnum)

            try:
                self.create_log(partyinfo, partymembers)

            except Exception:
                cw.util.print_ex()
                s = partyinfo.name
                s = u"%s の冒険中情報は変換できませんでした。\n" % (s)
                self.write_errorlog(s)

        yadodb.commit()
        yadodb.close()

        # その他のファイルを宿ディレクトリにコピー
        for path in self.otherfiles:
            self.message = u"%s をコピー中..." % (os.path.basename(path))
            self.curnum_n += 1
            self.curnum = min(99, 50 + self.curnum_n * 50 / self.maxnum)
            dst = util.join_paths(self.dir, os.path.basename(path))
            dst = util.check_duplicate(dst)
            shutil.copy2(path, dst)

            if not os.access(dst, os.R_OK | os.W_OK | os.X_OK):
                os.chmod(dst, stat.S_IWRITE | stat.S_IREAD)

        # ディレクトリを宿ディレクトリにコピー
        for path in self.otherdirs:
            self.message = u"%s をコピー中..." % (os.path.basename(path))
            self.curnum_n += 1
            self.curnum = min(99, 50 + self.curnum_n * 50 / self.maxnum)
            dst = util.join_paths(self.dir, os.path.basename(path))
            dst = util.check_duplicate(dst)
            shutil.copytree(path, dst)

            if not os.access(dst, os.R_OK | os.W_OK | os.X_OK):
                os.chmod(dst, stat.S_IWRITE | stat.S_IREAD)

        # 存在しないディレクトリを作成
        dnames = ("Adventurer", "Album", "BeastCard", "ItemCard", "SkillCard",
                  "Party")

        for dname in dnames:
            path = util.join_paths(self.dir, dname)

            if not os.path.isdir(path):
                os.makedirs(path)

        self.curnum = 100
        return self.dir
Example #8
0
 def create_fpath(name, ext):
     fpath = util.join_paths(self.dir, util.check_filename(name) + ext)
     fpath = util.check_duplicate(fpath)
     return fpath
Example #9
0
    def __init__(self,
                 path,
                 dstdir,
                 skintype,
                 materialdir="Material",
                 image_export=True):
        """カードワースのシナリオを読み込み、XMLファイルに変換するクラス。
        path: カードワースシナリオフォルダのパス。
        dstdir: 変換先ディレクトリ。
        skintype: スキンタイプ。
        """
        self.name = os.path.basename(path)
        self.path = path
        self.dir = util.join_paths(dstdir, os.path.basename(self.path))
        self.dir = util.check_duplicate(self.dir)
        self.skintype = skintype
        self.materialdir = materialdir
        self.image_export = image_export
        # progress dialog data
        self.message = ""
        self.curnum = 0
        self.maxnum = 1
        # 読み込んだデータリスト
        self.datalist = []
        # エラーログ
        self.errorlog = ""
        # pathにあるファイル・ディレクトリを
        # (シナリオファイル,素材ファイル,その他ファイル, ディレクトリ)に分ける。
        exts_mat = set([
            "bmp", "jpg", "jpeg", "wav", "wave", "mid", "midi", "jpdc", "jpy1",
            "jptx"
        ])
        self.cwfiles = []
        self.materials = []
        self.otherfiles = []
        self.otherdirs = []
        self.summarypath = None

        # 互換性マーク
        self.versionhint = None
        self.hasmodeini = False

        if self.path == "":
            return
        for name in os.listdir(self.path):
            path = util.join_paths(self.path, name)

            if os.path.isfile(path):
                ext = cw.util.splitext(name)[1].lstrip(".").lower()

                if name.lower() == "summary.wsm" and not self.summarypath:
                    self.summarypath = path
                    self.cwfiles.append(path)
                elif ext == "wid":
                    self.cwfiles.append(path)
                elif ext in exts_mat:
                    self.materials.append(path)
                elif name.lower() == "mode.ini":
                    self.read_modeini(path)
                else:
                    self.otherfiles.append(path)

            else:
                self.otherdirs.append(path)

        if self.summarypath:
            self.versionhint = cw.cwpy.sct.merge_versionhints(
                self.versionhint,
                cw.cwpy.sct.get_versionhint(fpath=self.summarypath))
Example #10
0
 def join_paths(self, tolerance=0.05):
     return Drawing(util.join_paths(self.paths, tolerance))