shooting_format / app.py
dsaigc's picture
Create app.py
bd1ab3b
import re
import gradio as gr
import pandas as pd
def parse_text(txt_file):
# 将上传的文件名作为输入参数
file_name = txt_file.name
filename_with_dot = file_name.rsplit('/', 1)[1]
print(filename_with_dot)
filename = filename_with_dot.split('.', 1)[0]
print(filename)
with open(file_name, "r") as f:
# 读取上传文件中的内容
content = f.read()
# 在这里进行文本解析
lines = content.split("\n")
numbered_lines = [(i + 1, line) for i, line in enumerate(lines)]
# 将解析结果转换为字符串输出
output_str = ""
for num, line in numbered_lines:
output_str += f"{num}. {line}\n"
filename = filename.split('.', 0)[0]
return filename, output_str
def process_text(text):
try:
sentences = re.split(r'\d+\.', text)
except Exception:
try:
sentences = re.split(r'\d+', text)
except Exception:
pass
sentences = [s.strip() for s in sentences if s.strip()]
return sentences
def pd_form(sentences):
rows = []
for i in range(len(sentences)):
row_number = i + 1
description = sentences[i]
row = {
"镜号": row_number,
"画面范例": '',
"时长": '',
"景别": '',
"画面说明": description,
"歌词": '',
"备注": '',
}
rows.append(row)
return rows
def to_excel(t_file):
text_file, name_file = parse_text(t_file)[1], parse_text(t_file)[0]
output_file_name = name_file + '.xlsx'
txt = process_text(text_file)
rows = pd_form(txt)
writer = pd.ExcelWriter(output_file_name, engine='xlsxwriter')
df = pd.DataFrame(rows)
df.to_excel(writer, index=False, sheet_name="Sheet1")
writer.close()
return output_file_name
iface = gr.Interface(
fn=to_excel,
inputs=gr.inputs.File(label="请上传 txt 格式文件"),
outputs=gr.File(label="下载 xlsx 格式文档"),
title="txt - xlsx 分镜格式转换器",
description="说明: 如果转换不成功,请重试几次")
iface.launch()