Movie-Dex / app.py
yuyutsu07's picture
Upload app.py
0116133 verified
raw
history blame contribute delete
No virus
5.97 kB
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(
"<h3 style='text-align: center;'>"
"Created with ❤️ by Yuyutsu<br>"
"<span style='color: #FF9933;'>जय श्री राम</span>"
"</h3>",
unsafe_allow_html=True
)
if __name__ == "__main__":
main()