This project implements a movie recommendation system using Streamlit and cloud storage for data persistence. The system is content-based, using cosine similarity on movie tags to recommend similar movies.
- Content-Based Recommendation: Recommends movies based on similarity in movie tags.
- Dynamic Poster Display: Displays movie posters for recommended movies.
- Data Persistence: Utilizes cloud storage (Google Drive and Dropbox) for storing large data files.
- Streamlit Interface: Provides an interactive interface for users to select a movie and view recommendations.
-
Installation
- Clone the repository:
git clone https://github.com/Rithish5513U/Movie-Recommendation-System.git cd <repository_name>
- Install dependencies:
pip install -r requirements.txt
- Clone the repository:
-
Running the Application
- Start the Streamlit application:
streamlit run app.py
- Open your browser and go to
http://localhost:8501
to view the application.
- Start the Streamlit application:
-
Usage
- Select a movie from the dropdown menu.
- Click on the "Show Recommendation" button to display recommended movies and their posters.
- Movies Data: Initially downloaded from Google Drive and stored locally as
movie_list.pkl
. - Similarity Data: Downloaded from Dropbox and stored locally as
similarity.pkl
.
- The system checks for local data files (
movie_list.pkl
andsimilarity.pkl
). - If not found locally, it downloads them from cloud storage.
- Handles errors and retries during download using requests and custom exception handling.
- Data Sources:
- Movies data: Google Drive
- Similarity data: Dropbox
- Libraries:
- Streamlit
- Pandas
- Requests
- NLTK
- Scikit-learn
- Pickle
- Downloading Large Files: If encountering issues with downloading large files from cloud storage platforms like Google Drive or Dropbox, ensure the file sharing settings allow public access.
src/
app.py
: Main application file.components/
: Contains the components of the application.data_ingestion.py
: Importing the data for the moviesdata_transformation.py
: Preprocess the datamodel_trainer.py
: Train the model using sklearn
utils.py
: Utility functions.exception.py
: Custom exception handling.logger.py
: Logging configuration.
Artifacts/
movie_list.pkl
: Pickle file containing the list of movies.similarity.pkl
: Pickle file containing the similarity matrix.
requirements.txt
: List of required packages.setup.py
: Used to initiate the setup for the project.
Feel free to submit issues or pull requests for new features, bug fixes, or enhancements.
- Special thanks to the TMDb API for providing the movie data.
- Krish Naik for the original inspiration and datasets.
Enjoy using the Movie Recommendation System! If you have any questions or feedback, feel free to reach out.