import streamlit as st from imdb import IMDb import requests from PIL import Image from io import BytesIO # Function to search for movies/series def search_movies(movie_name): ia = IMDb() search_results = ia.search_movie(movie_name) return search_results # Function to fetch image from URL def fetch_image(url): response = requests.get(url) img = Image.open(BytesIO(response.content)) return img # Function to get movie details def get_movie_details(imdb_id): ia = IMDb() movie = ia.get_movie(imdb_id) details = { 'title': movie['title'], 'year': movie.get('year'), 'rating': movie.get('rating'), 'genres': movie.get('genres'), 'plot': movie.get('plot'), 'poster_url': movie.get('full-size cover url'), 'kind': movie.get('kind'), 'episodes': movie.get('episodes') if movie.get('kind') == 'tv series' else None } return details def main(): st.set_page_config(page_title="Yuyutsu MovieDrive", page_icon="🦇", layout="wide") st.title("Yuyutsu MovieDrive") # Initialize session state if 'search_results' not in st.session_state: st.session_state.search_results = None if 'selected_movie' not in st.session_state: st.session_state.selected_movie = None if 'details' not in st.session_state: st.session_state.details = None if 'imdb_id' not in st.session_state: st.session_state.imdb_id = None movie_name = st.text_input("Enter the movie or series name:") is_webseries = st.checkbox("This is a web series") if movie_name and st.button("Search"): st.session_state.search_results = search_movies(movie_name) st.session_state.selected_movie = None st.session_state.details = None st.session_state.imdb_id = None if st.session_state.search_results: st.write(f"Found {len(st.session_state.search_results)} results. Select one:") selected_movie = st.selectbox( "Select a movie or series:", options=[movie["title"] for movie in st.session_state.search_results], key="movie_select" ) if selected_movie != st.session_state.selected_movie: st.session_state.selected_movie = selected_movie movie_data = next(m for m in st.session_state.search_results if m['title'] == selected_movie) st.session_state.imdb_id = movie_data.movieID st.session_state.details = get_movie_details(st.session_state.imdb_id) if st.session_state.details and st.session_state.imdb_id: details = st.session_state.details imdb_id = st.session_state.imdb_id col1, col2 = st.columns([1, 2]) with col1: if details.get('poster_url'): poster = fetch_image(details['poster_url']) st.image(poster, caption=details['title'], use_column_width=True) with col2: st.subheader(f"{details['title']} ({details.get('year', 'N/A')})") st.write(f"**IMDb Rating:** {details.get('rating', 'Not rated')}") st.write(f"**Genres:** {', '.join(details.get('genres', ['Not specified']))}") st.write(f"**Plot:** {details.get('plot', 'No plot available')}") st.subheader("Watch Options") # VidSrc link if is_webseries or details['kind'] == 'tv series': vidsrc_url = f"https://vidsrc.xyz/embed/tv?imdb=tt{imdb_id}" st.write(f"Click the link below to watch the web series on vidsrc:") st.markdown(f"[Watch {details['title']} on vidsrc]({vidsrc_url})") else: vidsrc_url = f"https://vidsrc.xyz/embed/movie?imdb=tt{imdb_id}" st.write(f"Click the link below to watch on vidsrc:") st.markdown(f"[Watch {details['title']} on vidsrc]({vidsrc_url})") # Autoembed link if is_webseries or details['kind'] == 'tv series': st.write("For TV Series, select season and episode:") if details['episodes']: seasons = sorted(details['episodes'].keys()) season = st.selectbox("Season", options=seasons) if season: episodes = sorted(details['episodes'][season].keys()) episode = st.selectbox("Episode", options=episodes) if episode: autoembed_url = f"https://player.autoembed.cc/embed/tv/tt{imdb_id}/{season}/{episode}" st.markdown(f"[Watch {details['title']} S{season:02d}E{episode:02d} on autoembed]({autoembed_url})") else: st.write("Episode information is not available for this series.") season = st.number_input("Enter season number:", min_value=1, value=1) episode = st.number_input("Enter episode number:", min_value=1, value=1) autoembed_url = f"https://player.autoembed.cc/embed/tv/tt{imdb_id}/{season}/{episode}" st.markdown(f"[Watch {details['title']} S{season:02d}E{episode:02d} on autoembed]({autoembed_url})") elif details['kind'] == 'movie': autoembed_url = f"https://player.autoembed.cc/embed/movie/tt{imdb_id}" st.write(f"Alternative link for movies:") st.markdown(f"[Watch {details['title']} on autoembed]({autoembed_url})") else: st.write("Note: Alternative link is not available for this type of content.") st.write("Note: These links will open in a new tab. Please ensure you have appropriate permissions to view the content.") # Add a footer st.markdown("---") st.markdown( "

" "Created with ❤️ by Yuyutsu
" "जय श्री राम" "

", unsafe_allow_html=True ) if __name__ == "__main__": main()