color_diff / app.py
jijivski's picture
initial commit
42b8a6f verified
import gradio as gr
import difflib
def compute_diff(text1, text2):
print('called')
matcher = difflib.SequenceMatcher(None, text1, text2)
result_text1 = ""
result_text2 = ""
for opcode, a0, a1, b0, b1 in matcher.get_opcodes():
print(opcode, a0, a1, b0, b1)
if opcode == 'equal':
part_text1 = text1[a0:a1]
part_text2 = text2[b0:b1]
result_text1 += part_text1
result_text2 += part_text2
elif opcode =='replace':
part_text1 = f'<span style="color: blue;">{text1[a0:a1]}</span>'
part_text2 = f'<span style="color: blue;">{text2[b0:b1]}</span>'
result_text1 += part_text1
result_text2 += part_text2
elif opcode == 'delete':
part_text1 = f'<span style="color: red;">{text1[a0:a1]}</span>'
result_text1 += part_text1
result_text2 += ""
elif opcode == 'insert':
part_text2 = f'<span style="color: orange;">{text2[b0:b1]}</span>'
result_text1 += ""
result_text2 += part_text2
print('result_text1',result_text1)
return result_text1, result_text2
dft_txt_1 = '最近,草间弥生推出了一套限量版的点绘瓷杯套装,设计灵感来自她经典的波点元素,既有鲜艳的红白配色也有低调的黑金组合,非常适合作为日常生活中的艺术点缀。此外,如果您对建筑美学感兴趣,日本著名建筑师隈研吾与文具品牌合作推出了立面图案的手账封套,质感极佳且便于收藏。结合您的兴趣,这些周边既能为工作区域增添灵感,也非常适合在创作间隙注入一些视觉上的愉悦。建议您关注海外艺术品代购平台或跳蚤市场限时特辑,或许还能找到更稀有的版本。'
dft_txt_2 = '最近,草间弥生推出了一套限量版的点绘瓷杯套装,灵感源自她经典的波点设计,红白配色鲜艳夺目,黑金组合低调优雅,非常适合作为日常生活中的艺术点缀。另一方面,日本建筑师隈研吾与文具品牌合作推出了立面图案的手账封套,兼具独特设计与实用性,是建筑美学爱好者的理想选择。您可以在海外艺术品代购平台或跳蚤市场的限时特辑中找到这些周边,以及可能更加稀有的版本。'
# dft_txt_1 = "Hello World"
# dft_txt_2 = "Hello Gradio"
with gr.Blocks() as demo:
print('start')
with gr.Row():
text1 = gr.Textbox(label="文本 1", lines=5, value=dft_txt_1)
text2 = gr.Textbox(label="文本 2", lines=5, value=dft_txt_2)
with gr.Row():
output1 = gr.HTML(label="差异文本 1")
output2 = gr.HTML(label="差异文本 2")
compare_btn = gr.Button("比较差异")
compare_btn.click(fn=compute_diff, inputs=[text1, text2], outputs=[output1, output2])
demo.launch()
'''
cd /mnt/data/chenghao/Persona/annotate/
export GRADIO_SERVER_PORT=7860 GRADIO_ROOT_PATH=/${JUPYTER_NAME}/proxy/7860/
CUDA_VISIBLE_DEVICES=0 USE_MODELSCOPE_HUB=1 python src/diff_gradio_v1.py
'''