MMQP / youtube.py
gskdsrikrishna's picture
Upload 11 files
c60c4b6 verified
raw
history blame
3 kB
import os
import streamlit as st
from googleapiclient.discovery import build
import speech_recognition as sr
from datetime import datetime
# Set up YouTube API
API_KEY = "AIzaSyA20DXMC3HeqHs9sOMQUQ041wEkgsoFXb4" # Replace with your YouTube Data API v3 key
youtube = build('youtube', 'v3', developerKey=API_KEY)
# Function to search YouTube videos
def search_youtube(query, max_results=5):
try:
request = youtube.search().list(
q=query,
part='id,snippet',
maxResults=max_results,
type='video'
)
response = request.execute()
videos = []
for item in response['items']:
video_id = item['id']['videoId']
title = item['snippet']['title']
thumbnail = item['snippet']['thumbnails']['default']['url']
url = f'https://www.youtube.com/watch?v={video_id}'
videos.append({'title': title, 'url': url, 'video_id': video_id, 'thumbnail': thumbnail})
return videos
except Exception as e:
st.write(f"Error fetching videos: {e}")
return []
# Function for voice recognition
def voice_search():
recognizer = sr.Recognizer()
with sr.Microphone() as source:
st.write("Listening...")
audio = recognizer.listen(source)
try:
query = recognizer.recognize_google(audio)
st.success(f"You said: {query}")
return query
except sr.UnknownValueError:
st.error("Could not understand audio")
return ""
except sr.RequestError as e:
st.error(f"Could not request results from Google Speech Recognition service; {e}")
return ""
# Streamlit UI
st.title("YouTube Video Search")
st.write("Search for YouTube videos using text or voice.")
# Button for voice search
if st.button("Search by Voice"):
search_query = voice_search()
else:
# User search input
search_query = st.text_input("Enter search query", value="Python programming")
if search_query:
st.write(f"Results for '{search_query}':")
videos = search_youtube(search_query)
# Display videos one by one
for video in videos:
st.image(video['thumbnail'])
st.write(f"**Title:** {video['title']}")
st.write(f"[Watch on YouTube]({video['url']})")
# Add a button to play the video
st.video(video['url']) # This embeds the YouTube video player
st.write("---")
# Display last seen date and time
st.sidebar.write("### Last Seen")
last_seen_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
st.sidebar.write(f"Last seen on: {last_seen_time}")
# Footer section at the bottom of the page
st.write("---")
st.write("### Footer")
st.write("This application is built for educational purposes.")
st.write("YouTube Data API is used for video searching.")
st.write("Developed by SriKrishna")