LaoCzi commited on
Commit
6d1c02f
1 Parent(s): 7693546

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -36
app.py CHANGED
@@ -7,28 +7,15 @@ from requests.structures import CaseInsensitiveDict
7
 
8
  openai.api_key = os.getenv("OPENAI_KEY")
9
 
10
- google_analtycs="""
11
- <!-- Google tag (gtag.js) -->
12
- <script async src="https://www.googletagmanager.com/gtag/js?id=G-S9JEXRFQJF"></script>
13
- <script>
14
- window.dataLayer = window.dataLayer || [];
15
- function gtag(){dataLayer.push(arguments);}
16
- gtag('js', new Date());
17
-
18
- gtag('config', 'G-S9JEXRFQJF');
19
- </script>
20
- """
21
-
22
-
23
  def Prompt_T(context, lang):
24
 
25
- prompt = """I want you to act as a content writer who is working with youtube video transcript. Summarise the following text in 70 words:
26
  =========
27
  """+ context +"""
28
  =========
29
  Answer:"""
30
 
31
- if (lang=="ru"):prompt = """Я хочу, чтобы вы выступили в роли автора контента, который взят с транскрипт youtube видео, его нужно преобразовать в читаемый вид. Резюмируйте следующий текст в 50 слов:
32
  =========
33
  """+ context +"""
34
  =========
@@ -55,42 +42,62 @@ def gpt_api (input_text):
55
  response = completion.choices[0].message.content
56
  return response
57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  def generate(video_url, request: gr.Request):
59
  my_v = ""
60
 
 
61
  #Если две переменные пустые, то показываем базовую страницу с рекламой
62
  if (video_url =="") and (my_v == ""):
63
- html_embed='<div></div>'
64
  summarize=""
65
- return summarize, html_embed
66
 
67
  #похоже ли video_url на номальну ссылку
68
  if "youtube.com/watch?v=" in video_url: x=111
69
- else: return "Неверный URL", "Ошибка"
70
-
71
  #Пробуем извлеч video_id пока на английском
72
  video_id = video_url[-11:]
 
 
73
 
74
  try:
75
  transcript_list = YouTubeTranscriptApi.list_transcripts(video_id)
76
  except Exception as e:
77
- return "No access for transcript ", "Error transcript_list"
78
-
79
- # iterate over all available transcripts
80
  lang_video="en"
81
  for transcript in transcript_list:
82
  if (transcript.is_generated == True): lang_video = transcript.language_code
83
  print ("transcript.language_code=", transcript.language_code)
84
-
85
  try:
86
  t = YouTubeTranscriptApi.get_transcript(video_id,languages=[lang_video])
87
  # do something with the transcript
88
  except Exception as e:
89
- return "No access for transcript", "Error transcript"
90
-
 
91
  finalString = ""
92
  for item in t:
93
  text = item['text']
 
94
  finalString += text + " "
95
 
96
 
@@ -99,10 +106,9 @@ def generate(video_url, request: gr.Request):
99
  print ("===============================================")
100
  input_string = finalString
101
 
102
-
103
- chunk_size = 12000
104
- if (lang_video=="ru"): chunk_size = 5000
105
- if (lang_video=="uk"): chunk_size = 5000
106
 
107
  result_list = split_string(input_string, chunk_size)
108
  final_answer_gpt=""
@@ -118,11 +124,12 @@ def generate(video_url, request: gr.Request):
118
  context = item
119
  input_gpt = Prompt_T(context,lang_video)
120
  final_answer_gpt = final_answer_gpt +"<p>" + gpt_api (input_gpt)+"</p>"
 
 
121
 
122
-
123
- html_embed='<iframe width="450" height="250" src="https://www.youtube.com/embed/'+ video_id +'" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>'
124
  html_content="<h6>"+"<br>"+final_answer_gpt+"</h6>"
125
- return html_content, html_embed
126
 
127
  title = "YouTube Summorize (en,ua,ru)"
128
  css="""
@@ -130,7 +137,7 @@ footer {visibility: hidden}
130
  .gradio-container {padding-top: 100px}
131
  """
132
  with gr.Blocks(css=css, title=title) as demo:
133
- gr.HTML("<h1>A simple way to summarise the YouTube video </h1>")
134
  with gr.Row():
135
  with gr.Column():
136
  input_d = gr.Textbox(label="YouTube video URL", placeholder="https://www.youtube.com/watch?v=XXXXXXXX", value="")
@@ -138,7 +145,10 @@ with gr.Blocks(css=css, title=title) as demo:
138
  dt_2 = gr.outputs.HTML()
139
  dt_1 = gr.outputs.HTML()
140
  dt =[dt_1, dt_2]
141
- greet_btn.click(generate, inputs=input_d, outputs=dt)
142
- demo.load(generate, inputs=input_d, outputs=dt)
 
 
143
 
144
- demo.launch(share=False, debug=True )
 
 
7
 
8
  openai.api_key = os.getenv("OPENAI_KEY")
9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  def Prompt_T(context, lang):
11
 
12
+ prompt = """I want you to act as a content writer who is working with youtube video transcript. Summarise the following text in 40 words:
13
  =========
14
  """+ context +"""
15
  =========
16
  Answer:"""
17
 
18
+ if (lang=="ru"):prompt = """Я хочу, чтобы вы выступили в роли автора контента, который взят с транскрипт youtube видео, его нужно преобразовать в читаемый вид. Резюмируйте следующий текст в 40 слов:
19
  =========
20
  """+ context +"""
21
  =========
 
42
  response = completion.choices[0].message.content
43
  return response
44
 
45
+ def generate_video_html(video_url, request: gr.Request):
46
+ my_v = ""
47
+
48
+ if (video_url =="") and (my_v == ""): video_url ="https://youtube.com/watch?v=PQBYZDyDBrY"
49
+
50
+ #похоже ли video_url на номальну ссылку
51
+ if "youtube.com/watch?v=" in video_url: x=111
52
+ else: return "Неверный URL"
53
+
54
+ #Пробуем извлеч video_id пока на английском
55
+ video_id = video_url[-11:]
56
+
57
+ html_embed='<iframe width="450" height="250" src="https://www.youtube.com/embed/'+ video_id +'" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>'
58
+ return html_embed
59
+
60
+
61
+
62
  def generate(video_url, request: gr.Request):
63
  my_v = ""
64
 
65
+
66
  #Если две переменные пустые, то показываем базовую страницу с рекламой
67
  if (video_url =="") and (my_v == ""):
68
+ html_embed='<div><br> An easy way to get video descriptions If you are on YouTube itself, simply add "zxc" in front of YouTube to the videos address.</div>'
69
  summarize=""
70
+ return summarize
71
 
72
  #похоже ли video_url на номальну ссылку
73
  if "youtube.com/watch?v=" in video_url: x=111
74
+ else: return "Неверный URL"
75
+
76
  #Пробуем извлеч video_id пока на английском
77
  video_id = video_url[-11:]
78
+ print("video_id=", video_id)
79
+
80
 
81
  try:
82
  transcript_list = YouTubeTranscriptApi.list_transcripts(video_id)
83
  except Exception as e:
84
+ return "No access for transcript "
 
 
85
  lang_video="en"
86
  for transcript in transcript_list:
87
  if (transcript.is_generated == True): lang_video = transcript.language_code
88
  print ("transcript.language_code=", transcript.language_code)
89
+
90
  try:
91
  t = YouTubeTranscriptApi.get_transcript(video_id,languages=[lang_video])
92
  # do something with the transcript
93
  except Exception as e:
94
+ return "No access for transcript"
95
+
96
+
97
  finalString = ""
98
  for item in t:
99
  text = item['text']
100
+
101
  finalString += text + " "
102
 
103
 
 
106
  print ("===============================================")
107
  input_string = finalString
108
 
109
+ chunk_size = 4000
110
+ if (lang_video=="ru"): chunk_size = 2000
111
+ if (lang_video=="uk"): chunk_size = 2000
 
112
 
113
  result_list = split_string(input_string, chunk_size)
114
  final_answer_gpt=""
 
124
  context = item
125
  input_gpt = Prompt_T(context,lang_video)
126
  final_answer_gpt = final_answer_gpt +"<p>" + gpt_api (input_gpt)+"</p>"
127
+ html_content="<h6>"+"<br>"+final_answer_gpt+"</h6>"
128
+ yield html_content
129
 
130
+
 
131
  html_content="<h6>"+"<br>"+final_answer_gpt+"</h6>"
132
+ return html_content
133
 
134
  title = "YouTube Summorize (en,ua,ru)"
135
  css="""
 
137
  .gradio-container {padding-top: 100px}
138
  """
139
  with gr.Blocks(css=css, title=title) as demo:
140
+ gr.HTML("<h3>A simple way to summarize YouTube video</h3>")
141
  with gr.Row():
142
  with gr.Column():
143
  input_d = gr.Textbox(label="YouTube video URL", placeholder="https://www.youtube.com/watch?v=XXXXXXXX", value="")
 
145
  dt_2 = gr.outputs.HTML()
146
  dt_1 = gr.outputs.HTML()
147
  dt =[dt_1, dt_2]
148
+ greet_btn.click(generate_video_html, inputs=input_d, outputs=dt_2)
149
+ greet_btn.click(generate, inputs=input_d, outputs=dt_1)
150
+ demo.load(generate_video_html, inputs=input_d, outputs=dt_2)
151
+ demo.load(generate, inputs=input_d, outputs=dt_1)
152
 
153
+ demo.queue()
154
+ demo.launch(debug=False, share=True)