Spaces:
Running
Running
Update app-backup1.py
Browse files- app-backup1.py +122 -52
app-backup1.py
CHANGED
@@ -557,36 +557,67 @@ def analyze_scenario(scenario):
|
|
557 |
{"role": "user", "content": f"""
|
558 |
λ€μ μ€ν¬λ¦½νΈμ λΆμκΈ°μ κ°μ±μ ννν μ μλ λ°°κ²½ μμ ν둬ννΈλ₯Ό μμ±ν΄μ£ΌμΈμ:
|
559 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
560 |
{scenario}
|
561 |
|
562 |
κ° μΉμ
λ³λ‘ μ§μ μ μΈ μ ν λ¬μ¬λ νΌνκ³ , μ€ν¬λ¦½νΈμ κ°μ±μ νννλ λ°°κ²½ μμμ μ§μ€ν΄μ£ΌμΈμ."""},
|
563 |
]
|
564 |
|
565 |
-
|
566 |
response = client.chat.completions.create(
|
567 |
model="gpt-4-1106-preview",
|
568 |
messages=messages,
|
569 |
max_tokens=2000,
|
570 |
)
|
571 |
-
|
572 |
|
573 |
-
#
|
574 |
-
|
575 |
current_section = ""
|
576 |
-
for line in
|
577 |
-
if line.strip():
|
578 |
-
if
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
if current_section:
|
585 |
-
|
586 |
|
587 |
-
|
588 |
-
|
589 |
-
|
|
|
|
|
|
|
590 |
except Exception as e:
|
591 |
print(f"Error during scenario analysis: {e}")
|
592 |
return ["Error occurred during analysis"] * 5
|
@@ -612,7 +643,6 @@ def generate_section_video(prompt, preset, section_number=1, base_seed=171198, p
|
|
612 |
print(f"Error in section {section_number}: {e}")
|
613 |
raise gr.Error(f"μΉμ
{section_number} μμ± μ€ μ€λ₯: {str(e)}")
|
614 |
|
615 |
-
|
616 |
# κ°λ³ μΉμ
ν둬ννΈ μμ± ν¨μ μΆκ°
|
617 |
def generate_single_section_prompt(scenario, section_number):
|
618 |
"""κ°λ³ μΉμ
μ λν ν둬ννΈ μμ±"""
|
@@ -683,13 +713,50 @@ def combine_videos(video_paths, output_path):
|
|
683 |
|
684 |
def merge_section_videos(section1, section2, section3, section4, section5):
|
685 |
"""μΉμ
λΉλμ€λ€μ νλλ‘ κ²°ν©"""
|
686 |
-
videos = [
|
687 |
|
688 |
-
|
689 |
-
|
|
|
|
|
|
|
|
|
690 |
|
691 |
-
|
692 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
693 |
|
694 |
|
695 |
# Gradio Interface Definition
|
@@ -973,6 +1040,39 @@ with gr.Blocks(theme=gr.themes.Soft()) as iface:
|
|
973 |
]
|
974 |
)
|
975 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
976 |
# μΉμ
μμ± μ΄λ²€νΈ νΈλ€λ¬
|
977 |
section1_generate.click(
|
978 |
fn=generate_section_video,
|
@@ -1011,36 +1111,6 @@ with gr.Blocks(theme=gr.themes.Soft()) as iface:
|
|
1011 |
|
1012 |
|
1013 |
|
1014 |
-
# μΉμ
μμ± μ΄λ²€νΈ νΈλ€λ¬
|
1015 |
-
section1_generate.click(
|
1016 |
-
fn=lambda p, pr: generate_section_video(p, pr, 1),
|
1017 |
-
inputs=[section1_prompt, scenario_preset],
|
1018 |
-
outputs=section1_video
|
1019 |
-
)
|
1020 |
-
|
1021 |
-
section2_generate.click(
|
1022 |
-
fn=lambda p, pr: generate_section_video(p, pr, 2),
|
1023 |
-
inputs=[section2_prompt, scenario_preset],
|
1024 |
-
outputs=section2_video
|
1025 |
-
)
|
1026 |
-
|
1027 |
-
section3_generate.click(
|
1028 |
-
fn=lambda p, pr: generate_section_video(p, pr, 3),
|
1029 |
-
inputs=[section3_prompt, scenario_preset],
|
1030 |
-
outputs=section3_video
|
1031 |
-
)
|
1032 |
-
|
1033 |
-
section4_generate.click(
|
1034 |
-
fn=lambda p, pr: generate_section_video(p, pr, 4),
|
1035 |
-
inputs=[section4_prompt, scenario_preset],
|
1036 |
-
outputs=section4_video
|
1037 |
-
)
|
1038 |
-
|
1039 |
-
section5_generate.click(
|
1040 |
-
fn=lambda p, pr: generate_section_video(p, pr, 5),
|
1041 |
-
inputs=[section5_prompt, scenario_preset],
|
1042 |
-
outputs=section5_video
|
1043 |
-
)
|
1044 |
|
1045 |
|
1046 |
# μ΄λ²€νΈ νΈλ€λ¬ μΆκ°
|
|
|
557 |
{"role": "user", "content": f"""
|
558 |
λ€μ μ€ν¬λ¦½νΈμ λΆμκΈ°μ κ°μ±μ ννν μ μλ λ°°κ²½ μμ ν둬ννΈλ₯Ό μμ±ν΄μ£ΌμΈμ:
|
559 |
|
560 |
+
μ£Όμ΄μ§ μ€ν¬λ¦½νΈμ λΆμκΈ°μ λ§₯λ½μ μκ°μ λ°°κ²½μΌλ‘ νννλ, λ€μ μμΉμ λ°λμ μ€μνμΈμ:
|
561 |
+
|
562 |
+
1. μ νμ΄λ μλΉμ€λ₯Ό μ§μ μ μΌλ‘ λ¬μ¬νμ§ λ§ κ²
|
563 |
+
2. μ€ν¬λ¦½νΈμ κ°μ±κ³Ό ν€μ€λ§€λλ₯Ό νννλ λ°°κ²½ μμμ μ§μ€ν κ²
|
564 |
+
3. 5κ° μΉμ
μ΄ νλμ μ΄μΌκΈ°μ²λΌ μμ°μ€λ½κ² μ°κ²°λλλ‘ ν κ²
|
565 |
+
4. μΆμμ μ΄κ³ μμ μ μΈ μκ° ννμ νμ©ν κ²
|
566 |
+
|
567 |
+
κ° μΉμ
λ³ ν둬ννΈ μμ± κ°μ΄λ:
|
568 |
+
1. λ°°κ²½ λ° νμμ±: μ£Όμ μ μ λ°μ μΈ λΆμκΈ°λ₯Ό νννλ λ°°κ²½ μ¬
|
569 |
+
2. ν₯λ―Έ μ λ°: κΈ΄μ₯κ°μ΄λ κ°λ±μ μμνλ λΆμκΈ° μλ λ°°κ²½
|
570 |
+
3. ν΄κ²°μ±
μ μ: ν¬λ§μ μ΄κ³ λ°μ ν€μ λ°°κ²½ μ ν
|
571 |
+
4. λ³Έλ‘ : μμ κ° μκ³ μ λ’°λλ₯Ό λμ΄λ λ°°κ²½
|
572 |
+
5. κ²°λ‘ : μν©νΈ μλ λ§λ¬΄λ¦¬λ₯Ό μν μλμ μΈ λ°°κ²½
|
573 |
+
|
574 |
+
λͺ¨λ μΉμ
μ΄ μΌκ΄λ μ€νμΌκ³Ό ν€μ μ μ§νλ©΄μλ μμ°μ€λ½κ² μ΄μ΄μ§λλ‘ κ΅¬μ±νμΈμ.
|
575 |
+
|
576 |
+
κ° μΉμ
μ ν둬ννΈ μμ±μ λ°λμ λ€μ ꡬ쑰μ λ§κ² κ°μ ν΄μ£ΌμΈμ:
|
577 |
+
1. μ£Όμ λμμ λͺ
νν ν λ¬Έμ₯μΌλ‘ μμ
|
578 |
+
2. ꡬ체μ μΈ λμκ³Ό μ μ€μ²λ₯Ό μκ° μμλλ‘ μ€λͺ
|
579 |
+
3. μΊλ¦ν°/κ°μ²΄μ μΈλͺ¨λ₯Ό μμΈν λ¬μ¬
|
580 |
+
4. λ°°κ²½κ³Ό νκ²½ μΈλΆ μ¬νμ ꡬ체μ μΌλ‘ ν¬ν¨
|
581 |
+
5. μΉ΄λ©λΌ κ°λμ μμ§μμ λͺ
μ
|
582 |
+
6. μ‘°λͺ
κ³Ό μμμ μμΈν μ€λͺ
|
583 |
+
7. λ³νλ κ°μμ€λ¬μ΄ μ¬κ±΄μ μμ°μ€λ½κ² ν¬ν¨
|
584 |
+
λͺ¨λ μ€λͺ
μ νλμ μμ°μ€λ¬μ΄ λ¬Έλ¨μΌλ‘ μμ±νκ³ ,
|
585 |
+
촬μ κ°λ
μ΄ μ΄¬μ λͺ©λ‘μ μ€λͺ
νλ κ²μ²λΌ ꡬ체μ μ΄κ³ μκ°μ μΌλ‘ μμ±νμΈμ.
|
586 |
+
200λ¨μ΄λ₯Ό λμ§ μλλ‘ νλ, μ΅λν μμΈνκ² μμ±νμΈμ.
|
587 |
+
|
588 |
{scenario}
|
589 |
|
590 |
κ° μΉμ
λ³λ‘ μ§μ μ μΈ μ ν λ¬μ¬λ νΌνκ³ , μ€ν¬λ¦½νΈμ κ°μ±μ νννλ λ°°κ²½ μμμ μ§μ€ν΄μ£ΌμΈμ."""},
|
591 |
]
|
592 |
|
593 |
+
|
594 |
response = client.chat.completions.create(
|
595 |
model="gpt-4-1106-preview",
|
596 |
messages=messages,
|
597 |
max_tokens=2000,
|
598 |
)
|
599 |
+
content = response.choices[0].message.content.strip()
|
600 |
|
601 |
+
# μΉμ
λ³λ‘ λΆλ¦¬
|
602 |
+
sections = []
|
603 |
current_section = ""
|
604 |
+
for line in content.split('\n'):
|
605 |
+
if line.strip().startswith(('1.', '2.', '3.', '4.', '5.')):
|
606 |
+
if current_section:
|
607 |
+
sections.append(current_section.strip())
|
608 |
+
current_section = line
|
609 |
+
else:
|
610 |
+
current_section += "\n" + line
|
611 |
+
|
612 |
if current_section:
|
613 |
+
sections.append(current_section.strip())
|
614 |
|
615 |
+
# λΆμ‘±ν μΉμ
μ±μ°κΈ°
|
616 |
+
while len(sections) < 5:
|
617 |
+
sections.append("μΆκ° μΉμ
μ΄ νμν©λλ€.")
|
618 |
+
|
619 |
+
return sections[:5]
|
620 |
+
|
621 |
except Exception as e:
|
622 |
print(f"Error during scenario analysis: {e}")
|
623 |
return ["Error occurred during analysis"] * 5
|
|
|
643 |
print(f"Error in section {section_number}: {e}")
|
644 |
raise gr.Error(f"μΉμ
{section_number} μμ± μ€ μ€λ₯: {str(e)}")
|
645 |
|
|
|
646 |
# κ°λ³ μΉμ
ν둬ννΈ μμ± ν¨μ μΆκ°
|
647 |
def generate_single_section_prompt(scenario, section_number):
|
648 |
"""κ°λ³ μΉμ
μ λν ν둬ννΈ μμ±"""
|
|
|
713 |
|
714 |
def merge_section_videos(section1, section2, section3, section4, section5):
|
715 |
"""μΉμ
λΉλμ€λ€μ νλλ‘ κ²°ν©"""
|
716 |
+
videos = []
|
717 |
|
718 |
+
# κ° μΉμ
λΉλμ€ νμΈ λ° μ²λ¦¬
|
719 |
+
for i, video in enumerate([section1, section2, section3, section4, section5], 1):
|
720 |
+
if video and os.path.exists(video):
|
721 |
+
videos.append(video)
|
722 |
+
else:
|
723 |
+
raise gr.Error(f"μΉμ
{i}μ μμμ΄ μκ±°λ μ κ·Όν μ μμ΅λλ€.")
|
724 |
|
725 |
+
if not videos:
|
726 |
+
raise gr.Error("κ²°ν©ν μμμ΄ μμ΅λλ€.")
|
727 |
+
|
728 |
+
try:
|
729 |
+
output_path = tempfile.mktemp(suffix=".mp4")
|
730 |
+
|
731 |
+
# 첫 λ²μ§Έ λΉλμ€μ μμ± κ°μ Έμ€κΈ°
|
732 |
+
cap = cv2.VideoCapture(videos[0])
|
733 |
+
fps = int(cap.get(cv2.CAP_PROP_FPS))
|
734 |
+
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
|
735 |
+
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
|
736 |
+
cap.release()
|
737 |
+
|
738 |
+
# μΆλ ₯ λΉλμ€ μ€μ
|
739 |
+
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
|
740 |
+
out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))
|
741 |
+
|
742 |
+
# κ° λΉλμ€ μμ°¨μ μΌλ‘ κ²°ν©
|
743 |
+
for video_path in videos:
|
744 |
+
cap = cv2.VideoCapture(video_path)
|
745 |
+
while True:
|
746 |
+
ret, frame = cap.read()
|
747 |
+
if not ret:
|
748 |
+
break
|
749 |
+
# νμν κ²½μ° νλ μ ν¬κΈ° μ‘°μ
|
750 |
+
if frame.shape[:2] != (height, width):
|
751 |
+
frame = cv2.resize(frame, (width, height))
|
752 |
+
out.write(frame)
|
753 |
+
cap.release()
|
754 |
+
|
755 |
+
out.release()
|
756 |
+
return output_path
|
757 |
+
|
758 |
+
except Exception as e:
|
759 |
+
raise gr.Error(f"λΉλμ€ κ²°ν© μ€ μ€λ₯ λ°μ: {e}")
|
760 |
|
761 |
|
762 |
# Gradio Interface Definition
|
|
|
1040 |
]
|
1041 |
)
|
1042 |
|
1043 |
+
|
1044 |
+
# κ° μΉμ
μ ν둬ννΈ μ¬μμ± μ΄λ²€νΈ νΈλ€λ¬ μΆκ°
|
1045 |
+
section1_regenerate.click(
|
1046 |
+
fn=lambda x: generate_single_section_prompt(x, 1),
|
1047 |
+
inputs=[scenario_input],
|
1048 |
+
outputs=section1_prompt
|
1049 |
+
)
|
1050 |
+
|
1051 |
+
section2_regenerate.click(
|
1052 |
+
fn=lambda x: generate_single_section_prompt(x, 2),
|
1053 |
+
inputs=[scenario_input],
|
1054 |
+
outputs=section2_prompt
|
1055 |
+
)
|
1056 |
+
|
1057 |
+
section3_regenerate.click(
|
1058 |
+
fn=lambda x: generate_single_section_prompt(x, 3),
|
1059 |
+
inputs=[scenario_input],
|
1060 |
+
outputs=section3_prompt
|
1061 |
+
)
|
1062 |
+
|
1063 |
+
section4_regenerate.click(
|
1064 |
+
fn=lambda x: generate_single_section_prompt(x, 4),
|
1065 |
+
inputs=[scenario_input],
|
1066 |
+
outputs=section4_prompt
|
1067 |
+
)
|
1068 |
+
|
1069 |
+
section5_regenerate.click(
|
1070 |
+
fn=lambda x: generate_single_section_prompt(x, 5),
|
1071 |
+
inputs=[scenario_input],
|
1072 |
+
outputs=section5_prompt
|
1073 |
+
)
|
1074 |
+
|
1075 |
+
|
1076 |
# μΉμ
μμ± μ΄λ²€νΈ νΈλ€λ¬
|
1077 |
section1_generate.click(
|
1078 |
fn=generate_section_video,
|
|
|
1111 |
|
1112 |
|
1113 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1114 |
|
1115 |
|
1116 |
# μ΄λ²€νΈ νΈλ€λ¬ μΆκ°
|