add SeFree-Custom-Script
This commit is contained in:
87
SeFree-Custom-Script/ass_editor.py
Normal file
87
SeFree-Custom-Script/ass_editor.py
Normal file
@@ -0,0 +1,87 @@
|
||||
import pysubs2
|
||||
import shutil
|
||||
|
||||
import os
|
||||
|
||||
|
||||
class ASS_Editor:
|
||||
def __init__(self,ass_file):
|
||||
base_name, extension = os.path.splitext(ass_file)
|
||||
if extension.lower() == ".mp4":
|
||||
shutil.move(ass_file, base_name + ".ass")
|
||||
ass_file = base_name + ".ass"
|
||||
self.input=ass_file
|
||||
self.subs = pysubs2.load(self.input)
|
||||
|
||||
|
||||
def batch_custom_style(self,font_name=None, font_size=64,output=None):
|
||||
# Change font and size for every existing style
|
||||
for style in self.subs.styles.values():
|
||||
if font_name is not None:
|
||||
style.fontname = font_name # <-- put your font family here
|
||||
style.fontsize = font_size
|
||||
self.save_out(self.input, output)
|
||||
|
||||
def save_out(self,input_file, output=None):
|
||||
if output:
|
||||
self.subs.save(input_file)
|
||||
base_name, extension = os.path.splitext(input_file)
|
||||
if extension.lower() == ".ass":
|
||||
shutil.move(input_file, base_name + ".mp4")
|
||||
self.input = base_name + ".mp4"
|
||||
else:
|
||||
self.subs.save(os.path.join(os.path.dirname(input_file), os.path.basename(input_file)+".modified.ass"))
|
||||
|
||||
def attach_font(cl,service,FONT_DIR="/root/VT.PR.WV/assets/fonts/{Service}"):
|
||||
FONT_DIR = FONT_DIR.format(Service=service)
|
||||
for font_file in os.listdir(FONT_DIR):
|
||||
if font_file.lower().endswith((".ttf")):
|
||||
cl.extend(["--attach-file", os.path.join(FONT_DIR, font_file),
|
||||
"--attachment-mime-type", "font/ttf"])
|
||||
elif font_file.lower().endswith((".otf")):
|
||||
cl.extend(["--attach-file", os.path.join(FONT_DIR, font_file),
|
||||
"--attachment-mime-type", "font/otf"])
|
||||
return cl
|
||||
|
||||
def encode_uu(data: bytes, filename: str) -> str:
|
||||
import io
|
||||
|
||||
out = io.StringIO()
|
||||
out.write(f"begin 644 {filename}\n")
|
||||
# encode in 45-byte chunks
|
||||
for i in range(0, len(data), 45):
|
||||
chunk = data[i:i+45]
|
||||
# output length char
|
||||
out.write(chr(32 + len(chunk)))
|
||||
# process every 3 bytes
|
||||
for j in range(0, len(chunk), 3):
|
||||
triple = chunk[j:j+3]
|
||||
# pad to 3 bytes
|
||||
while len(triple) < 3:
|
||||
triple += b"\0"
|
||||
# 24 bits
|
||||
b1, b2, b3 = triple
|
||||
c1 = (b1 >> 2) & 0x3F
|
||||
c2 = ((b1 << 4) & 0x30) | ((b2 >> 4) & 0xF)
|
||||
c3 = ((b2 << 2) & 0x3C) | ((b3 >> 6) & 0x3)
|
||||
c4 = b3 & 0x3F
|
||||
for c in (c1, c2, c3, c4):
|
||||
out.write(chr(32 + (c & 0x3F)))
|
||||
out.write("\n")
|
||||
out.write("`\nend\n")
|
||||
return out.getvalue()
|
||||
|
||||
def main():
|
||||
ass_file= "/root/VT.PR.WV/test.ass"
|
||||
ass_editor= ASS_Editor(ass_file)
|
||||
# print(ass_editor.subs.fonts_opaque.values())
|
||||
font_path="/root/VT.PR.WV/assets/fonts/BLBL/NotoSansThai-Regular.ttf"
|
||||
with open(font_path, "rb") as f:
|
||||
font_bytes = f.read()
|
||||
uue_text = encode_uu(font_bytes, "NotoSansThai-Regular.ttf")
|
||||
print(uue_text[:200])
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user