Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python2
- # -*- coding: utf-8 -*-
- # python2 — renpy же
- # Created by Anonymous
- # WTFPL http://wtfpl.org/
- # Для любителей оперативно избавиться от тухлых помидоров:
- # gnosis.xml и jsonpickle хотя и подавали надежды, но
- # с задачей не справились и не смогли десериализовать то,
- # что сами до этого сериализовали.
- # В pickle формата 0 руками ковыряться тоже не так тяжело.
- # А хоть чуть-чуть програмистам поможет посмотреть
- # что-нибудь вроде /usr/lib/python2.7/pickle.py
- # Впрочем заранее спасибо за кучу идей относительно того,
- # каким образом можно (де)сериализовать произвольные
- # объекты Питона в более человеческом текстовом формате.
- def import_renpy(renpypath):
- """Не важно, где, главное дать этой заразе загрузиться разок"""
- import sys
- sys.path.append(renpypath)
- import renpy
- import renpy.object
- import renpy.game
- import renpy.preferences
- def ren2txt(ren, txt):
- import cPickle as pickle
- with open(ren, "rb") as pfl:
- s = pfl.read().decode("zlib")
- data = pickle.loads(s)
- print("Загрузили RenPy")
- with open(txt, "w+") as tfl:
- pickle.dump(data, tfl, protocol=0) # 0 is readable
- tfl.flush()
- print("Сохранили TXT")
- def txt2ren(txt, ren):
- import cPickle as pickle
- with open(txt, "r") as tfl:
- data = pickle.load(tfl)
- print("Загрузили TXT")
- with open(ren, "w+") as pfl:
- pdata = pickle.dumps(data)
- pfl.write(pdata.encode("zlib"))
- pfl.flush()
- print("Сохранили RenPy")
- def getargs():
- import argparse
- parser = argparse.ArgumentParser(description="Перегоняет zlib(pickle) от RenPy в текст и назад")
- parser.add_argument('-op', '--operation', choices = ['ren2txt', 'txt2ren'],
- required = True, help = "Куда преобразовывать")
- parser.add_argument('-ren', '--renpy-file', required = True, help = "Файл persistent от RenPy")
- parser.add_argument('-txt', '--editable-text', required = True, help = "Текст для ковыряния руками %%D")
- parser.add_argument('-gdr', '--game-dir', required = True, help = "Каталог игры с подкаталогом RenPy")
- return parser.parse_args()
- def main():
- args = getargs()
- gdr = args.game_dir
- op = args.operation
- txt = args.editable_text
- ren = args.renpy_file
- import_renpy(gdr)
- if op == 'ren2txt':
- ren2txt(ren, txt)
- else: # 'txt2ren'
- txt2ren(txt, ren)
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement