- Published on
prprojファイルを昔のバージョンにする(pythonでgzip)
- Authors
- Name
- Kikusan
adobe premiere pro の最新バージョンのプロジェクトファイルが旧バージョンからひらけない時の、ダウングレードスクリプトを書きました。
mac上で拡張子をいじって圧縮解凍したりして直せますが、何度もやるのはめんどうだということで。
pythonが動く環境で、prproj.pyを実行すれば動きます。
python prproj.py [prprojファイルがあるフォルダ] 01
↑をターミナルから実行すれば動作しますが、
pythonがターミナルから実行できること、実行前にcd [prproj.pyのあるフォルダ]
としてカレントディレクトリを移動しておいてください。
ソース
以下がソースです。
調べるとprprojファイルはgzipファイルだそうで、gzipの中身を書き換えています。
import argparse
import glob
import gzip
import pathlib
import xml.etree.ElementTree as ET
def get_args():
"""コマンドライン引数"""
parser = argparse.ArgumentParser()
parser.add_argument('folder', help='prprojファイルが格納された絶対パスを入力してください')
parser.add_argument('toVersion', help='変更後のVersionを入力してください')
args = parser.parse_args()
return args
def main():
"""prproj version変更実行"""
args = get_args()
# フォルダ直下ファイル取得
files = glob.glob(args.folder + '/*')
# prprojのみ取り出し
prproj_files = [f for f in files if pathlib.PurePath(f).suffix == '.prproj']
for file in prproj_files:
# 読み取り
with gzip.open(file, mode='tr') as gz:
lines = gz.read()
# xml編集
root = ET.fromstring(lines)
for project in root.iter('Project'):
if 'Version' in project.attrib:
project.set('Version', args.toVersion)
xmlstr = ET.tostring(root, encoding='utf-8').decode('utf-8')
# 書き込み
with gzip.open(file, 'wt') as gz:
gz.write(xmlstr)
if __name__ == '__main__':
main()