|
|
import streamlit as st |
|
|
import os |
|
|
import langchain |
|
|
import langchain_huggingface |
|
|
import huggingface_hub |
|
|
from langchain_community.document_loaders import YoutubeLoader |
|
|
from langchain_huggingface import HuggingFaceEndpoint,ChatHuggingFace |
|
|
os.environ['HUGGINGFACEHUB_API_TOKEN'] = os.getenv("hf_token") |
|
|
os.environ['HF_TOKEN'] = os.getenv("hf_token") |
|
|
meta_llm=HuggingFaceEndpoint(repo_id="meta-llama/Llama-3.1-8B-Instruct", |
|
|
provider="nebius", |
|
|
temperature=0.5,max_new_tokens=150, |
|
|
task="conversational") |
|
|
model=ChatHuggingFace(llm=meta_llm, |
|
|
repo_id="meta-llama/Llama-3.1-8B-Instruct", |
|
|
provider="nebius", |
|
|
temperature=0.5, |
|
|
max_new_tokens=50, |
|
|
task="conversational") |
|
|
def get_youtube_transcript(url): |
|
|
loader = YoutubeLoader.from_youtube_url(url) |
|
|
docs = loader.load() |
|
|
return docs[0].page_content |
|
|
|
|
|
|
|
|
def summarize_youtube_video(url): |
|
|
transcript = get_youtube_transcript(url) |
|
|
if len(transcript) > 3000: |
|
|
transcript = transcript[:3000] |
|
|
prompt = f"Summarize this YouTube video transcript:\n\n{transcript}" |
|
|
response = model.invoke(prompt) |
|
|
return response.content |
|
|
st.set_page_config(page_title="YouTube Video Summarizer", layout="centered") |
|
|
st.title("π¬ YouTube Video Summarizer") |
|
|
st.write("Paste a YouTube video URL below to get a concise summary using Llama 3.1 π§ ") |
|
|
|
|
|
youtube_url = st.text_input("π₯ Enter YouTube URL:") |
|
|
if st.button("Summarize"): |
|
|
if youtube_url.strip() == "": |
|
|
st.warning("Please enter a valid YouTube video URL.") |
|
|
else: |
|
|
with st.spinner("Fetching and summarizing..."): |
|
|
try: |
|
|
summary = summarize_youtube_video(youtube_url) |
|
|
st.success("β
Summary Generated:") |
|
|
st.write(summary) |
|
|
except Exception as e: |
|
|
st.error(f"Something went wrong: {e}") |