Merged in reenable-heygen (pull request #35)

Update video generation to use heygen.

Approved-by: carlos.mesquita
This commit is contained in:
Cristiano Ferreira
2024-11-08 18:10:58 +00:00
3 changed files with 10 additions and 12 deletions

View File

@@ -48,7 +48,7 @@ class DependencyInjector:
elai_conf = json.load(file)
self._container.vid_gen = providers.Factory(
ELAI, client=self._container.http_client, token=os.getenv("ELAI_TOKEN"), conf=elai_conf
Heygen, client=self._container.http_client, token=os.getenv("HEY_GEN_TOKEN")
)
self._container.ai_detector = providers.Factory(
GPTZero, client=self._container.http_client, gpt_zero_key=os.getenv("GPT_ZERO_API_KEY")

View File

@@ -417,14 +417,14 @@ class SpeakingService(ISpeakingService):
return response["fixed_text"]
async def create_videos_and_save_to_db(self, exercises, template, req_id):
template = await self._create_video_per_part(exercises, template, 1)
template = await self._create_video_per_part(exercises, template, 2)
template = await self._create_video_per_part(exercises, template, 3)
template = await self._create_video_per_part(exercises, template, 1, req_id)
template = await self._create_video_per_part(exercises, template, 2, req_id)
template = await self._create_video_per_part(exercises, template, 3, req_id)
await self._document_store.save_to_db_with_id("speaking", template, req_id)
self._logger.info(f'Saved speaking to DB with id {req_id} : {str(template)}')
async def _create_video_per_part(self, exercises: List[Dict], template: Dict, part: int):
async def _create_video_per_part(self, exercises: List[Dict], template: Dict, part: int, req_id: str):
avatar = (random.choice(list(ELAIAvatars))).name
template_index = part - 1
@@ -441,7 +441,8 @@ class SpeakingService(ISpeakingService):
result = await self._create_video(
question,
avatar,
f'Failed to create video for part {part} question: {str(exercise["question"])}'
f'Failed to create video for part {part} question: {str(exercise["question"])}',
req_id
)
if result is not None:
video = {
@@ -588,8 +589,8 @@ class SpeakingService(ISpeakingService):
response["id"] = str(uuid.uuid4())
return response
async def _create_video(self, question: str, avatar: str, error_message: str):
result = await self._vid_gen.create_video(question, avatar)
async def _create_video(self, question: str, avatar: str, error_message: str, title: str):
result = await self._vid_gen.create_video(question, avatar, title)
if result is not None:
sound_file_path = FilePaths.VIDEO_FILES_PATH + result
firebase_file_path = FilePaths.FIREBASE_SPEAKING_VIDEO_FILES_PATH + result

View File

@@ -26,10 +26,9 @@ class Heygen(IVideoGeneratorService):
self._logger = logging.getLogger(__name__)
"""
async def create_video(self, text: str, avatar: str):
async def create_video(self, text: str, avatar: str, title="video_title": str):
pass
# POST TO CREATE VIDEO
"""
create_video_url = 'https://api.heygen.com/v2/template/' + avatar + '/generate'
data = {
"test": False,
@@ -89,5 +88,3 @@ class Heygen(IVideoGeneratorService):
else:
self._logger.error(f"Failed to download file. Status code: {response.status_code}")
return None
"""