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") 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 50 words: ========= """+ context +""" ========= Answer:""" if (lang=="ru"):prompt = """Я хочу, чтобы вы выступили в роли автора контента, который взят с транскрипт youtube видео, его нужно преобразовать в читаемый вид. Резюмируйте следующий текст в 40 слов: ========= """+ context +""" ========= Ответ:""" if (lang=="uk"):prompt = """Я хочу, щоб ви виступили в ролі автора контенту, який узятий з транскрипту youtube відео, його треба перетворити у читабельний вигляд. Резюмуйте наступний текст у 50 слів: ========= """+ context +""" ========= Ответ:""" return prompt def convert_seconds(seconds): seconds = round(seconds) minutes = seconds // 60 hours = minutes // 60 minutes = minutes % 60 seconds = seconds % 60 if (int(hours) > 0 ): time_m= str(hours) + ":" + str(minutes) + ":" + str(seconds) else : time_m = str(minutes) + ":" + str(seconds) return time_m def get_transcript(video_id, lang_video, chunk_size): global final_string transcript_list = YouTubeTranscriptApi.list_transcripts(video_id) t = YouTubeTranscriptApi.get_transcript(video_id,languages=[lang_video]) finalString = "" result_text_duration=[] text_duration="" prev_start=0.0 for item in t: text = item['text'] finalString += text + " " text_duration = text_duration + " " + item['text'] if (len(text_duration)>chunk_size): new_item = {'text': prev_text_duration, 'start': prev_start} result_text_duration.append(new_item) text_duration="" prev_start=item['start'] prev_text_duration=text_duration new_item = {'text': text_duration, 'start': prev_start} result_text_duration.append(new_item) return result_text_duration 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_html(video_url, request: gr.Request): my_v = "" if (video_url =="") and (my_v == ""): video_url ="https://youtube.com/watch?v=PQBYZDyDBrY" #похоже ли video_url на номальну ссылку if "youtube.com/watch?v=" in video_url: x=111 else: return "Неверный URL" #Пробуем извлеч video_id пока на английском video_id = video_url[-11:] html_embed='' return html_embed def generate(video_url, request: gr.Request): my_v = "" #Если две переменные пустые, то показываем базовую страницу с рекламой if (video_url =="") and (my_v == ""): html_embed='
" + time_url +" " + gpt_api (input_gpt)+"
" html_content="