Youtube-QNA / utils.py
Anustup's picture
Update utils.py
789c9f4 verified
from youtube_transcript_api import YouTubeTranscriptApi
from constants import OPENAI_API_KEY, OPENAI_API_BASE_URL, OPEN_AI_MODEL
import json
import requests
def create_transcript_from_youtube_api(youtube_video_id):
if not youtube_video_id:
return {"success": False, "error": "Please pass your youtube video-id"}
try:
list_transcript = YouTubeTranscriptApi.get_transcript(youtube_video_id)
transcript = ' '.join(entry['text'] for entry in list_transcript)
return {"success": True, "data": transcript}
except Exception as e:
return {"success": False, "error": f"Transcription failed due to : {e}"}
def create_open_ai_query(input_query, system_message=None, model_engine=OPEN_AI_MODEL):
openai_url = f"{OPENAI_API_BASE_URL}/chat/completions"
headers = {'Authorization': f'Bearer {OPENAI_API_KEY}', 'Content-Type': 'application/json'}
messages = []
if system_message:
messages.append({"role": "system", "content": system_message})
messages.append({"role": "user", "content": input_query})
payload = {
'model': model_engine,
'messages': messages
}
response = requests.post(openai_url, headers=headers, data=json.dumps(payload))
if response.status_code == 200 and 'choices' in response.json():
content_text = response.json()['choices'][0]['message']['content'].strip()
return {"success": True, "data": content_text, "response_json": response.json()}
return {"success": False, "error": response.text}