Spaces:
Running
Running
File size: 1,904 Bytes
846b1eb 1cd8de5 0d8e5cc 1cd8de5 f5d1d18 1cd8de5 f5d1d18 1cd8de5 0d8e5cc 1cd8de5 0d8e5cc 743e2ec 1cd8de5 0d8e5cc 1cd8de5 0d8e5cc 1cd8de5 0d8e5cc 1cd8de5 8cc08af 1cd8de5 0d8e5cc 1cd8de5 14709ab 089145b 1cd8de5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# URL To YoutubeID
from urllib.parse import urlparse
def get_yt_video_id(url):
from urllib.parse import urlparse, parse_qs
if url.startswith(('youtu', 'www')):
url = 'http://' + url
query = urlparse(url)
if 'youtube' in query.hostname:
if query.path == '/watch':
return parse_qs(query.query)['v'][0]
elif query.path.startswith(('/embed/', '/v/')):
return query.path.split('/')[2]
elif 'youtu.be' in query.hostname:
return query.path[1:]
else:
raise ValueError
# Transcription and text formatting
from youtube_transcript_api import YouTubeTranscriptApi
from youtube_transcript_api.formatters import TextFormatter
def transcribe(youtubeId):
transcription = YouTubeTranscriptApi.get_transcript(youtubeId)
return transcription
formatter = TextFormatter()
def transcriptToText(transcript):
text = formatter.format_transcript(transcript)
text = text.replace("\n", " ")
return text
# Summary using OpenAI API
import openai
def textToSummary(text,OpenAIkey):
openai.api_key = OpenAIkey
response = openai.Completion.create(
model="text-davinci-003",
prompt= "Summarize this in 200 words or less:\n\n" + text,
temperature=0.7,
max_tokens=400,
top_p=1.0,
frequency_penalty=0.0,
presence_penalty=1
)
return response["choices"][0]["text"].replace("\n", " ").strip()
def summarize(url,OpenAIkey):
videoId = get_yt_video_id(url)
transcript = transcribe(videoId)
text = transcriptToText(transcript)
summary = textToSummary(text,OpenAIkey)
return summary
# Gradio Setup
import gradio as gr
description = "Enter a link for a YouTube video you want summarized"
gr.Interface(fn=summarize,
inputs=["text", "text"],
outputs=["textbox"],
description=description
).launch()
|