35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
import zipfile, os, re, shutil
|
|
|
|
jar = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_lib-forge-1.20.1-1.0.1.jar'
|
|
|
|
with zipfile.ZipFile(jar) as z:
|
|
infos = z.infolist()
|
|
data = {i.filename: z.read(i) for i in infos}
|
|
meta = 'META-INF/mods.toml'
|
|
text = data[meta].decode('utf-8')
|
|
|
|
new_text = re.sub(
|
|
r"description\s*=\s*'''[\s\S]*?'''",
|
|
"description='''\n我们所有幸存者军火库模组的公共库。\n'''",
|
|
text,
|
|
count=1,
|
|
)
|
|
print('changed:', new_text != text)
|
|
print(new_text[:400])
|
|
if new_text != text:
|
|
data[meta] = new_text.encode('utf-8')
|
|
tmp = jar + '.tmp'
|
|
with zipfile.ZipFile(tmp, 'w', zipfile.ZIP_DEFLATED) as z:
|
|
for i in infos:
|
|
z.writestr(i, data[i.filename])
|
|
shutil.move(tmp, jar)
|
|
print('jar updated.')
|
|
|
|
# verify
|
|
with zipfile.ZipFile(jar) as z:
|
|
t = z.read(meta).decode('utf-8')
|
|
for line in t.splitlines():
|
|
if 'displayName' in line or 'description' in line:
|
|
print('VERIFY:', line.strip())
|
|
print('entries=', len(z.namelist()), 'testzip=', z.testzip())
|