AZLABS commited on
Commit
378efdd
Β·
verified Β·
1 Parent(s): b4e25f5

Delete app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -129
app.py DELETED
@@ -1,129 +0,0 @@
1
- import os
2
- import logging
3
- import uuid
4
- from gtts import gTTS
5
- import moviepy.editor as mp
6
- import g4f
7
- from g4f import Provider
8
- import urllib.request
9
-
10
- # Set up logging
11
- logging.basicConfig(level=logging.INFO)
12
- logger = logging.getLogger(__name__)
13
-
14
- def generate_image(prompt):
15
- try:
16
- unique_id = uuid.uuid4().hex
17
- safe_prompt = prompt[:30].replace(' ', '_') # Take first 30 chars and make filename safe
18
- image_filename = f"{safe_prompt}_{unique_id}.png"
19
-
20
- response = g4f.Image.create(
21
- prompt=f"{prompt} in comic style",
22
- model="dalle",
23
- provider=Provider.DeepAI
24
- )
25
-
26
- if response:
27
- urllib.request.urlretrieve(response, image_filename)
28
- logger.info(f"βœ… Generated image: {image_filename}")
29
- return image_filename
30
- return None
31
- except Exception as e:
32
- logger.error(f"❌ Error generating image: {e}")
33
- return None
34
-
35
- def generate_audio(text):
36
- try:
37
- unique_id = uuid.uuid4().hex
38
- safe_text = text[:30].replace(' ', '_') # Take first 30 chars and make filename safe
39
- audio_filename = f"{safe_text}_{unique_id}.mp3"
40
-
41
- tts = gTTS(text=text, lang='en')
42
- tts.save(audio_filename)
43
- logger.info(f"βœ… Generated audio: {audio_filename}")
44
- return audio_filename
45
- except Exception as e:
46
- logger.error(f"❌ Error generating audio: {e}")
47
- return None
48
-
49
- def get_images_and_audio(text):
50
- segments = [s.strip() for s in text.split(",,") if s.strip()]
51
- images = []
52
- audio_files = []
53
-
54
- for segment in segments:
55
- image_file = generate_image(segment)
56
- audio_file = generate_audio(segment)
57
-
58
- if image_file and audio_file:
59
- images.append(image_file)
60
- audio_files.append(audio_file)
61
- logger.info(f"βœ… Processed prompt: {segment}, Image: {image_file}, Audio: {audio_file}")
62
-
63
- return images, audio_files
64
-
65
- def create_video_from_images_and_audio(images, audio_files):
66
- try:
67
- if len(images) != len(audio_files):
68
- raise ValueError("Number of images and audio files don't match.")
69
-
70
- clips = []
71
- for img, aud in zip(images, audio_files):
72
- # Create audio clip
73
- audio_clip = mp.AudioFileClip(aud)
74
-
75
- # Create image clip
76
- image_clip = mp.ImageClip(img).set_duration(audio_clip.duration)
77
-
78
- # Combine image and audio
79
- video_clip = image_clip.set_audio(audio_clip)
80
- clips.append(video_clip)
81
-
82
- # Concatenate all clips
83
- final_clip = mp.concatenate_videoclips(clips)
84
-
85
- # Write final video
86
- output_filename = f"output_{uuid.uuid4().hex[:8]}.mp4"
87
- final_clip.write_videofile(output_filename, fps=24)
88
-
89
- # Clean up
90
- final_clip.close()
91
- for clip in clips:
92
- clip.close()
93
-
94
- # Clean up temporary files
95
- for file in images + audio_files:
96
- if os.path.exists(file):
97
- os.remove(file)
98
-
99
- logger.info(f"βœ… Video created successfully: {output_filename}")
100
- return output_filename
101
-
102
- except Exception as e:
103
- logger.error(f"❌ Error: {e}")
104
- return None
105
-
106
- def create_video(text):
107
- try:
108
- # Get images and audio files
109
- images, audio_files = get_images_and_audio(text)
110
-
111
- # Create video
112
- video_file = create_video_from_images_and_audio(images, audio_files)
113
-
114
- return video_file
115
- except Exception as e:
116
- logger.error(f"❌ Error in create_video: {e}")
117
- return None
118
-
119
- if __name__ == "__main__":
120
- # Test the functionality
121
- test_text = """Once upon a time there was a village.,,
122
- One day a visitor came to town.,,
123
- That's okay', said the visitor. 'I will make stone soup for everyone'."""
124
-
125
- result = create_video(test_text)
126
- if result:
127
- print(f"Video created successfully: {result}")
128
- else:
129
- print("Failed to create video")