Anshini's picture
Update app.py
2eb56fd verified
import streamlit as st
from langchain_community.document_loaders import YoutubeLoader
from langchain.chat_models import ChatHuggingFace
from langchain.llms import HuggingFaceEndpoint
from langchain.schema import HumanMessage
import os
# Set page layout
st.set_page_config(page_title="YouTube Summarizer with DeepSeek", layout="centered")
st.title("πŸ“Ί YouTube Video Summarizer with DeepSeek")
hf_token = os.getenv("HF_TOKEN") # For local dev
if hf_token:
os.environ["HUGGINGFACEHUB_API_KEY"] = hf_token
# Input
url = st.text_input("Enter YouTube Video URL:")
# Connect to DeepSeek-R1 via Nebius
@st.cache_resource
def load_deepseek_model():
deep_seek_model = HuggingFaceEndpoint(
repo_id="deepseek-ai/DeepSeek-R1",
provider="nebius",
temperature=0.7,
max_new_tokens=30,
task="conversational",
huggingfacehub_api_token=hf_token # βœ… Use your HF token here
)
return ChatHuggingFace(llm=deep_seek_model)
deepseek = load_deepseek_model()
if st.button("Extract and Summarize"):
if url:
try:
# Step 1: Load transcript
loader = YoutubeLoader.from_youtube_url(url)
data = loader.load()
transcript = data[0].page_content if data else "No transcript found."
st.subheader("πŸ“– Extracted Transcript")
st.text_area("Transcript:", transcript, height=300)
# Step 2: Prepare prompt
prompt = f"Summarize the following video transcript:\n\n{transcript}"
with st.spinner("Summarizing using DeepSeek..."):
response = deepseek([HumanMessage(content=prompt)])
summary = response.content.strip()
st.subheader("🧠 Summary")
st.success(summary)
except Exception as e:
st.error(f"❌ Error: {str(e)}")
else:
st.warning("Please enter a valid YouTube URL.")