Exemplo n.º 1
0
    def backup(self, snd_dir, prefix=''):
        '''
        バックアップの作成

        @param prefix 保存名の頭につける文字列
        '''

        try:
            zip_path, name = self._get_backup_path(snd_dir, prefix)
            zf = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED)

            # ---- info.txt の作成
            conf = SafeConfigParser()
            conf.add_section('info')
            conf.set('info', 'name', name.encode('CP932'))
            sf = StringIO()
            conf.write(sf)

            LABELS_DIR = 'labels'
            info_path = os.path.join(LABELS_DIR, INFO_FILE)
            zf.writestr(info_path, sf.getvalue())

            labels_paths = mf.get_labels_paths(snd_dir, False)
            snd_files = mf.get_snd_files(snd_dir)
            num_snds = len(snd_files)
            max_labels_file = mf.get_labels_file(num_snds)

            # ---- ラベルファイルの作成
            for labels_path in labels_paths:
                labels_file = os.path.basename(labels_path)
                if labels_file > max_labels_file:
                    break

                dst = os.path.join(LABELS_DIR, labels_file)
                zf.write(labels_path, dst)

            zf.close()
        except Exception as e:
            print str(e)
            return None

        info = self._load_labels_info_from_zip(zip_path)
        self.append(info)
        return info
Exemplo n.º 2
0
    def restore(self, snd_dir, info):
        '''
        バックアップの復元
        '''

        try:
            labels_dir = mf.get_labels_dir(snd_dir)
            self._remove_all_files(labels_dir)

            snd_files = mf.get_snd_files(snd_dir)
            num_snds = len(snd_files)

            max_labels_file = mf.get_labels_file(num_snds)

            for i, (labels_file, labels) in enumerate(info.labels_list):
                if labels_file <= max_labels_file:
                    labels_path = os.path.join(labels_dir, labels_file)
                    labels.write(labels_path)
        except Exception as e:
            print str(e)