-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathwa_tool.py
38 lines (34 loc) · 6.83 KB
/
wa_tool.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import sys
from lupa.luajit21 import LuaRuntime
# watch out for lua include paths
python_path=sys.prefix
def run_lua(action: str, input_string: str) -> str:
"""
Decode/Encode WeakAuras Lua strings using the provided Lua scripts.
:param action: The action to perform. Must be either 'decode' or 'encode'.
:param input_string: The WA2 or JSON string to decode or encode.
:return: The decoded or encoded WA2 or JSON string.
:raises ValueError: If an invalid action is provided.
:raises FileNotFoundError: If the Lua script file is not found.
:raises SyntaxError: If there is a syntax error in the Lua script.
"""
lua_file = './lua/decode.lua' if action == 'decode' else './lua/encode.lua' if action == 'encode' else None
if not lua_file:
raise ValueError('Invalid action provided')
try:
lua = LuaRuntime(unpack_returned_tuples=True)
lua_func = lua.eval(open(python_path + '/' + lua_file).read())
lua_output = lua_func(input_string, python_path) #json string
return lua_output #json string
except (FileNotFoundError, SyntaxError) as error:
return error
if __name__ == "__main__":
str="!WA:2!nRvxWXT11zrTr12BsBLwjZkr5yTIorLYrHEjffPTRPL3D5srktjrVKIY1rXeybU7cyHfagaljxPQyBsfx1k3FeBRDIATDctCJZmnZ4zRKCzATDlhpEAs)jhYjvZ0(sNYPtN23YOhA7BUNZ9caIL)iA6Q4XCgsIf4Ep3Z9E(((UN7bBdJKWTWHATTUAnvIYjutOEX9ANqXY0ZXYWGPMvt3q1Hz20C9u1uUSUYrCSQyVyblhvMtgzLZO6yzBV1mg6N9SYoQjh2YYWt32zItuSOlZ7LY6uvCvpFHAYMkAwodAPB6viBUJpCU82B1vt2HP2RJCz2aSXygs1eMoRLHLZrBOHgI1EfhJm3h(hhzfpDlt3oZ76j74fVqrDtDxT4zW)5fFsph9sLyoUnTph)lFXzuzfQuS4WvTzo9LBGb79KdKXd)qE5koYTpPRnZWOFv34l6wPao4MEdHTwFIAJMn9qdp6qdNo)WzQGgVGTHCvMtyZg0HHnl)qdMBGbYZVtH(yYgEA5XLiMB8PRy67cXVjozzoMYgJGUg69VY0YM6LLPjsNWVCVZXKDzd5HlWL80UdOXmMwMSfur3JAXOKZ64YWWHQ7KutPPcSVmLL1n7f(IyhG9b)QqlW(X)V1LFNzq)npReTMfpJHLSAVf8KnqVTX8LRGrP4zWvaLgHwJNxXq21LUkJR(zz0fluWp4kIeXIfBWyPA9q5DvqteRGikPnJ4)5ulXS32qpBfmyMS3kggjpLMUhBgh(OtoD(seUXV5dHJXwMtCTaDCxZ4zPmMyjANn8dQ1SU6nhKVOpKNShhZLx2Wwto2nfOioIHmCHHYMpxUJ7dB63engcz0vR9RxvPfTwgy8NIvTaUawuVu8PDzgf54p4UwqUIhANtyZXuXNHwJ1fxxt3SOLJii1ynUJl8sTAfPHfJxYEYBpHY)Yf7CAzhLb4rVl0iS5F8mf1DC9guFcMXnfGMSYMP98W1Y5eF(ywJPBwYExmtw5QzLD9Wp1pHrCQy7jxWGTqq)4pAsXN6dHCLzMv7BqFZKZK5uQ6cCRK(e5YAHqU5C1lBBWOvSkU2jKlOBO7vfJ8wQEAKFnngLfoh8zGTa5Id3rdWDc3fexAMIyulRUJIbtkVRTScRb4Zb)IWVeIsJdBnoST4qIM2hS9xe2bC3ik7xb2zCyxqtWUH7b(8W9c7bsc7no0C8AkwgvkBoe3ifCKv1R4EHph8fi8(YXS3)6JIX4UEjZmdKR3HN0XACHzXR84XNgGVu8c2iSdJPpcCGEHVmbEHhG)3u8)2g)V9aNgApegpzfx2a6L190Ce8rMM9wX7LwirXCojs71GdgBgfgfCiKwZ5ha6qdoe0j01CQc1qo4aEOTK3Gm2NDAxpMDAZsgS9azJd33RaPRnE)57yyBRXupM9Iiid1Um96fLYSCkKpDp9FYHGUJbp8Db9hd(18H(qSmUwoEW(MUKJU6P0XW3(Hhfo8K0hfUYiWJfldo6JN5i57Vh4xOb4ZYvlHEJdhjogRLj5NgU49bJcXccZlfq3wJtRAnQsfxpRYAu4nXXXy7ftoDz5j04sznLOnmCUiUMmQSX4YvD9CQWKwG(CrHqC)9iraa7Tr3ReIeD0vgsZA8tykTqDFSMl)F5zYQvjOY0uh4koAfedwI2SteoYJAHIEY46ttn)ODtbQrjzkj7eCFPaUYWvBpMLktIqFcFKZXi(J00CD9JJe178R2p3HTTgN5qAPAiWA3Zq3smuA3CzdzZps3e(M3Rqhsc2ZmzdLh4EeTRG0co4JhkyWSBcUY8pp8Uqn83RdVfCv4DG3D(xy(jN)LwWFwiAPesD4wrt2uvkJtftwd5rnfLZmPcU9PQ14M8Li(TKwCPPTykJmmvD3NPIjgfgJ1USzv7TjZVEyXMouZ(Z2eH(eCoImHCQiCULDNTU87GBC6IIioeVaEAKJ1uJqJlGBNqBkqyEtvmYPxsZlwboteB2bUUyTM5vadggmTf5H4rX5ipaUVcU6eZ4YqRnEzj7Ttngj2womAnbbhgL1Qr3CmMMokdPjiXCA5OQoYLSmr0pAcnohVXDUz4b8bf1pqstlaT4cIuujGB6XMaNtSt5iBtlr27i7aPp2GdFImdKo7JNUNE6F4(hjhUqxXrHvaLsrkyHY6oowoAqxo(9EAeIzQs9ppQjD8EGVTDNC9BKvWoDAv1ty6E6tXKptAC5Z90hJPQlF6Hf9190ITihLV7ikjHS(TVeR)XjAC3XYpor4JrYZOgs6ApXazpAU(moKHLcjcKxHVHCFh(FEx76X20M2uFh(hXVyZHx4lcyVneMO4W8yJgQwI6bFVJ2qSgwfjbsJVrWwdsyIsbFaXuahodhEjKbatYv6rr)ZjX17rT(PK4Bg0CCs74EGFl43g8KGkWy8gmUg16DJ5C4uI5b)MH263qcopsnHNtcCLiZ98eT7SsWxtd2J9oiP3KzX8crqnkIGBdQ4Y9MlaFD4fLGjqLjAyVydKdCjjXUoKlKOMiHVS8SzkyBP7AzkH(uEuLVelXHWoSi)YLt4j7FtoqBjdG(7MH9ulp1E0FykNb(8BMCGklke0YgLSYnRen9oh3P2n89rVc(DGFx43lkzCJVbi87VeheUmmDm4pGyBWFOg8hTp4Lf8j4v0GVHMpC)BgLIaxrc(JL83ruSx4Fc8QWRbVo8TqCn8THzGVd(3Vl8Me6Bj44aWBeJWNiMJaMiwK2kjDTI9m4jlTFwoNkhLWO920(YRqRo9cB)aBQzlBs1EmzhDsmU90hVNc8N6E)DcBFlW1YqRD5ht2Oclg2J7aUg8xaZgJ63J0TJIgTmI5WdZIW0(o83Dh7ijIXJnPTdfX8QcFpeztmNl2m5uRkkg3n7DdHWNRoi8uK2lbyiSSJaiVeeE7uZQmd5HP575rT0hDeyOPi8uiD4c27bxj)ZrL(RH)I69W1scxD(ln)xh3a4DWz21iadoKNFNB5F6HNJR55wMNcikbQZZgqbrD645ouWCYRgNWoKxf1JG)QL5iVhFcWvlltz(XufUe1XlGJRym9c9y0MChi0QEcRstbXdImd)gCgL)Q1swJSnoUVe3AI1mcDJhwKNfH)EpdyvsxX(lwKV7KLzl(NdA)XtI)GArvCmtszsehfrdigKo4gaJ)arX4X9H3PwF49hB(xiJ4yryePRLvv7jgzeVoZk)Ge5WxxL4icwbCvbINJVHF4kW0WFPam3DmelV6zPXXZjEnmM9Ferpg3iXLzszO7JQ3lpwVtbQEkb(5Cr1MteaJMYhiisAtp4Ch6uEtrXa7jdD(dUi2siG9kabEldba)nWCRBO8pnAO8QFfj)GhgoX433miOUrcKB8SAwkqECsOlmqo8ZC2oYMQNozQpEKajgerbMEVFmoYv2Wa51jvQU7gEBCWOi7Kk4Ie)i5ZMHUu8yXZwKnHTU4y8dRxgBr7PATdHk3AGfWbAKGbOjHrG)w)Bmlxz0ep4M42WSWF)Tas9gXU1YJlhrbV)QJLOW9usldlXvXcM5AbiRvvkzpWhW7z9QiO9JSX9TbiuOIWNGAbNGdEqyekjistZzO(s1)apzNvhIWorKd4AbJSmSZsHw4h5FNFSp8yw4VBfch9D4)Hx9vFVp8d)W(o8)6R)6)1uWomA3)2X06wTOTiFosc5P5NUdEwXP6c25ZvkiFnk6H5RrXSQ0XUOSXeP6fKS2xJF2j450ezRrr1PeiMxqkAMzyAEyIzuQGxINneh08YbGcoiljF4EonHieUToDg7GJAnvDsl3g2HOUSG(5P6s0u5hKGfi4GWiC0Xd2zBdKTNNkTHXbx(ofxrOWGb8fQBTaMT5hk1kumUXl)YFRikg(qN5dGon)GPI04FA9YlbngBwxR0YZF5lJwUHvPXDUYg)pEV37JT6w(qRSXHNlzfnUJv243Fn95dUYg)UC3i2Q042xzJV6QB5WLU2sDlKuFZgwds2sNBkkjJOxo8Z3WPl(0meCJSmIMeYYohxgCLSmIkseHxisYMcwgYlVfKSNtBjs23NS(p52dNk620Pc2Soc)AJCYINisEu(KbKKKJ4jPlNP6Z0vPm5kCCH25vwTi1dLA9zeCUWkWa)01bd0vQ1Nre24otT(mIWgFOuRpJiSXDKA9zeHn(GPwFgryJBp16Zi4CHBzUkeJ4J7EOFANhD9OBwLFqQ2Hu3efIYxHMxrroXchIFIgnEFQIHLFTzyvgSlVd69GAD1fB5mS5Io72iKTBSriB3yJq2UXgHSDJncz7gBeY2n2iKTBSriB34N7KTCn9boUwf9oMUj9UpAdF8pWbXY9WCv0AVS8e3Dg61wiE2BeR9Y(Tld9YmruVTQShlzrh2Zwbp1zvHTKNyWyT16HCkOxAOGo3(zyvN0tZXIk)RJkROCfdV1(qip9AuJg)YmkQV4kQrZDt01PPxGl)DT20IibOgCT5F(5Ne(HWBfnHwSt08uuYDCaQjQub)TQwZLQATyUfuoZ9yVRGs6LCqhRs05St2cVa)7hASGO3WfS3nmnVGpVnoCVh8oZFjy2KZpfCv4TM)5jHL)Rj283jSaiYgg8HYvuce9IjnT8ss()OmZXALEJCjTCsEeMhDmXw2FYV8YE4JU0NfVgZwdwItIjkAYTk9t99Q7LSyylmSuKnsQqfmcFEQLDFEbmX7)GH3Vi6x64DA7aj7ivsvRWhSuNO3dc2IM5qfdCA2CRTQxx7Wjmvq3WxdAlnlEbMnFaEN3FY6ATSPAYWIN3kVOR86V2c12di8XdKePknV)K13Z6wlc(jyUk()xkzB11cMPA8v76Wq2xP5M)QyVR)Z4IY5OkeIpGkK15tU69RvxA26gm4RrJe17u13wXJSO576yCALtT1yGqk4QoFIw2TGNrLF7835E)3HRwWNeStQ0J3uaYhXV8TU2nEoExchdYihi(5x9D6EZB9z2VCDBN9XQ0p4EPrpM1qroeU)2CPR1zxpzbLH64SEvm5BWLTr4FJ)sF51Z5PQRmlrRqhDvbXefMftTynRsJVY9pdBv7I6DVUQ8)m)2nBIdUUBFq2TJvy33FDS7HwJn8GJSVAirwHLJ(EQ4kzVtXlDZ)l(a)U5O3XfMI1Niz05x59PKIu(bu8DC)cleMqhLD3Qw)HGm6eFPdIw)Hp6Nm6EUnEYOBNVZLHPC0wrEBPRDQosn2tPvzWN00KW6HvvAfzS3DaMj2T3KiwJVfbFkP(s)3qJ55VE9GsvIMH)wA(pdkj(lk5xOs(lnbLDDkXC1iiWL8DGpMyG6v0cXcVseDTRi9jqfNozaErOgkEHDPRnEXQPFIYp7rulyWbvubNoAqjT9bmxdUo82pSak54V0Gkk(4jHe5CIVSCM8DJr1YLxYYeThwOYaux0u5RFSckb6)tqjqt0MVq8)7A)Qs(OzO2xDdD1pQgIuOJoVxUHIkz)rSSqhFfCdxr(Uic9fKcOgiBiKzGOxI(SmQrWlkNW3eNk8n0Dl4gFkrwBK6K1ULF1f4O2XAB4chXmtlwT1vOCx8))OGLySpZ5))(d"
out=run_lua('decode', str)
if len(out) == 8352216:
print('decode test passed')
print('decode out len:', len(out))
out2=run_lua('encode', out)
if len(out2) == 31378:
print('encode test passed')
print('encode out len:', len(out2))