TDN-M commited on
Commit
4471c86
·
verified ·
1 Parent(s): e816a63

Update utils.py

Browse files
Files changed (1) hide show
  1. utils.py +7 -11
utils.py CHANGED
@@ -1,25 +1,22 @@
1
  import glob
2
  import os
3
  import random
4
-
5
  import requests
6
  from loguru import logger
7
  from moviepy.editor import AudioFileClip, VideoFileClip, concatenate_videoclips
8
 
9
- def get_pexels_image(query):
10
  """
11
- Lấy ảnh từ Pexels API dựa trên query.
12
  """
13
  api_key = os.getenv('Pexels_API_KEY')
14
- # Thêm từ khóa "Vietnamese" vào truy vấn và tăng số lượng ảnh lên 30
15
- url = f"https://api.pexels.com/v1/search?query={query}%20Vietnamese&per_page=30"
16
  headers = {"Authorization": api_key}
17
  response = requests.get(url, headers=headers)
18
  if response.status_code == 200:
19
  data = response.json()
20
- if data['photos']:
21
- # Chọn ngẫu nhiên một ảnh từ kết quả
22
- return random.choice(data['photos'])['src']['medium']
23
  return None
24
 
25
  def get_bgm_file(bgm_type: str = "random", bgm_file: str = ""):
@@ -30,7 +27,7 @@ def get_bgm_file(bgm_type: str = "random", bgm_file: str = ""):
30
  return ""
31
  if bgm_type == "random":
32
  suffix = "*.mp3"
33
- song_dir = utils.song_dir() # Đảm bảo utils.song_dir() trả về đường dẫn đúng
34
  files = glob.glob(os.path.join(song_dir, suffix))
35
  return random.choice(files) if files else ""
36
 
@@ -60,6 +57,7 @@ def combine_videos(combined_video_path: str,
60
 
61
  for video_path in video_paths:
62
  clip = VideoFileClip(video_path).without_audio()
 
63
  if (audio_duration - video_duration) < clip.duration:
64
  clip = clip.subclip(0, (audio_duration - video_duration))
65
  elif max_clip_duration < clip.duration:
@@ -87,7 +85,6 @@ def generate_video(video_paths: list[str],
87
 
88
  combine_videos(combined_video_path, video_paths, audio_path)
89
 
90
- # Add audio to the final video
91
  final_video = VideoFileClip(combined_video_path)
92
  audio_clip = AudioFileClip(audio_path)
93
  final_video = final_video.set_audio(audio_clip)
@@ -95,7 +92,6 @@ def generate_video(video_paths: list[str],
95
  logger.info(f"Writing final video to {output_file}")
96
  final_video.write_videofile(output_file, audio_codec="aac")
97
 
98
- # Remove temporary video
99
  os.remove(combined_video_path)
100
  logger.success(f"Completed generating video: {output_file}")
101
  return output_file
 
1
  import glob
2
  import os
3
  import random
 
4
  import requests
5
  from loguru import logger
6
  from moviepy.editor import AudioFileClip, VideoFileClip, concatenate_videoclips
7
 
8
+ def get_pexels_video(query):
9
  """
10
+ Lấy video từ Pexels API dựa trên query.
11
  """
12
  api_key = os.getenv('Pexels_API_KEY')
13
+ url = f"https://api.pexels.com/videos/search?query={query}&per_page=30"
 
14
  headers = {"Authorization": api_key}
15
  response = requests.get(url, headers=headers)
16
  if response.status_code == 200:
17
  data = response.json()
18
+ if data['videos']:
19
+ return random.choice(data['videos'])['video_files'][0]['link']
 
20
  return None
21
 
22
  def get_bgm_file(bgm_type: str = "random", bgm_file: str = ""):
 
27
  return ""
28
  if bgm_type == "random":
29
  suffix = "*.mp3"
30
+ song_dir = "/data/bg-music" # Thay thế bằng đường dẫn thực tế
31
  files = glob.glob(os.path.join(song_dir, suffix))
32
  return random.choice(files) if files else ""
33
 
 
57
 
58
  for video_path in video_paths:
59
  clip = VideoFileClip(video_path).without_audio()
60
+ # Cắt video nếu dài hơn thời lượng tối đa
61
  if (audio_duration - video_duration) < clip.duration:
62
  clip = clip.subclip(0, (audio_duration - video_duration))
63
  elif max_clip_duration < clip.duration:
 
85
 
86
  combine_videos(combined_video_path, video_paths, audio_path)
87
 
 
88
  final_video = VideoFileClip(combined_video_path)
89
  audio_clip = AudioFileClip(audio_path)
90
  final_video = final_video.set_audio(audio_clip)
 
92
  logger.info(f"Writing final video to {output_file}")
93
  final_video.write_videofile(output_file, audio_codec="aac")
94
 
 
95
  os.remove(combined_video_path)
96
  logger.success(f"Completed generating video: {output_file}")
97
  return output_file