import os import openai import gradio as gr from youtube_transcript_api import YouTubeTranscriptApi from urllib.parse import urlparse, parse_qs from requests.structures import CaseInsensitiveDict openai.api_key = os.getenv("OPENAI_KEY") google_analtycs=""" """ def Prompt_T(context, lang): prompt = """I want you to act as a content writer who is working with youtube video transcript. Summarise the following text in 70 words: ========= """+ context +""" ========= Answer:""" if (lang=="ru"):prompt = """Я хочу, чтобы вы выступили в роли автора контента, который взят с транскрипт youtube видео, его нужно преобразовать в читаемый вид. Резюмируйте следующий текст в 50 слов: ========= """+ context +""" ========= Ответ:""" if (lang=="uk"):prompt = """Я хочу, щоб ви виступили в ролі автора контенту, який узятий з транскрипту youtube відео, його треба перетворити у читабельний вигляд. Резюмуйте наступний текст у 50 слів: ========= """+ context +""" ========= Ответ:""" return prompt def split_string(string, chunk_size): return [string[i:i+chunk_size] for i in range(0, len(string), chunk_size)] def gpt_api (input_text): completion = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": input_text} ] ) response = completion.choices[0].message.content return response def generate(video_url, request: gr.Request): my_v = "" #Если две переменные пустые, то показываем базовую страницу с рекламой if (video_url =="") and (my_v == ""): html_embed='
' summarize="" return summarize, html_embed #похоже ли video_url на номальну ссылку if "youtube.com/watch?v=" in video_url: x=111 else: return "Неверный URL", "Ошибка" #Пробуем извлеч video_id пока на английском video_id = video_url[-11:] try: transcript_list = YouTubeTranscriptApi.list_transcripts(video_id) except Exception as e: return "No access for transcript ", "Error transcript_list" # iterate over all available transcripts lang_video="en" for transcript in transcript_list: if (transcript.is_generated == True): lang_video = transcript.language_code print ("transcript.language_code=", transcript.language_code) try: t = YouTubeTranscriptApi.get_transcript(video_id,languages=[lang_video]) # do something with the transcript except Exception as e: return "No access for transcript", "Error transcript" finalString = "" for item in t: text = item['text'] finalString += text + " " print("Transcript:",finalString) print("Transcript lenght:",len(finalString)) print ("===============================================") input_string = finalString chunk_size = 12000 if (lang_video=="ru"): chunk_size = 5000 if (lang_video=="uk"): chunk_size = 5000 result_list = split_string(input_string, chunk_size) final_answer_gpt="" count= 0 print("++++++++++++++++++++++++++++++++++++++") for item in result_list: print(item) for item in result_list: count = count +1 context = item input_gpt = Prompt_T(context,lang_video) final_answer_gpt = final_answer_gpt +"" + gpt_api (input_gpt)+"
" html_embed='' html_content="